45 lines
1.6 KiB
Dart
45 lines
1.6 KiB
Dart
|
|
import 'dart:convert';
|
|||
|
|
|
|||
|
|
import 'package:halkyon_learn_curator/src/sources/alphabets.dart';
|
|||
|
|
import 'package:test/test.dart';
|
|||
|
|
|
|||
|
|
void main() {
|
|||
|
|
test('the Greek alphabet in its order, each letter with its capital, '
|
|||
|
|
'names, transliteration and sound', () {
|
|||
|
|
final [header, ...letters] = [
|
|||
|
|
for (final line in greekAlphabet())
|
|||
|
|
jsonDecode(line) as Map<String, Object?>,
|
|||
|
|
];
|
|||
|
|
|
|||
|
|
expect(header['source'], 'greek-alphabet');
|
|||
|
|
expect(header['kind'], 'characters');
|
|||
|
|
expect(header['language'], 'el');
|
|||
|
|
expect(letters, hasLength(24));
|
|||
|
|
expect(letters.first['headword'], 'Α α');
|
|||
|
|
final sigma = letters.singleWhere((letter) => letter['id'] == 'σ');
|
|||
|
|
expect(sigma['headword'], 'Σ σ ς');
|
|||
|
|
expect(sigma['keys'], containsAll(['ς', 'σίγμα', 'sigma', 's']));
|
|||
|
|
expect(letters[1]['entry'], {
|
|||
|
|
'romaji': 'v',
|
|||
|
|
'script': 'greek',
|
|||
|
|
'name': 'βήτα',
|
|||
|
|
'englishName': 'beta',
|
|||
|
|
'sound': 'v',
|
|||
|
|
});
|
|||
|
|
// Found by a name typed without its accent.
|
|||
|
|
expect(letters.last['keys'], contains('ωμεγα'));
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
test('the Hangul letters in the order schools teach them, found by sound '
|
|||
|
|
'and name', () {
|
|||
|
|
final letters = hangulEntries();
|
|||
|
|
|
|||
|
|
expect(letters, hasLength(40));
|
|||
|
|
expect(letters.first.headword, 'ㄱ');
|
|||
|
|
expect(letters.first.keys, containsAll(['ㄱ', '기역', 'g', 'k']));
|
|||
|
|
// ㅇ is silent opening a syllable: no key for its sound there.
|
|||
|
|
final ieung = letters.singleWhere((letter) => letter.id == 'ㅇ');
|
|||
|
|
expect(ieung.keys, ['ㅇ', '이응', 'ng']);
|
|||
|
|
expect(letters.last.headword, 'ㅢ');
|
|||
|
|
});
|
|||
|
|
}
|