Files
strans/tests/vi_test.c
Hojun-Cho e54783dc92 test: Telex goes in the language table like every other map
The unit suite built a Lang of its own for Telex and loaded telex.map
into it, so the tests that drive the real table had to swap the map in
and out around themselves.  testmapinit loads it where it belongs.
2026-08-17 12:20:39 +09:00

79 lines
1.6 KiB
C

#include "dat.h"
#include "fn.h"
#include "test.h"
static void
typevi(struct ct *t, char *keys, char *want)
{
Str out, raw;
raw = mkstr(keys);
transstr(getlang(LangVI), nil, &raw, &out);
checkstr(t, keys, want, &out);
}
void
vietnamese_transitions(struct ct *t)
{
static const struct { char *keys, *want; } cases[] = {
{ "as", "á" },
{ "As", "Á" },
{ "ans", "án" },
{ "Ans", "Án" },
{ "aws", "" },
{ "asw", "" },
{ "aww", "aw" },
{ "ddd", "dd" },
{ "ddas", "đá" },
{ "dds", "đs" },
{ "quas", "quá" },
{ "quaf", "quà" },
{ "quar", "quả" },
{ "quax", "quã" },
{ "quaj", "quạ" },
{ "Quas", "Quá" },
{ "gias", "giá" },
{ "Gias", "Giá" },
{ "gif", "" },
{ "cuar", "của" },
{ "vowis", "với" },
{ "cuwar", "cửa" },
{ "nguyeenx", "nguyễn" },
{ "dduwowngf", "đường" },
{ "\\s", "s" },
{ "a\\s", "as" },
};
int i;
for(i = 0; i < nelem(cases); i++)
typevi(t, cases[i].keys, cases[i].want);
}
void
vietnamese_backspace(struct ct *t)
{
static const struct {
char *pre, *raw, *rawafter, *after;
} cases[] = {
{ "as", "as", "a", "a" },
{ "quá", "quas", "qua", "qua" },
{ "à", "asf", "as", "á" },
{ "a", "asz", "as", "á" },
{ "quà", "quasf", "quas", "quá" },
};
Im state;
Str shown;
int i;
for(i = 0; i < nelem(cases); i++){
memset(&state, 0, sizeof state);
state.l = getlang(LangVI);
state.pre = mkstr(cases[i].pre);
state.raw = mkstr(cases[i].raw);
backvi(&state);
checkstr(t, cases[i].raw, cases[i].rawafter, &state.raw);
impre(&state, &shown);
checkstr(t, cases[i].raw, cases[i].after, &shown);
}
}