| 0, 17, 18, // #1 | 0, 17, 18, // #1 | ||||
| 0, 20, 21, // in | 0, 20, 21, // in | ||||
| 0, 23, 24, 25, // the | 0, 23, 24, 25, // the | ||||
| 0, 27, 28, 29, 30, // race | |||||
| 0 }; | |||||
| 0, 27, 28, 29, 30 }; // race | |||||
| assert(set_text("Janet finished #1 in the race.", "en") == ENS_OK); | assert(set_text("Janet finished #1 in the race.", "en") == ENS_OK); | ||||
| charix_top = 0; | charix_top = 0; | ||||
| assert(ReadClause(translator, source, charix, &charix_top, N_TR_SOURCE, &tone2, voice_change_name) == (CLAUSE_PERIOD | CLAUSE_DOT_AFTER_LAST_WORD)); | assert(ReadClause(translator, source, charix, &charix_top, N_TR_SOURCE, &tone2, voice_change_name) == (CLAUSE_PERIOD | CLAUSE_DOT_AFTER_LAST_WORD)); | ||||
| assert(!strcmp(source, "Janet finished #1 in the race ")); | assert(!strcmp(source, "Janet finished #1 in the race ")); | ||||
| assert(charix_top == (sizeof(retix)/sizeof(retix[0])) - 2); | |||||
| assert(charix_top == (sizeof(retix)/sizeof(retix[0])) - 1); | |||||
| assert(!memcmp(charix, retix, sizeof(retix))); | assert(!memcmp(charix, retix, sizeof(retix))); | ||||
| assert(tone2 == 0); | assert(tone2 == 0); | ||||
| assert(voice_change_name[0] == 0); | assert(voice_change_name[0] == 0); | ||||
| 3, -1, -1, | 3, -1, -1, | ||||
| 4, -1, -1, -1, | 4, -1, -1, -1, | ||||
| 5, -1, -1, -1, | 5, -1, -1, -1, | ||||
| 6, | |||||
| 0 }; | |||||
| 6 }; | |||||
| assert(set_text( | assert(set_text( | ||||
| "\xE2\x86\x94" // [2194] left right arrow | "\xE2\x86\x94" // [2194] left right arrow | ||||
| "\xF0\x9F\x90\x8B" // [1F40B] whale | "\xF0\x9F\x90\x8B" // [1F40B] whale | ||||
| "\xF0\x9F\x90\xAC" // [1F42C] dolphin | "\xF0\x9F\x90\xAC" // [1F42C] dolphin | ||||
| " ")); | " ")); | ||||
| assert(charix_top == (sizeof(retix)/sizeof(retix[0])) - 2); | |||||
| assert(charix_top == (sizeof(retix)/sizeof(retix[0])) - 1); | |||||
| assert(!memcmp(charix, retix, sizeof(retix))); | |||||
| assert(tone2 == 0); | |||||
| assert(voice_change_name[0] == 0); | |||||
| } | |||||
| void | |||||
| test_uts51_text_presentation_sequence() | |||||
| { | |||||
| printf("testing Emoji ... UTS-51 ED-8a. text presentation sequence\n"); | |||||
| short retix[] = { | |||||
| 0, 2, -1, -1, | |||||
| 3, 4, -1, -1, | |||||
| 5, -1, -1, 6, -1, -1, | |||||
| 7, -1, -1, -1, 8, -1, -1, | |||||
| 9 }; | |||||
| assert(set_text( | |||||
| "#\xEF\xB8\x8E" // [0023 FE0E] number sign (text style) | |||||
| "4\xEF\xB8\x8E" // [0034 FE0E] digit four (text style) | |||||
| "\xE2\x80\xBC\xEF\xB8\x8E" // [203C FE0E] double exclamation mark (text style) | |||||
| "\xF0\x9F\x97\x92\xEF\xB8\x8E", // [1F5D2 FE0E] spiral note pad (text style) | |||||
| "en") == ENS_OK); | |||||
| charix_top = 0; | |||||
| assert(ReadClause(translator, source, charix, &charix_top, N_TR_SOURCE, &tone2, voice_change_name) == CLAUSE_EOF); | |||||
| assert(!strcmp(source, | |||||
| "#\xEF\xB8\x8E" // [0023 FE0E] number sign (text style) | |||||
| "4\xEF\xB8\x8E" // [0034 FE0E] digit four (text style) | |||||
| "\xE2\x80\xBC\xEF\xB8\x8E" // [203C FE0E] double exclamation mark (text style) | |||||
| "\xF0\x9F\x97\x92\xEF\xB8\x8E" // [1F5D2 FE0E] spiral note pad (text style) | |||||
| " ")); | |||||
| assert(charix_top == (sizeof(retix)/sizeof(retix[0])) - 1); | |||||
| assert(!memcmp(charix, retix, sizeof(retix))); | assert(!memcmp(charix, retix, sizeof(retix))); | ||||
| assert(tone2 == 0); | assert(tone2 == 0); | ||||
| assert(voice_change_name[0] == 0); | assert(voice_change_name[0] == 0); | ||||
| test_fullwidth(); | test_fullwidth(); | ||||
| test_uts51_emoji_character(); | test_uts51_emoji_character(); | ||||
| test_uts51_text_presentation_sequence(); | |||||
| assert(espeak_Terminate() == EE_OK); | assert(espeak_Terminate() == EE_OK); | ||||