halkyon/halkyon_learn_curator/test/kana_test.dart

37 lines
1.4 KiB
Dart
Raw Normal View History

import 'package:halkyon_learn_curator/src/japanese/kana.dart';
import 'package:test/test.dart';
void main() {
test('katakana becomes hiragana; the rest stays', () {
expect(toHiragana('テレビ'), 'てれび');
expect(toHiragana('カード'), 'かーど');
expect(toHiragana('食べる'), '食べる');
});
test('kana become Hepburn romaji, as people type them', () {
expect(toRomaji('たべる'), 'taberu');
expect(toRomaji('とうきょう'), 'toukyou');
expect(toRomaji('しゃしん'), 'shashin');
expect(toRomaji('きって'), 'kitte');
expect(toRomaji('まっちゃ'), 'matcha');
expect(toRomaji('カード'), 'kaado');
expect(toRomaji('パーティー'), 'paatii');
expect(toRomaji('ふぁいる'), 'fairu');
expect(toRomaji('ぢ'), 'ji');
2026-10-09 12:15:16 +02:00
expect(toRomaji('デュエット'), 'dyuetto');
expect(toRomaji('フュージョン'), 'fyuujon');
});
test('long vowels written once, where that differs', () {
expect(withShortVowels('toukyou'), 'tokyo');
2026-10-09 12:15:16 +02:00
expect(withShortVowels('kaado'), 'kado');
expect(withShortVowels('oniisan'), 'onisan');
expect(withShortVowels('taberu'), isNull);
});
2026-10-09 12:15:16 +02:00
test('full-width letters and digits become the ones people type', () {
expect(halfWidth('Tシャツ'), 'Tシャツ');
expect(halfWidth('3D CD'), '3D CD');
expect(halfWidth('東京'), '東京');
});
}