Files
jadb/test/models/kanji_search_test.dart
T
2026-06-03 17:01:53 +09:00

94 lines
2.5 KiB
Dart

import 'dart:convert';
import 'package:jadb/models/kanji_search/kanji_search_radical.dart';
import 'package:jadb/models/kanji_search/kanji_search_result.dart';
import 'package:test/test.dart';
Object? _roundTripJson(Object? value) => jsonDecode(jsonEncode(value));
Map<String, dynamic> _roundTripMap(Object? json) =>
Map<String, dynamic>.from(_roundTripJson(json) as Map);
void main() {
test('KanjiSearchRadical JSON serialization roundtrip', () {
const radical = KanjiSearchRadical(
symbol: '',
names: ['ひと', 'にんべん'],
forms: [''],
meanings: ['person', 'human'],
);
final restored = KanjiSearchRadical.fromJson(
_roundTripMap(radical.toJson()),
);
expect(restored, equals(radical));
});
test('KanjiSearchResult JSON serialization roundtrip', () {
const result = KanjiSearchResult(
kanji: '',
taughtIn: 1,
jlptLevel: 'N5',
newspaperFrequencyRank: 1234,
strokeCount: 6,
meanings: ['rest', 'day off'],
kunyomi: ['やす.む', 'やす.まる'],
onyomi: ['キュウ'],
radical: KanjiSearchRadical(
symbol: '',
names: ['ひと', 'にんべん'],
forms: [''],
meanings: ['person', 'human'],
),
parts: ['', ''],
codepoints: {'ucs': '4F11', 'jis208': '1-22-57'},
nanori: ['やす'],
alternativeLanguageReadings: {
'korean': [''],
'pinyin': ['xiū'],
},
strokeMiscounts: [5, 7],
queryCodes: {
'skip': ['1-2-4'],
'fourCorner': ['2429.0'],
},
dictionaryReferences: {'nelson_c': '122', 'heisig': '457'},
);
final restored = KanjiSearchResult.fromJson(_roundTripMap(result.toJson()));
expect(restored, equals(result));
});
test(
'KanjiSearchResult JSON serialization roundtrip - nullable and empty fields',
() {
const result = KanjiSearchResult(
kanji: '',
taughtIn: null,
jlptLevel: null,
newspaperFrequencyRank: null,
strokeCount: 3,
meanings: ['iteration mark'],
kunyomi: [],
onyomi: [],
radical: null,
parts: [],
codepoints: {'ucs': '3005'},
nanori: [],
alternativeLanguageReadings: {},
strokeMiscounts: [],
queryCodes: {},
dictionaryReferences: {},
);
final restored = KanjiSearchResult.fromJson(
_roundTripMap(result.toJson()),
);
expect(restored, equals(result));
},
);
}