Files
jadb/test/util/romaji_transliteration_test.dart
h7x4 a86f857553
All checks were successful
Build and test / evals (push) Successful in 18m58s
util/romaji_transliteration: add functions to generate transliteration spans
2026-03-02 18:23:36 +09:00

123 lines
3.8 KiB
Dart

import 'package:jadb/util/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('Romaji -> Hiragana Spans', () {
void Function() expectSpans(String input, List<String> expected) => () {
final result = transliterateLatinToHiraganaSpan(input);
final trans = transliterateLatinToHiragana(input);
for (int i = 0; i < result.length; i++) {
expect(
trans.substring(
result[i].$2,
i == result.length - 1 ? trans.length : result[i + 1].$2,
),
expected[i],
);
}
};
test('Basic test', expectSpans('katamari', ['', '', '', '']));
test(
'Basic test with diacritics',
expectSpans('gadamari', ['', '', '', '']),
);
test('wi and we', expectSpans('wiwe', ['うぃ', 'うぇ']));
test('nb = mb', expectSpans('kanpai', ['', '', '', '']));
test('nb = mb', expectSpans('kampai', ['', '', '', '']));
test('Double n', expectSpans('konnichiha', ['', '', '', '', '']));
// TODO: fix the implementation
// test('Double consonant', expectSpans('kappa', ['か', 'っぱ']));
});
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');
});
});
group('Hiragana -> Romaji Spans', () {
void Function() expectSpans(String input, List<String> expected) => () {
final result = transliterateHiraganaToLatinSpan(input);
final trans = transliterateHiraganaToLatin(input);
for (int i = 0; i < result.length; i++) {
expect(
trans.substring(
result[i].$2,
i == result.length - 1 ? trans.length : result[i + 1].$2,
),
expected[i],
);
}
};
test('Basic test', expectSpans('かたまり', ['ka', 'ta', 'ma', 'ri']));
test(
'Basic test with diacritics',
expectSpans('がだまり', ['ga', 'da', 'ma', 'ri']),
);
test('wi and we', expectSpans('うぃうぇ', ['whi', 'whe']));
test('Double n', expectSpans('こんにちは', ['ko', 'n', 'ni', 'chi', 'ha']));
// TODO: fix the implementation
// test('Double consonant', expectSpans('かっぱ', ['ka', 'ppa']));
});
}