123 lines
3.8 KiB
Dart
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']));
|
|
});
|
|
}
|