Browse Source

Test ReadClause on single character emoji sequences.

master
Reece H. Dunn 8 years ago
parent
commit
27a08c5fea
1 changed files with 70 additions and 0 deletions
  1. 70
    0
      tests/readclause.c

+ 70
- 0
tests/readclause.c View File

#include "synthesize.h" #include "synthesize.h"
#include "translate.h" #include "translate.h"


// Arguments to ReadClause. Declared here to avoid duplicating them across the
// different test functions.
static char source[N_TR_SOURCE+40]; // extra space for embedded command & voice change info at end
static short charix[N_TR_SOURCE+4];
static int charix_top = 0;
static int tone2;
static char voice_change_name[40];
static int terminator;

static espeak_ng_STATUS
set_text(const char *text, const char *voicename)
{
espeak_ng_STATUS status = espeak_ng_SetVoiceByName(voicename);
if (status != ENS_OK)
return status;

if (p_decoder == NULL)
p_decoder = create_text_decoder();

return text_decoder_decode_string(p_decoder, text, -1, ESPEAKNG_ENCODING_UTF_8);
}

void void
test_latin() test_latin()
{ {
assert(clause_type_from_codepoint(0xFF1F) == (CLAUSE_QUESTION | CLAUSE_OPTIONAL_SPACE_AFTER)); assert(clause_type_from_codepoint(0xFF1F) == (CLAUSE_QUESTION | CLAUSE_OPTIONAL_SPACE_AFTER));
} }


void
test_emoji_single_character_sequences()
{
short retix[] = {
0, -1, -1,
2, -1, -1,
3, -1, -1,
4, -1, -1, -1,
5, -1, -1, -1,
6,
0 };

assert(set_text(
"\xE2\x86\x94" // [2194] left right arrow
"\xE2\x86\x95" // [2195] up down arrow
"\xE2\x9B\x94" // [26D5] no entry
"\xF0\x9F\x90\x8B" // [1F40B] whale
"\xF0\x9F\x90\xAC", // [1F42C] dolphin
"en") == ENS_OK);

assert(ReadClause(translator, source, charix, &charix_top, N_TR_SOURCE, &tone2, voice_change_name) == CLAUSE_EOF);
assert(!strcmp(source,
"\xE2\x86\x94" // [2194] left right arrow
"\xE2\x86\x95" // [2195] up down arrow
"\xE2\x9B\x94" // [26D5] no entry
"\xF0\x9F\x90\x8B" // [1F40B] whale
"\xF0\x9F\x90\xAC" // [1F42C] dolphin
" "));
assert(charix_top == (sizeof(retix)/sizeof(retix[0])) - 2);
assert(!memcmp(charix, retix, sizeof(retix)));
assert(tone2 == 0);
assert(voice_change_name[0] == 0);
}

void
test_emoji()
{
printf("testing Emoji\n");

test_emoji_single_character_sequences();
}

int int
main(int argc, char **argv) main(int argc, char **argv)
{ {
assert(espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS, 0, NULL, espeakINITIALIZE_DONT_EXIT) == 22050);

test_latin(); test_latin();
test_greek(); test_greek();
test_armenian(); test_armenian();
test_ideographic(); test_ideographic();
test_fullwidth(); test_fullwidth();


test_emoji();

assert(espeak_Terminate() == EE_OK);

return EXIT_SUCCESS; return EXIT_SUCCESS;
} }

Loading…
Cancel
Save