feat: complete academic symbol lexicon heal, 2-column Cooper extraction, and updated assets
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:words999/models/culture_branch.dart';
|
||||
import 'package:words999/models/word_model.dart';
|
||||
|
||||
void main() {
|
||||
final kb = json.decode(File('assets/data/oracle_kb.json').readAsStringSync()) as Map<String, dynamic>;
|
||||
|
||||
test('Cyrillic word boundaries work (Dart \\b is ASCII-only)', () {
|
||||
final sumer = kCultureBranches.firstWhere((b) => b.id == 'sumer');
|
||||
expect(sumer.matches(' В Шумере знак UD '), isTrue);
|
||||
expect(sumer.matches(' безутешный '), isFalse); // "уту" inside a word must not match
|
||||
});
|
||||
|
||||
test('ДЕНЬ is decomposed into many human traditions', () {
|
||||
final w = const WordItem(id: 6, word: 'день', partOfSpeech: '', frequency: 1)
|
||||
.enrichWithKb(kb['день'] as Map<String, dynamic>);
|
||||
final c = w.resolvedCultures;
|
||||
for (final name in [
|
||||
'Шумер и Месопотамия',
|
||||
'Древний Египет',
|
||||
'Иудейская традиция и Каббала',
|
||||
'Античность (Греция и Рим)',
|
||||
'Кельты и друиды',
|
||||
'Древний Китай',
|
||||
'Полинезия и Океания',
|
||||
'Мезоамерика и Анды',
|
||||
'Алхимия и герметизм',
|
||||
]) {
|
||||
expect(c.containsKey(name), isTrue, reason: 'missing $name; got ${c.keys}');
|
||||
}
|
||||
});
|
||||
|
||||
test('НОЧЬ covers Islamic/Sufi and Sumerian layers', () {
|
||||
final w = const WordItem(id: 7, word: 'ночь', partOfSpeech: '', frequency: 1)
|
||||
.enrichWithKb(kb['ночь'] as Map<String, dynamic>);
|
||||
final c = w.resolvedCultures;
|
||||
expect(c.keys, containsAll(['Ислам и суфизм', 'Шумер и Месопотамия', 'Древний Египет', 'Древний Китай']));
|
||||
});
|
||||
|
||||
test('explicit cultures override auto-extraction and survive toMap/fromMap', () {
|
||||
const w = WordItem(id: 1, word: 'x', partOfSpeech: '', frequency: 1, cultures: {'Славянская традиция': 'Навь'});
|
||||
final back = WordItem.fromMap(w.toMap());
|
||||
expect(back.resolvedCultures, {'Славянская традиция': 'Навь'});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user