libkkc-data/tests/context.vala
2023-06-29 17:47:35 +02:00

85 lines
2.4 KiB
Vala

class ContextTests : Kkc.TestCase {
struct Conversion {
string sequence;
string result;
}
const Conversion eras[] = {
{ "s h o u w a", "昭和" },
{ "h e i s e i", "平成" },
{ "r e i w a", "令和" },
};
Kkc.Context context;
public ContextTests() {
base("Context");
add_test("era candidate", this.test_eras_candidate);
add_test("era commit", this.test_eras_commit);
}
void test_eras_candidate() {
foreach (var era in eras)
test_era_candidate(era);
}
void test_eras_commit() {
foreach (var era in eras)
test_era_commit(era);
}
private void test_era_candidate(Conversion era) {
context.process_key_events(era.sequence + " SPC SPC");
assert(context.candidates.get(0).output == era.result);
context.process_key_events("SPC");
assert (context.candidates.get(0).output == era.result);
context.reset ();
context.clear_output ();
}
private void test_era_commit(Conversion era) {
context.process_key_events(era.sequence + " SPC RET");
assert(context.has_output());
assert(context.peek_output() == era.result);
assert(context.has_output());
context.reset();
context.clear_output();
}
public override void set_up() {
try {
// Loading /usr/lib64/libkkc/models/sorted3/metadata.json
var model = Kkc.LanguageModel.load("sorted3");
context = new Kkc.Context(model);
} catch(Kkc.LanguageModelError e) {
stderr.printf("%s\n", e.message);
}
#if 0
try {
var srcdir = Environment.get_variable("srcdir");
assert(srcdir != null);
var dictionary = new Kkc.SystemSegmentDictionary(
Path.build_filename(srcdir, "system-segment-dictionary"));
context.dictionaries.add(dictionary);
} catch(Error e) {
stderr.printf("%s\n", e.message);
}
#endif
context.dictionaries.add(new Kkc.EmptySegmentDictionary());
}
public override void tear_down() {
context = null;
}
}
int main(string[] args) {
Intl.setlocale(LocaleCategory.ALL, "");
Test.init(ref args);
Kkc.init();
TestSuite root = TestSuite.get_root();
root.add_suite(new ContextTests().get_suite());
Test.run();
return 0;
}