add focused unit and map checks
This commit is contained in:
60
tests/ko_test.c
Normal file
60
tests/ko_test.c
Normal file
@@ -0,0 +1,60 @@
|
||||
#include "test.h"
|
||||
|
||||
void
|
||||
korean_sequences(struct ct *t)
|
||||
{
|
||||
static const struct { char *keys, *want; } cases[] = {
|
||||
{ "r", "ㄱ" },
|
||||
{ "rk", "가" },
|
||||
{ "rkr", "각" },
|
||||
{ "rkrk", "가가" },
|
||||
{ "rkrtk", "각사" },
|
||||
{ "rhk", "과" },
|
||||
{ "rr", "ㄱㄱ" },
|
||||
{ "Rk", "까" },
|
||||
{ "rk1", "가1" },
|
||||
};
|
||||
Emit e;
|
||||
Im state;
|
||||
Str out;
|
||||
Rune key;
|
||||
char *p;
|
||||
int i;
|
||||
|
||||
for(i = 0; i < nelem(cases); i++){
|
||||
memset(&state, 0, sizeof state);
|
||||
state.l = getlang(LangKO);
|
||||
sclear(&out);
|
||||
for(p = cases[i].keys; *p != '\0'; p++){
|
||||
key = (uchar)*p;
|
||||
e = transko(&state, key);
|
||||
sappend(&out, &e.s);
|
||||
state.pre = e.next;
|
||||
if(!e.eat)
|
||||
sputr(&out, key);
|
||||
}
|
||||
sappend(&out, &state.pre);
|
||||
checkstr(t, cases[i].keys, cases[i].want, &out);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
korean_backspace(struct ct *t)
|
||||
{
|
||||
static const struct { char *before, *after; } cases[] = {
|
||||
{ "ㄱ", "" },
|
||||
{ "가", "ㄱ" },
|
||||
{ "과", "고" },
|
||||
{ "각", "가" },
|
||||
{ "갃", "각" },
|
||||
};
|
||||
Im state;
|
||||
int i;
|
||||
|
||||
memset(&state, 0, sizeof state);
|
||||
for(i = 0; i < nelem(cases); i++){
|
||||
state.pre = mkstr(cases[i].before);
|
||||
backko(&state);
|
||||
checkstr(t, cases[i].before, cases[i].after, &state.pre);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user