feat: complete academic symbol lexicon heal, 2-column Cooper extraction, and updated assets
This commit is contained in:
@@ -0,0 +1,148 @@
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:words999/models/syncretic_session_model.dart';
|
||||
import 'package:words999/services/words_repository.dart';
|
||||
import 'package:words999/services/traditions_repository.dart';
|
||||
import 'package:words999/services/oracle_master_prompt_generator.dart';
|
||||
|
||||
void main() {
|
||||
setUpAll(() async {
|
||||
TestWidgetsFlutterBinding.ensureInitialized();
|
||||
await WordsRepository().init();
|
||||
await TraditionsRepository().init();
|
||||
});
|
||||
|
||||
test('SyncreticSession accumulates multiple diverse readings and generates Meta-Prompt', () {
|
||||
final repo = WordsRepository();
|
||||
|
||||
final r1 = SyncreticReading(
|
||||
id: 'test_r1',
|
||||
systemId: 'cleromancy',
|
||||
systemName: 'Оракул 999 (Клеромантия)',
|
||||
systemIcon: '🎲',
|
||||
timestamp: DateTime.now(),
|
||||
layoutTitle: '2 знака',
|
||||
inputMethod: 'dice',
|
||||
items: [
|
||||
ReadingSignItem(
|
||||
title: '#142 ВОЛЯ',
|
||||
subtitle: 'Существительное',
|
||||
symbol: '🎲',
|
||||
lore: 'Импульс намерения',
|
||||
linkedWord: repo.allWords[0],
|
||||
),
|
||||
],
|
||||
question: 'Как реализовать проект?',
|
||||
);
|
||||
|
||||
final r2 = SyncreticReading(
|
||||
id: 'test_r2',
|
||||
systemId: 'runes',
|
||||
systemName: 'Руны Старшего Футарка (24)',
|
||||
systemIcon: 'ᚱ',
|
||||
timestamp: DateTime.now(),
|
||||
layoutTitle: 'Бросок 2×d12',
|
||||
inputMethod: 'dice',
|
||||
items: [
|
||||
ReadingSignItem(
|
||||
title: 'Феху (Fehu)',
|
||||
subtitle: 'Этт Фрейи',
|
||||
symbol: 'ᚠ',
|
||||
lore: 'Скот, богатство, первичный огонь творения.',
|
||||
isReversed: false,
|
||||
linkedWord: repo.allWords[1],
|
||||
),
|
||||
],
|
||||
question: 'Как реализовать проект?',
|
||||
);
|
||||
|
||||
final r3 = SyncreticReading(
|
||||
id: 'test_r3',
|
||||
systemId: 'lenormand',
|
||||
systemName: 'Малый Оракул Ленорман',
|
||||
systemIcon: '🪶',
|
||||
timestamp: DateTime.now(),
|
||||
layoutTitle: 'd6+d12: Карта #24',
|
||||
inputMethod: 'dice',
|
||||
items: [
|
||||
ReadingSignItem(
|
||||
title: 'Карта 24 «Сердце»',
|
||||
subtitle: 'Любовь, искренность, страсть',
|
||||
symbol: '#24',
|
||||
lore: 'Сердце указывает на чистую эмоциональную вовлечённость.',
|
||||
linkedWord: repo.allWords[2],
|
||||
),
|
||||
],
|
||||
question: 'Как реализовать проект?',
|
||||
);
|
||||
|
||||
final session = SyncreticSession(
|
||||
id: 'syn_test_day',
|
||||
date: DateTime.now(),
|
||||
mainQuestion: 'Как реализовать проект?',
|
||||
readings: [r1, r2, r3],
|
||||
);
|
||||
|
||||
expect(session.readings.length, 3);
|
||||
|
||||
final metaPrompt = OracleMasterPromptGenerator.generateCrossSystemComparison(session);
|
||||
expect(metaPrompt.isNotEmpty, true);
|
||||
expect(metaPrompt.contains('ВЕЛИКИЙ МЕТА-МАСТЕР-ПРОМПТ'), true);
|
||||
expect(metaPrompt.contains('Как реализовать проект?'), true);
|
||||
expect(metaPrompt.contains('ОРАКУЛ 999'), true);
|
||||
expect(metaPrompt.contains('РУНЫ СТАРШЕГО ФУТАРКА'), true);
|
||||
expect(metaPrompt.contains('МАЛЫЙ ОРАКУЛ ЛЕНОРМАН'), true);
|
||||
expect(metaPrompt.contains('ТОЧКА КОНВЕРГЕНЦИИ'), true);
|
||||
expect(metaPrompt.contains('ТОЧКИ ДИВЕРГЕНЦИИ И ПОЛЯРНОСТИ'), true);
|
||||
});
|
||||
|
||||
test('Matrix chains reading can be recorded and serialized in SyncreticSession', () {
|
||||
final repo = WordsRepository();
|
||||
|
||||
final chainReading = SyncreticReading(
|
||||
id: 'chains_session_99',
|
||||
systemId: 'matrix_chains',
|
||||
systemName: 'Матрица 33×30: Цепочки Домов',
|
||||
systemIcon: '🔗',
|
||||
timestamp: DateTime.now(),
|
||||
layoutTitle: '1 цепочка',
|
||||
inputMethod: 'dice',
|
||||
items: [
|
||||
ReadingSignItem(
|
||||
title: 'Цепочка #1: Петля Судьбы',
|
||||
subtitle: 'Старт: Дом #1 «ОГОНЬ» • Шагов: 3',
|
||||
symbol: '🔄',
|
||||
lore: 'Траектория: «ВОДА» ➔ «ЗЕМЛЯ» ➔ «ОГОНЬ»\nЗамкнутая петля судьбы.',
|
||||
linkedWord: repo.allWords[0],
|
||||
meta: {
|
||||
'chainIndex': 1,
|
||||
'endType': 'loop',
|
||||
'stepsCount': 3,
|
||||
'path': '«ВОДА» ➔ «ЗЕМЛЯ» ➔ «ОГОНЬ»',
|
||||
},
|
||||
),
|
||||
],
|
||||
question: 'Вектор развития',
|
||||
);
|
||||
|
||||
final session = SyncreticSession(
|
||||
id: 'syn_matrix_chains_test',
|
||||
date: DateTime.now(),
|
||||
mainQuestion: 'Вектор развития',
|
||||
readings: [chainReading],
|
||||
);
|
||||
|
||||
final jsonStr = session.toJson();
|
||||
final restored = SyncreticSession.fromJson(jsonStr);
|
||||
|
||||
expect(restored.readings.length, 1);
|
||||
expect(restored.readings.first.systemId, 'matrix_chains');
|
||||
expect(restored.readings.first.items.first.title, 'Цепочка #1: Петля Судьбы');
|
||||
expect(restored.readings.first.items.first.symbol, '🔄');
|
||||
expect(restored.readings.first.items.first.meta?['endType'], 'loop');
|
||||
|
||||
final metaPrompt = OracleMasterPromptGenerator.generateCrossSystemComparison(restored);
|
||||
expect(metaPrompt.contains('МАТРИЦА 33×30: ЦЕПОЧКИ ДОМОВ'), true);
|
||||
expect(metaPrompt.contains('ЦЕПОЧКА #1: ПЕТЛЯ СУДЬБЫ'), true);
|
||||
});
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user