Add tests

This commit is contained in:
2025-04-28 21:58:06 +02:00
parent 946adb90cc
commit 3f71775f27
7 changed files with 498 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
import 'package:collection/collection.dart';
import 'package:jadb/jouyou_kanji.dart';
import 'package:test/test.dart';
void main() {
test("Assert 2136 kanji in jouyou set", () {
expect(JOUYOU_KANJI.values.flattenedToSet.length, 2136);
});
}

View File

@@ -0,0 +1,66 @@
import 'package:jadb/romaji_transliteration.dart';
import 'package:test/test.dart';
void main() {
group("Romaji -> Hiragana", () {
test("Basic test", () {
final result = transliterateLatinToHiragana("katamari");
expect(result, "かたまり");
});
test("Basic test with diacritics", () {
final result = transliterateLatinToHiragana("gadamari");
expect(result, "がだまり");
});
test("wi and we", () {
final result = transliterateLatinToHiragana("wiwe");
expect(result, "うぃうぇ");
});
test("nb = mb", () {
final result = transliterateLatinToHiragana("kanpai");
expect(result, "かんぱい");
final result2 = transliterateLatinToHiragana("kampai");
expect(result2, "かんぱい");
});
test("Double n", () {
final result = transliterateLatinToHiragana("konnichiha");
expect(result, "こんにちは");
});
test("Double consonant", () {
final result = transliterateLatinToHiragana("kappa");
expect(result, "かっぱ");
});
});
group("Hiragana -> Romaji", () {
test("Basic test", () {
final result = transliterateHiraganaToLatin("かたまり");
expect(result, "katamari");
});
test("Basic test with diacritics", () {
final result = transliterateHiraganaToLatin("がだまり");
expect(result, "gadamari");
});
test("whi and whe", () {
final result = transliterateHiraganaToLatin("うぃうぇ");
expect(result, "whiwhe");
});
test("Double n", () {
final result = transliterateHiraganaToLatin("こんにちは");
expect(result, "konnichiha");
});
test("Double consonant", () {
final result = transliterateHiraganaToLatin("かっぱ");
expect(result, "kappa");
});
});
}

View File

@@ -0,0 +1,26 @@
import 'package:jadb/jouyou_kanji.dart';
import 'package:test/test.dart';
import 'setup_database_connection.dart';
void main() {
test("Search a kanji", () async {
final connection = await setup_database_connection();
final result = await connection.searchKanji('');
expect(result, isNotNull);
});
group("Search all jouyou kanji", () {
JOUYOU_KANJI.forEach((grade, characters) {
test("Search all kanji in grade $grade", () async {
final connection = await setup_database_connection();
for (final character in characters) {
final result = await connection.searchKanji(character);
expect(result, isNotNull);
}
}, timeout: Timeout.factor(10));
});
});
}

View File

@@ -0,0 +1,34 @@
import 'dart:ffi';
import 'dart:io';
import 'package:jadb/search.dart';
import 'package:sqflite_common_ffi/sqflite_ffi.dart';
import 'package:sqlite3/open.dart';
Future<JaDBConnection> setup_database_connection() async {
final lib_sqlite_path = Platform.environment['LIBSQLITE_PATH'];
final jadb_path = Platform.environment['JADB_PATH'];
if (lib_sqlite_path == null) {
throw Exception("LIBSQLITE_PATH is not set");
}
if (jadb_path == null) {
throw Exception("JADB_PATH is not set");
}
final db_connection = createDatabaseFactoryFfi(ffiInit: () {
open.overrideForAll(
() => DynamicLibrary.open(lib_sqlite_path),
);
}).openDatabase(
jadb_path,
options: OpenDatabaseOptions(
onOpen: (db) {
db.execute("PRAGMA foreign_keys = ON");
},
),
);
return JaDBConnection(await db_connection);
}

View File

@@ -0,0 +1,26 @@
import 'package:test/test.dart';
import 'setup_database_connection.dart';
void main() {
test("Search a word", () async {
final connection = await setup_database_connection();
final result = await connection.searchWord("kana");
expect(result, isNotNull);
});
test(
"Serialize all words",
() async {
final connection = await setup_database_connection();
// Test serializing all words
for (final letter in "aiueoksthnmyrw".split("")) {
await connection.searchWord(letter);
}
},
timeout: Timeout.factor(100),
skip: "Very slow test",
);
}