diff --git a/ftk/util/ftktest.cpp b/ftk/util/ftktest.cpp index ddada61..c8339c6 100644 --- a/ftk/util/ftktest.cpp +++ b/ftk/util/ftktest.cpp @@ -77,6 +77,10 @@ FSTATIC RCODE ftkTestText( void); FSTATIC RCODE ftkTestBTree( void); +#ifdef FTK_TEST_NET + FSTATIC RCODE ftkTestNet( void); +#endif + FSTATIC FLMBOOL flmCh6Brkcar( FLMUINT16 ui16WpChar, FLMUINT16 * pui16BaseChar, @@ -3310,10 +3314,10 @@ Desc: The Arabic characters are collated OVER the Russian characters ignored while sorting the first pass - when collation == COLS0. There are 4 possible states for all/most arabic characters: - ÚÙ - occurs as the only character in a word - ÄÙ - appears at the first of the word - ÄÄ - appears at the middle of a word - ÚÄ - appears at the end of the word + �� - occurs as the only character in a word + �� - appears at the first of the word + �� - appears at the middle of a word + �� - appears at the end of the word Usually only the simple version of the letter is stored. Therefore we should not have to worry about sub-collation @@ -3337,144 +3341,144 @@ FLMBYTE flmAr160Tbl[ AR1TBLLEN + 2] = COLS9+40, // << alphabetic - end of list) COLS2, // ( COLS2+1, // ) - COLS8+1, // ÚÙ One - COLS8+2, // ÚÙ Two - COLS8+3, // ÚÙ Three - COLS8+4, // ÚÙ Four - COLS8+5, // ÚÙ Five - COLS8+6, // ÚÙ Six - COLS8+7, // ÚÙ Seven - COLS8+8, // ÚÙ Eight - COLS8+9, // ÚÙ Nine - COLS8+0, // ÚÙ Zero - COLS8+2, // ÚÙ Two (Handwritten) - COLS10a+1, // ÚÙ alif - COLS10a+1, // ÚÄ alif - COLS10a+2, // ÚÙ ba - COLS10a+2, // ÄÙ ba - COLS10a+2, // ÄÄ ba - COLS10a+2, // ÚÄ ba - COLS10a+6, // ÚÙ ta - COLS10a+6, // ÄÙ ta - COLS10a+6, // ÄÄ ta - COLS10a+6, // ÚÄ ta - COLS10a+8, // ÚÙ tha - COLS10a+8, // ÄÙ tha - COLS10a+8, // ÄÄ tha - COLS10a+8, // ÚÄ tha - COLS10a+12, // ÚÙ jiim - COLS10a+12, // ÄÙ jiim - COLS10a+12, // ÄÄ jiim - COLS10a+12, // ÚÄ jiim - COLS10a+16, // ÚÙ Ha - COLS10a+16, // ÄÙ Ha - COLS10a+16, // ÄÄ Ha - COLS10a+16, // ÚÄ Ha - COLS10a+17, // ÚÙ kha - COLS10a+17, // ÄÙ kha - COLS10a+17, // ÄÄ kha - COLS10a+17, // ÚÄ kha - COLS10a+20, // ÚÙ dal - COLS10a+20, // ÚÄ dal - COLS10a+22, // ÚÙ dhal - COLS10a+22, // ÚÄ dhal - COLS10a+27, // ÚÙ ra - COLS10a+27, // ÚÄ ra - COLS10a+29, // ÚÙ ziin - COLS10a+29, // ÚÄ ziin - COLS10a+31, // ÚÙ siin - COLS10a+31, // ÄÙ siin - COLS10a+31, // ÄÄ siin - COLS10a+31, // ÚÄ siin - COLS10a+32, // ÚÙ shiin - COLS10a+32, // ÄÙ shiin - COLS10a+32, // ÄÄ shiin - COLS10a+32, // ÚÄ shiin - COLS10a+34, // ÚÙ Sad - COLS10a+34, // ÄÙ Sad - COLS10a+34, // ÄÄ Sad - COLS10a+34, // ÚÄ Sad - COLS10a+35, // ÚÙ Dad - COLS10a+35, // ÄÙ Dad - COLS10a+35, // ÄÄ Dad - COLS10a+35, // ÚÄ Dad - COLS10a+36, // ÚÙ Ta - COLS10a+36, // ÄÙ Ta - COLS10a+36, // ÄÄ Ta - COLS10a+36, // ÚÄ Ta - COLS10a+37, // ÚÙ Za - COLS10a+37, // ÄÙ Za - COLS10a+37, // ÄÄ Za - COLS10a+37, // ÚÄ Za - COLS10a+38, // ÚÙ 'ain - COLS10a+38, // ÄÙ 'ain - COLS10a+38, // ÄÄ 'ain - COLS10a+38, // ÚÄ 'ain - COLS10a+39, // ÚÙ ghain - COLS10a+39, // ÄÙ ghain - COLS10a+39, // ÄÄ ghain - COLS10a+39, // ÚÄ ghain - COLS10a+40, // ÚÙ fa - COLS10a+40, // ÄÙ fa - COLS10a+40, // ÄÄ fa - COLS10a+40, // ÚÄ fa - COLS10a+42, // ÚÙ Qaf - COLS10a+42, // ÄÙ Qaf - COLS10a+42, // ÄÄ Qaf - COLS10a+42, // ÚÄ Qaf - COLS10a+43, // ÚÙ kaf - COLS10a+43, // ÄÙ kaf - COLS10a+43, // ÄÄ kaf - COLS10a+43, // ÚÄ kaf - COLS10a+46, // ÚÙ lam - COLS10a+46, // ÄÙ lam - COLS10a+46, // ÄÄ lam - COLS10a+46, // ÚÄ lam - COLS10a+47, // ÚÙ miim - COLS10a+47, // ÄÙ miim - COLS10a+47, // ÄÄ miim - COLS10a+47, // ÚÄ miim - COLS10a+48, // ÚÙ nuun - COLS10a+48, // ÄÙ nuun - COLS10a+48, // ÄÄ nuun - COLS10a+48, // ÚÄ nuun - COLS10a+49, // ÚÙ ha - COLS10a+49, // ÄÙ ha - COLS10a+49, // ÄÄ ha - COLS10a+49, // ÚÄ ha - COLS10a+6, // ÚÙ ta marbuuTah - COLS10a+6, // ÚÄ ta marbuuTah - COLS10a+50, // ÚÙ waw - COLS10a+50, // ÚÄ waw - COLS10a+53, // ÚÙ ya - COLS10a+53, // ÄÙ ya - COLS10a+53, // ÄÄ ya - COLS10a+53, // ÚÄ ya - COLS10a+52, // ÚÙ alif maqSuurah - COLS10a+52, // ÄÙ ya maqSuurah? - COLS10a+52, // ÄÄ ya maqSuurah? - COLS10a+52, // ÚÄ alif maqSuurah - COLS10a+0, // ÚÙ hamzah accent - never appears alone + COLS8+1, // �� One + COLS8+2, // �� Two + COLS8+3, // �� Three + COLS8+4, // �� Four + COLS8+5, // �� Five + COLS8+6, // �� Six + COLS8+7, // �� Seven + COLS8+8, // �� Eight + COLS8+9, // �� Nine + COLS8+0, // �� Zero + COLS8+2, // �� Two (Handwritten) + COLS10a+1, // �� alif + COLS10a+1, // �� alif + COLS10a+2, // �� ba + COLS10a+2, // �� ba + COLS10a+2, // �� ba + COLS10a+2, // �� ba + COLS10a+6, // �� ta + COLS10a+6, // �� ta + COLS10a+6, // �� ta + COLS10a+6, // �� ta + COLS10a+8, // �� tha + COLS10a+8, // �� tha + COLS10a+8, // �� tha + COLS10a+8, // �� tha + COLS10a+12, // �� jiim + COLS10a+12, // �� jiim + COLS10a+12, // �� jiim + COLS10a+12, // �� jiim + COLS10a+16, // �� Ha + COLS10a+16, // �� Ha + COLS10a+16, // �� Ha + COLS10a+16, // �� Ha + COLS10a+17, // �� kha + COLS10a+17, // �� kha + COLS10a+17, // �� kha + COLS10a+17, // �� kha + COLS10a+20, // �� dal + COLS10a+20, // �� dal + COLS10a+22, // �� dhal + COLS10a+22, // �� dhal + COLS10a+27, // �� ra + COLS10a+27, // �� ra + COLS10a+29, // �� ziin + COLS10a+29, // �� ziin + COLS10a+31, // �� siin + COLS10a+31, // �� siin + COLS10a+31, // �� siin + COLS10a+31, // �� siin + COLS10a+32, // �� shiin + COLS10a+32, // �� shiin + COLS10a+32, // �� shiin + COLS10a+32, // �� shiin + COLS10a+34, // �� Sad + COLS10a+34, // �� Sad + COLS10a+34, // �� Sad + COLS10a+34, // �� Sad + COLS10a+35, // �� Dad + COLS10a+35, // �� Dad + COLS10a+35, // �� Dad + COLS10a+35, // �� Dad + COLS10a+36, // �� Ta + COLS10a+36, // �� Ta + COLS10a+36, // �� Ta + COLS10a+36, // �� Ta + COLS10a+37, // �� Za + COLS10a+37, // �� Za + COLS10a+37, // �� Za + COLS10a+37, // �� Za + COLS10a+38, // �� 'ain + COLS10a+38, // �� 'ain + COLS10a+38, // �� 'ain + COLS10a+38, // �� 'ain + COLS10a+39, // �� ghain + COLS10a+39, // �� ghain + COLS10a+39, // �� ghain + COLS10a+39, // �� ghain + COLS10a+40, // �� fa + COLS10a+40, // �� fa + COLS10a+40, // �� fa + COLS10a+40, // �� fa + COLS10a+42, // �� Qaf + COLS10a+42, // �� Qaf + COLS10a+42, // �� Qaf + COLS10a+42, // �� Qaf + COLS10a+43, // �� kaf + COLS10a+43, // �� kaf + COLS10a+43, // �� kaf + COLS10a+43, // �� kaf + COLS10a+46, // �� lam + COLS10a+46, // �� lam + COLS10a+46, // �� lam + COLS10a+46, // �� lam + COLS10a+47, // �� miim + COLS10a+47, // �� miim + COLS10a+47, // �� miim + COLS10a+47, // �� miim + COLS10a+48, // �� nuun + COLS10a+48, // �� nuun + COLS10a+48, // �� nuun + COLS10a+48, // �� nuun + COLS10a+49, // �� ha + COLS10a+49, // �� ha + COLS10a+49, // �� ha + COLS10a+49, // �� ha + COLS10a+6, // �� ta marbuuTah + COLS10a+6, // �� ta marbuuTah + COLS10a+50, // �� waw + COLS10a+50, // �� waw + COLS10a+53, // �� ya + COLS10a+53, // �� ya + COLS10a+53, // �� ya + COLS10a+53, // �� ya + COLS10a+52, // �� alif maqSuurah + COLS10a+52, // �� ya maqSuurah? + COLS10a+52, // �� ya maqSuurah? + COLS10a+52, // �� alif maqSuurah + COLS10a+0, // �� hamzah accent - never appears alone // Store the sub-collation as the actual // character value from this point on - COLS10a+1, // ÚÙ alif hamzah - COLS10a+1, // ÚÄ alif hamzah - COLS10a+1, // ÚÙ hamzah-under-alif - COLS10a+1, // ÚÄ hamzah-under-alif - COLS10a+1, // ÚÙ waw hamzah - COLS10a+1, // ÚÄ waw hamzah - COLS10a+1, // ÚÙ ya hamzah - COLS10a+1, // ÄÙ ya hamzah - COLS10a+1, // ÄÄ ya hamzah - COLS10a+1, // ÚÄ ya hamzah - COLS10a+1, // ÚÙ alif fatHataan - COLS10a+1, // ÚÄ alif fatHataan - COLS10a+1, // ÚÙ alif maddah - COLS10a+1, // ÚÄ alif maddah - COLS10a+1, // ÚÙ alif waSlah - COLS10a+1, // ÚÄ alif waSlah (final) + COLS10a+1, // �� alif hamzah + COLS10a+1, // �� alif hamzah + COLS10a+1, // �� hamzah-under-alif + COLS10a+1, // �� hamzah-under-alif + COLS10a+1, // �� waw hamzah + COLS10a+1, // �� waw hamzah + COLS10a+1, // �� ya hamzah + COLS10a+1, // �� ya hamzah + COLS10a+1, // �� ya hamzah + COLS10a+1, // �� ya hamzah + COLS10a+1, // �� alif fatHataan + COLS10a+1, // �� alif fatHataan + COLS10a+1, // �� alif maddah + COLS10a+1, // �� alif maddah + COLS10a+1, // �� alif waSlah + COLS10a+1, // �� alif waSlah (final) // LIGATURES // Should NEVER be stored so will not worry @@ -3486,21 +3490,21 @@ FLMBYTE flmAr160Tbl[ AR1TBLLEN + 2] = // The best implementation is to // break up ligatures into its base pieces. - COLS10a+46, // ÚÙ lamalif - COLS10a+46, // ÚÄ lamalif - COLS10a+46, // ÚÙ lamalif hamzah - COLS10a+46, // ÚÄ lamalif hamzah - COLS10a+46, // ÚÙ hamzah-under-lamalif - COLS10a+46, // ÚÄ hamzah-under-lamalif - COLS10a+46, // ÚÙ lamalif fatHataan - COLS10a+46, // ÚÄ lamalif fatHataan - COLS10a+46, // ÚÙ lamalif maddah - COLS10a+46, // ÚÄ lamalif maddah - COLS10a+46, // ÚÙ lamalif waSlah - COLS10a+46, // ÚÄ lamalif waSlah - COLS10a+46, // ÚÙ Allah - khaDalAlif - COLS0_ARABIC, // ÄÄ taTwiil - COLS0_ARABIC // ÄÄ taTwiil + COLS10a+46, // �� lamalif + COLS10a+46, // �� lamalif + COLS10a+46, // �� lamalif hamzah + COLS10a+46, // �� lamalif hamzah + COLS10a+46, // �� hamzah-under-lamalif + COLS10a+46, // �� hamzah-under-lamalif + COLS10a+46, // �� lamalif fatHataan + COLS10a+46, // �� lamalif fatHataan + COLS10a+46, // �� lamalif maddah + COLS10a+46, // �� lamalif maddah + COLS10a+46, // �� lamalif waSlah + COLS10a+46, // �� lamalif waSlah + COLS10a+46, // �� Allah - khaDalAlif + COLS0_ARABIC, // �� taTwiil + COLS0_ARABIC // �� taTwiil }; /**************************************************************************** Desc: @@ -3676,7 +3680,7 @@ FLMBYTE flmAr260Tbl[ AR2TBLLEN + 2] = COLS10a+51, COLS10a+51, COLS10a+51, - COLS10a+52, // Kurdish ˆ - ya /w small v (6ce) + COLS10a+52, // Kurdish � - ya /w small v (6ce) COLS10a+52, COLS10a+52, COLS10a+52, @@ -3778,7 +3782,7 @@ FLMUINT16 flmIndexj[] = 0x006c, // l 0x0101, // center dot alone 0x006c, // l - 0x0117, // á (for German) + 0x0117, // � (for German) 0x018b, // ij digraph 0x0000, // was 'a' - will no longer map 'aa' to a-ring 0x0000, // was 'a' @@ -4320,13 +4324,22 @@ int main( void) pDirHdl->Release(); pDirHdl = NULL; +#ifdef FTK_TEST_NET + // Networking tests + + if( RC_BAD( rc = ftkTestNet())) + { + goto Exit; + } +#endif + // B-Tree tests if( RC_BAD( rc = ftkTestBTree())) { goto Exit; } - + // Run a multi-threaded test to verify the proper operation of // the atomic operations @@ -6279,3 +6292,81 @@ Exit: return( rc); } + +/**************************************************************************** +Desc: +****************************************************************************/ +#ifdef FTK_TEST_NET +RCODE ftkTestNet( void) +{ + RCODE rc = NE_FLM_OK; + IF_IOStream * pStream = NULL; + IF_HTTPHeader * pHttpHeader = NULL; + + f_printf( "Running network tests ... "); + + if( RC_BAD( rc = FlmOpenSSLIOStream( + "www.amazon.com", 443, 0, &pStream))) + { + if( rc != NE_FLM_NOT_IMPLEMENTED) + { + goto Exit; + } + + if( RC_BAD( rc = FlmOpenTCPIOStream( + "www.novell.com", 80, 0, &pStream))) + { + goto Exit; + } + } + + if( RC_BAD( rc = FlmAllocHTTPHeader( &pHttpHeader))) + { + goto Exit; + } + + if( RC_BAD( rc = pHttpHeader->setRequestURL( "/"))) + { + goto Exit; + } + + if( RC_BAD( rc = pHttpHeader->setHeaderValue( + FLM_HTTP_USER_AGENT, "FTKTEST"))) + { + goto Exit; + } + + if( RC_BAD( rc = pHttpHeader->setHeaderValue( + FLM_HTTP_CONTENT_LENGTH, (FLMUINT)0))) + { + goto Exit; + } + + if( RC_BAD( rc = pHttpHeader->writeRequestHeader( pStream))) + { + goto Exit; + } + + if( RC_BAD( rc = pHttpHeader->readResponseHeader( pStream))) + { + goto Exit; + } + +Exit: + + f_printf( "Done (0x%08X).\n", (unsigned)rc); + + if( pStream) + { + pStream->Release(); + } + + if( pHttpHeader) + { + pHttpHeader->Release(); + } + + return( rc); +} +#endif +