From e02ab7d0c20b3af0e72699eac2f9ad537d6d1b42 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Mon, 22 May 2017 07:05:23 +0100 Subject: [PATCH] Testing UTS 51 (5.0-12) ED-8a. text presentation sequence --- tests/readclause.c | 44 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/tests/readclause.c b/tests/readclause.c index 33d00737..9f919b6b 100644 --- a/tests/readclause.c +++ b/tests/readclause.c @@ -90,15 +90,14 @@ test_latin_sentence() 0, 17, 18, // #1 0, 20, 21, // in 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); 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(!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(tone2 == 0); assert(voice_change_name[0] == 0); @@ -221,8 +220,7 @@ test_uts51_emoji_character() 3, -1, -1, 4, -1, -1, -1, 5, -1, -1, -1, - 6, - 0 }; + 6 }; assert(set_text( "\xE2\x86\x94" // [2194] left right arrow @@ -241,7 +239,40 @@ test_uts51_emoji_character() "\xF0\x9F\x90\x8B" // [1F40B] whale "\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(tone2 == 0); assert(voice_change_name[0] == 0); @@ -267,6 +298,7 @@ main(int argc, char **argv) test_fullwidth(); test_uts51_emoji_character(); + test_uts51_text_presentation_sequence(); assert(espeak_Terminate() == EE_OK);