diff --git a/lib/const_data/radicals.dart b/lib/const_data/radicals.dart index bef56e2..21937cc 100644 --- a/lib/const_data/radicals.dart +++ b/lib/const_data/radicals.dart @@ -1,217 +1,304 @@ -const Map> radicals = { - 1: ['一', '|', '丶', 'ノ', '乙', '亅'], +class RadkfileRadical { + /// The formal variant of the radical + /// + /// This is the one you want to use for searching. + final String formalVariant; + + /// The informal variant of the radical (if it differs from the formal one). + /// + /// This is the one you should display to the user. + final String? informalVariant; + + /// The number of strokes in this radical. + final int strokeCount; + + const RadkfileRadical({ + required this.formalVariant, + this.informalVariant, + required this.strokeCount, + }); +} + +const Map> radicals = { + 1: [ + RadkfileRadical(formalVariant: '一', strokeCount: 1), + RadkfileRadical(formalVariant: '|', strokeCount: 1), + RadkfileRadical(formalVariant: '丶', strokeCount: 1), + RadkfileRadical(formalVariant: 'ノ', strokeCount: 1), + RadkfileRadical(formalVariant: '乙', strokeCount: 1), + RadkfileRadical(formalVariant: '亅', strokeCount: 1), + ], 2: [ - '二', - '亠', - '人', - '⺅', - '𠆢', - '儿', - '入', - 'ハ', - '丷', - '冂', - '冖', - '冫', - '几', - '凵', - '刀', - '⺉', - '力', - '勹', - '匕', - '匚', - '十', - '卜', - '卩', - '厂', - '厶', - '又', - 'マ', - '九', - 'ユ', - '乃', - '𠂉', + RadkfileRadical(formalVariant: '二', strokeCount: 2), + RadkfileRadical(formalVariant: '亠', strokeCount: 2), + RadkfileRadical(formalVariant: '人', strokeCount: 2), + RadkfileRadical(formalVariant: '化', informalVariant: '⺅', strokeCount: 2), + RadkfileRadical(formalVariant: '个', informalVariant: '𠆢', strokeCount: 2), + RadkfileRadical(formalVariant: '儿', strokeCount: 2), + RadkfileRadical(formalVariant: '入', strokeCount: 2), + RadkfileRadical(formalVariant: 'ハ', strokeCount: 2), + RadkfileRadical(formalVariant: '并', strokeCount: 2), + RadkfileRadical(formalVariant: '冂', strokeCount: 2), + RadkfileRadical(formalVariant: '冖', strokeCount: 2), + RadkfileRadical(formalVariant: '冫', strokeCount: 2), + RadkfileRadical(formalVariant: '几', strokeCount: 2), + RadkfileRadical(formalVariant: '凵', strokeCount: 2), + RadkfileRadical(formalVariant: '刀', strokeCount: 2), + RadkfileRadical(formalVariant: '刈', strokeCount: 2), + RadkfileRadical(formalVariant: '力', strokeCount: 2), + RadkfileRadical(formalVariant: '勹', strokeCount: 2), + RadkfileRadical(formalVariant: '匕', strokeCount: 2), + RadkfileRadical(formalVariant: '匚', strokeCount: 2), + RadkfileRadical(formalVariant: '十', strokeCount: 2), + RadkfileRadical(formalVariant: '卜', strokeCount: 2), + RadkfileRadical(formalVariant: '卩', strokeCount: 2), + RadkfileRadical(formalVariant: '厂', strokeCount: 2), + RadkfileRadical(formalVariant: '厶', strokeCount: 2), + RadkfileRadical(formalVariant: '又', strokeCount: 2), + RadkfileRadical(formalVariant: 'マ', strokeCount: 2), + RadkfileRadical(formalVariant: '九', strokeCount: 2), + RadkfileRadical(formalVariant: 'ユ', strokeCount: 2), + RadkfileRadical(formalVariant: '乃', strokeCount: 2), + RadkfileRadical(formalVariant: '乞', strokeCount: 2), ], 3: [ - '⻌', - '口', - '囗', - '土', - '士', - '夂', - '夕', - '大', - '女', - '子', - '宀', - '寸', - '小', - '⺌', - '尢', - '尸', - '屮', - '山', - '川', - '巛', - '工', - '已', - '巾', - '干', - '幺', - '广', - '廴', - '廾', - '弋', - '弓', - 'ヨ', - '彑', - '彡', - '彳', - '⺖', - '⺘', - '⺡', - '⺨', - '⺾', - '⻏', - '⻖', - '也', - '亡', - '及', - '久', + RadkfileRadical(formalVariant: '込', informalVariant: '⻌', strokeCount: 3), + RadkfileRadical(formalVariant: '口', strokeCount: 3), + RadkfileRadical(formalVariant: '囗', strokeCount: 3), + RadkfileRadical(formalVariant: '土', strokeCount: 3), + RadkfileRadical(formalVariant: '士', strokeCount: 3), + RadkfileRadical(formalVariant: '夂', strokeCount: 3), + RadkfileRadical(formalVariant: '夕', strokeCount: 3), + RadkfileRadical(formalVariant: '大', strokeCount: 3), + RadkfileRadical(formalVariant: '女', strokeCount: 3), + RadkfileRadical(formalVariant: '子', strokeCount: 3), + RadkfileRadical(formalVariant: '宀', strokeCount: 3), + RadkfileRadical(formalVariant: '寸', strokeCount: 3), + RadkfileRadical(formalVariant: '小', strokeCount: 3), + RadkfileRadical(formalVariant: '尚', informalVariant: '⺌', strokeCount: 3), + RadkfileRadical(formalVariant: '尢', strokeCount: 3), + RadkfileRadical(formalVariant: '尸', strokeCount: 3), + RadkfileRadical(formalVariant: '屮', strokeCount: 3), + RadkfileRadical(formalVariant: '山', strokeCount: 3), + RadkfileRadical(formalVariant: '川', strokeCount: 3), + RadkfileRadical(formalVariant: '巛', strokeCount: 3), + RadkfileRadical(formalVariant: '工', strokeCount: 3), + RadkfileRadical(formalVariant: '已', strokeCount: 3), + RadkfileRadical(formalVariant: '巾', strokeCount: 3), + RadkfileRadical(formalVariant: '干', strokeCount: 3), + RadkfileRadical(formalVariant: '幺', strokeCount: 3), + RadkfileRadical(formalVariant: '广', strokeCount: 3), + RadkfileRadical(formalVariant: '廴', strokeCount: 3), + RadkfileRadical(formalVariant: '廾', strokeCount: 3), + RadkfileRadical(formalVariant: '弋', strokeCount: 3), + RadkfileRadical(formalVariant: '弓', strokeCount: 3), + RadkfileRadical(formalVariant: 'ヨ', strokeCount: 3), + RadkfileRadical(formalVariant: '彑', strokeCount: 3), + RadkfileRadical(formalVariant: '彡', strokeCount: 3), + RadkfileRadical(formalVariant: '彳', strokeCount: 3), + RadkfileRadical(formalVariant: '忙', informalVariant: '⺖', strokeCount: 3), + RadkfileRadical(formalVariant: '扎', informalVariant: '⺘', strokeCount: 3), + RadkfileRadical(formalVariant: '汁', informalVariant: '⺡', strokeCount: 3), + RadkfileRadical(formalVariant: '犯', informalVariant: '⺨', strokeCount: 3), + RadkfileRadical(formalVariant: '艾', informalVariant: '⺾', strokeCount: 3), + RadkfileRadical(formalVariant: '邦', informalVariant: '⻏', strokeCount: 3), + RadkfileRadical(formalVariant: '阡', informalVariant: '⻖', strokeCount: 3), + RadkfileRadical(formalVariant: '也', strokeCount: 3), + RadkfileRadical(formalVariant: '亡', strokeCount: 3), + RadkfileRadical(formalVariant: '及', strokeCount: 3), + RadkfileRadical(formalVariant: '久', strokeCount: 3), ], 4: [ - '⺹', - '心', - '戈', - '戸', - '手', - '支', - '攵', - '文', - '斗', - '斤', - '方', - '无', - '日', - '曰', - '月', - '木', - '欠', - '止', - '歹', - '殳', - '比', - '毛', - '氏', - '气', - '水', - '火', - '⺣', - '爪', - '父', - '爻', - '爿', - '片', - '牛', - '犬', - '⺭', - '王', - '元', - '井', - '勿', - '尤', - '五', - '屯', - '巴', - '毋', + RadkfileRadical(formalVariant: '老', informalVariant: '⺹', strokeCount: 4), + RadkfileRadical(formalVariant: '心', strokeCount: 4), + RadkfileRadical(formalVariant: '戈', strokeCount: 4), + RadkfileRadical(formalVariant: '戸', strokeCount: 4), + RadkfileRadical(formalVariant: '手', strokeCount: 4), + RadkfileRadical(formalVariant: '支', strokeCount: 4), + RadkfileRadical(formalVariant: '攵', strokeCount: 4), + RadkfileRadical(formalVariant: '文', strokeCount: 4), + RadkfileRadical(formalVariant: '斗', strokeCount: 4), + RadkfileRadical(formalVariant: '斤', strokeCount: 4), + RadkfileRadical(formalVariant: '方', strokeCount: 4), + RadkfileRadical(formalVariant: '无', strokeCount: 4), + RadkfileRadical(formalVariant: '日', strokeCount: 4), + RadkfileRadical(formalVariant: '曰', strokeCount: 4), + RadkfileRadical(formalVariant: '月', strokeCount: 4), + RadkfileRadical(formalVariant: '木', strokeCount: 4), + RadkfileRadical(formalVariant: '欠', strokeCount: 4), + RadkfileRadical(formalVariant: '止', strokeCount: 4), + RadkfileRadical(formalVariant: '歹', strokeCount: 4), + RadkfileRadical(formalVariant: '殳', strokeCount: 4), + RadkfileRadical(formalVariant: '比', strokeCount: 4), + RadkfileRadical(formalVariant: '毛', strokeCount: 4), + RadkfileRadical(formalVariant: '氏', strokeCount: 4), + RadkfileRadical(formalVariant: '气', strokeCount: 4), + RadkfileRadical(formalVariant: '水', strokeCount: 4), + RadkfileRadical(formalVariant: '火', strokeCount: 4), + RadkfileRadical(formalVariant: '杰', strokeCount: 4), + RadkfileRadical(formalVariant: '爪', strokeCount: 4), + RadkfileRadical(formalVariant: '父', strokeCount: 4), + RadkfileRadical(formalVariant: '爻', strokeCount: 4), + RadkfileRadical(formalVariant: '爿', strokeCount: 4), + RadkfileRadical(formalVariant: '片', strokeCount: 4), + RadkfileRadical(formalVariant: '牛', strokeCount: 4), + RadkfileRadical(formalVariant: '犬', strokeCount: 4), + RadkfileRadical(formalVariant: '礼', strokeCount: 4), + RadkfileRadical(formalVariant: '王', strokeCount: 4), + RadkfileRadical(formalVariant: '元', strokeCount: 4), + RadkfileRadical(formalVariant: '井', strokeCount: 4), + RadkfileRadical(formalVariant: '勿', strokeCount: 4), + RadkfileRadical(formalVariant: '尤', strokeCount: 4), + RadkfileRadical(formalVariant: '五', strokeCount: 4), + RadkfileRadical(formalVariant: '屯', strokeCount: 4), + RadkfileRadical(formalVariant: '巴', strokeCount: 4), + RadkfileRadical(formalVariant: '毋', strokeCount: 4), ], 5: [ - '玄', - '瓦', - '甘', - '生', - '用', - '田', - '疋', - '疒', - '癶', - '白', - '皮', - '皿', - '目', - '矛', - '矢', - '石', - '示', - '禸', - '禾', - '穴', - '立', - '⻂', - '世', - '巨', - '冊', - '母', - '⺲', - '牙', + RadkfileRadical(formalVariant: '玄', strokeCount: 5), + RadkfileRadical(formalVariant: '瓦', strokeCount: 5), + RadkfileRadical(formalVariant: '甘', strokeCount: 5), + RadkfileRadical(formalVariant: '生', strokeCount: 5), + RadkfileRadical(formalVariant: '用', strokeCount: 5), + RadkfileRadical(formalVariant: '田', strokeCount: 5), + RadkfileRadical(formalVariant: '疋', strokeCount: 5), + RadkfileRadical(formalVariant: '疔', strokeCount: 5), + RadkfileRadical(formalVariant: '癶', strokeCount: 5), + RadkfileRadical(formalVariant: '白', strokeCount: 5), + RadkfileRadical(formalVariant: '皮', strokeCount: 5), + RadkfileRadical(formalVariant: '皿', strokeCount: 5), + RadkfileRadical(formalVariant: '目', strokeCount: 5), + RadkfileRadical(formalVariant: '矛', strokeCount: 5), + RadkfileRadical(formalVariant: '矢', strokeCount: 5), + RadkfileRadical(formalVariant: '石', strokeCount: 5), + RadkfileRadical(formalVariant: '示', strokeCount: 5), + RadkfileRadical(formalVariant: '禹', strokeCount: 5), + RadkfileRadical(formalVariant: '禾', strokeCount: 5), + RadkfileRadical(formalVariant: '穴', strokeCount: 5), + RadkfileRadical(formalVariant: '立', strokeCount: 5), + RadkfileRadical(formalVariant: '初', strokeCount: 5), + RadkfileRadical(formalVariant: '世', strokeCount: 5), + RadkfileRadical(formalVariant: '巨', strokeCount: 5), + RadkfileRadical(formalVariant: '冊', strokeCount: 5), + RadkfileRadical(formalVariant: '母', strokeCount: 5), + RadkfileRadical(formalVariant: '買', strokeCount: 5), + RadkfileRadical(formalVariant: '牙', strokeCount: 5), ], 6: [ - '瓜', - '竹', - '米', - '糸', - '缶', - '羊', - '羽', - '而', - '耒', - '耳', - '聿', - '肉', - '自', - '至', - '臼', - '舌', - '舟', - '艮', - '色', - '虍', - '虫', - '血', - '行', - '衣', - '西', + RadkfileRadical(formalVariant: '瓜', strokeCount: 6), + RadkfileRadical(formalVariant: '竹', strokeCount: 6), + RadkfileRadical(formalVariant: '米', strokeCount: 6), + RadkfileRadical(formalVariant: '糸', strokeCount: 6), + RadkfileRadical(formalVariant: '缶', strokeCount: 6), + RadkfileRadical(formalVariant: '羊', strokeCount: 6), + RadkfileRadical(formalVariant: '羽', strokeCount: 6), + RadkfileRadical(formalVariant: '而', strokeCount: 6), + RadkfileRadical(formalVariant: '耒', strokeCount: 6), + RadkfileRadical(formalVariant: '耳', strokeCount: 6), + RadkfileRadical(formalVariant: '聿', strokeCount: 6), + RadkfileRadical(formalVariant: '肉', strokeCount: 6), + RadkfileRadical(formalVariant: '自', strokeCount: 6), + RadkfileRadical(formalVariant: '至', strokeCount: 6), + RadkfileRadical(formalVariant: '臼', strokeCount: 6), + RadkfileRadical(formalVariant: '舌', strokeCount: 6), + RadkfileRadical(formalVariant: '舟', strokeCount: 6), + RadkfileRadical(formalVariant: '艮', strokeCount: 6), + RadkfileRadical(formalVariant: '色', strokeCount: 6), + RadkfileRadical(formalVariant: '虍', strokeCount: 6), + RadkfileRadical(formalVariant: '虫', strokeCount: 6), + RadkfileRadical(formalVariant: '血', strokeCount: 6), + RadkfileRadical(formalVariant: '行', strokeCount: 6), + RadkfileRadical(formalVariant: '衣', strokeCount: 6), + RadkfileRadical(formalVariant: '西', strokeCount: 6), ], 7: [ - '臣', - '見', - '角', - '言', - '谷', - '豆', - '豕', - '豸', - '貝', - '赤', - '走', - '足', - '身', - '車', - '辛', - '辰', - '酉', - '釆', - '里', - '舛', - '麦', + RadkfileRadical(formalVariant: '臣', strokeCount: 7), + RadkfileRadical(formalVariant: '見', strokeCount: 7), + RadkfileRadical(formalVariant: '角', strokeCount: 7), + RadkfileRadical(formalVariant: '言', strokeCount: 7), + RadkfileRadical(formalVariant: '谷', strokeCount: 7), + RadkfileRadical(formalVariant: '豆', strokeCount: 7), + RadkfileRadical(formalVariant: '豕', strokeCount: 7), + RadkfileRadical(formalVariant: '豸', strokeCount: 7), + RadkfileRadical(formalVariant: '貝', strokeCount: 7), + RadkfileRadical(formalVariant: '赤', strokeCount: 7), + RadkfileRadical(formalVariant: '走', strokeCount: 7), + RadkfileRadical(formalVariant: '足', strokeCount: 7), + RadkfileRadical(formalVariant: '身', strokeCount: 7), + RadkfileRadical(formalVariant: '車', strokeCount: 7), + RadkfileRadical(formalVariant: '辛', strokeCount: 7), + RadkfileRadical(formalVariant: '辰', strokeCount: 7), + RadkfileRadical(formalVariant: '酉', strokeCount: 7), + RadkfileRadical(formalVariant: '釆', strokeCount: 7), + RadkfileRadical(formalVariant: '里', strokeCount: 7), + RadkfileRadical(formalVariant: '舛', strokeCount: 7), + RadkfileRadical(formalVariant: '麦', strokeCount: 7), ], - 8: ['金', '長', '門', '隶', '隹', '雨', '青', '非', '奄', '岡', '免', '斉'], - 9: ['面', '革', '韭', '音', '頁', '風', '飛', '食', '首', '香', '品'], - 10: ['馬', '骨', '高', '髟', '鬥', '鬯', '鬲', '鬼', '竜', '韋'], - 11: ['魚', '鳥', '鹵', '鹿', '麻', '亀', '啇', '黄', '黒'], - 12: ['黍', '黹', '無', '歯'], - 13: ['黽', '鼎', '鼓', '鼠'], - 14: ['鼻', '齊'], - 17: ['龠'], + 8: [ + RadkfileRadical(formalVariant: '金', strokeCount: 8), + RadkfileRadical(formalVariant: '長', strokeCount: 8), + RadkfileRadical(formalVariant: '門', strokeCount: 8), + RadkfileRadical(formalVariant: '隶', strokeCount: 8), + RadkfileRadical(formalVariant: '隹', strokeCount: 8), + RadkfileRadical(formalVariant: '雨', strokeCount: 8), + RadkfileRadical(formalVariant: '青', strokeCount: 8), + RadkfileRadical(formalVariant: '非', strokeCount: 8), + RadkfileRadical(formalVariant: '奄', strokeCount: 8), + RadkfileRadical(formalVariant: '岡', strokeCount: 8), + RadkfileRadical(formalVariant: '免', strokeCount: 8), + RadkfileRadical(formalVariant: '斉', strokeCount: 8), + ], + 9: [ + RadkfileRadical(formalVariant: '面', strokeCount: 9), + RadkfileRadical(formalVariant: '革', strokeCount: 9), + RadkfileRadical(formalVariant: '韭', strokeCount: 9), + RadkfileRadical(formalVariant: '音', strokeCount: 9), + RadkfileRadical(formalVariant: '頁', strokeCount: 9), + RadkfileRadical(formalVariant: '風', strokeCount: 9), + RadkfileRadical(formalVariant: '飛', strokeCount: 9), + RadkfileRadical(formalVariant: '食', strokeCount: 9), + RadkfileRadical(formalVariant: '首', strokeCount: 9), + RadkfileRadical(formalVariant: '香', strokeCount: 9), + RadkfileRadical(formalVariant: '品', strokeCount: 9), + ], + 10: [ + RadkfileRadical(formalVariant: '馬', strokeCount: 10), + RadkfileRadical(formalVariant: '骨', strokeCount: 10), + RadkfileRadical(formalVariant: '高', strokeCount: 10), + RadkfileRadical(formalVariant: '髟', strokeCount: 10), + RadkfileRadical(formalVariant: '鬥', strokeCount: 10), + RadkfileRadical(formalVariant: '鬯', strokeCount: 10), + RadkfileRadical(formalVariant: '鬲', strokeCount: 10), + RadkfileRadical(formalVariant: '鬼', strokeCount: 10), + RadkfileRadical(formalVariant: '竜', strokeCount: 10), + RadkfileRadical(formalVariant: '韋', strokeCount: 10), + ], + 11: [ + RadkfileRadical(formalVariant: '魚', strokeCount: 11), + RadkfileRadical(formalVariant: '鳥', strokeCount: 11), + RadkfileRadical(formalVariant: '鹵', strokeCount: 11), + RadkfileRadical(formalVariant: '鹿', strokeCount: 11), + RadkfileRadical(formalVariant: '麻', strokeCount: 11), + RadkfileRadical(formalVariant: '亀', strokeCount: 11), + RadkfileRadical(formalVariant: '滴', strokeCount: 11), + RadkfileRadical(formalVariant: '黄', strokeCount: 11), + RadkfileRadical(formalVariant: '黒', strokeCount: 11), + ], + 12: [ + RadkfileRadical(formalVariant: '黍', strokeCount: 12), + RadkfileRadical(formalVariant: '黹', strokeCount: 12), + RadkfileRadical(formalVariant: '無', strokeCount: 12), + RadkfileRadical(formalVariant: '歯', strokeCount: 12), + ], + 13: [ + RadkfileRadical(formalVariant: '黽', strokeCount: 13), + RadkfileRadical(formalVariant: '鼎', strokeCount: 13), + RadkfileRadical(formalVariant: '鼓', strokeCount: 13), + RadkfileRadical(formalVariant: '鼠', strokeCount: 13), + ], + 14: [ + RadkfileRadical(formalVariant: '鼻', strokeCount: 14), + RadkfileRadical(formalVariant: '齊', strokeCount: 14), + ], + 17: [RadkfileRadical(formalVariant: '龠', strokeCount: 17)], }; diff --git a/test/search/radical_search_test.dart b/test/search/radical_search_test.dart index d71af64..e05b44f 100644 --- a/test/search/radical_search_test.dart +++ b/test/search/radical_search_test.dart @@ -7,32 +7,29 @@ import 'package:test/test.dart'; import 'setup_database_connection.dart'; void main() { - test( - 'All constant radicals should exist in the database', - () async { - final connection = await setupDatabaseConnection(); - final allRadicalsInDb = await connection.query( - RADKFILETableNames.radkfile, - columns: ['radical'], - distinct: true, - ); + test('All constant radicals should exist in the database', () async { + final connection = await setupDatabaseConnection(); + final allRadicalsInDb = await connection.query( + RADKFILETableNames.radkfile, + columns: ['radical'], + distinct: true, + ); - final radicalsInDb = allRadicalsInDb - .map((e) => e['radical'] as String) - .toSet(); + final radicalsInDb = allRadicalsInDb + .map((e) => e['radical'] as String) + .toSet(); - final missingRadicals = radicals.values.flattenedToSet.difference( - radicalsInDb, - ); + final missingRadicals = radicals.values.flattenedToSet + .map((e) => e.formalVariant) + .toSet() + .difference(radicalsInDb); - expect( - missingRadicals, - isEmpty, - reason: 'Missing radicals in database: $missingRadicals', - ); - }, - skip: 'Test is valid, code is broken, fix me', - ); + expect( + missingRadicals, + isEmpty, + reason: 'Missing radicals in database: $missingRadicals', + ); + }); test( 'All radicals in database should be in the constant radical list', @@ -49,7 +46,7 @@ void main() { .toSet(); final extraRadicals = radicalsInDb.difference( - radicals.values.flattenedToSet, + radicals.values.flattenedToSet.map((e) => e.formalVariant).toSet(), ); expect( @@ -59,21 +56,35 @@ void main() { 'Extra radicals in database missing in the constant list: $extraRadicals', ); }, - skip: 'Test is valid, code is broken, fix me', ); - group( - 'All radicals should return results', + test( + 'All constant radicals are located in the correct stroke count group', () { - for (final radical in radicals.values.flattened) { - test(' - $radical', () async { - final connection = await setupDatabaseConnection(); - final result = await connection.jadbSearchKanjiByRadicals([radical]); - expect(result, isNotEmpty); - }); + for (final mapEntry in radicals.entries) { + final strokeCount = mapEntry.key; + final radicalsInGroup = mapEntry.value; + for (final radical in radicalsInGroup) { + expect( + strokeCount, + radical.strokeCount, + reason: + 'Radical ${radical.formalVariant} should have stroke count $strokeCount but has ${radical.strokeCount}', + ); + } } }, - skip: - 'These will be automatically fixed once the other radical tests are passing', ); + + group('All radicals should return results', () { + for (final radical in radicals.values.flattened) { + test(' - $radical', () async { + final connection = await setupDatabaseConnection(); + final result = await connection.jadbSearchKanjiByRadicals([ + radical.formalVariant, + ]); + expect(result, isNotEmpty); + }); + } + }); }