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/oracle_master_prompt_generator.dart'; void main() { setUpAll(() async { TestWidgetsFlutterBinding.ensureInitialized(); await WordsRepository().init(); }); test('Generates complete Geomancy Master Prompt for Great Shield', () { final repo = WordsRepository(); final word = repo.allWords[0]; final judge = GeomancyPromptFigure( position: 'Верховный Судья', name: 'Большая Удача', latinName: 'Fortuna Major', arabicName: 'Al-Nasra al-Dakhila', lines: [1, 1, 2, 2], element: 'Огонь', planet: 'Солнце', lore: 'Высший триумф, защита и вход благодати.', linkedWord: word, ); final reconciler = GeomancyPromptFigure( position: 'Примиритель', name: 'Прибыль', latinName: 'Acquisitio', arabicName: 'Al-Qabd al-Dakhil', lines: [2, 1, 1, 2], element: 'Воздух', planet: 'Юпитер', lore: 'Умножение ресурсов, духовное обогащение.', linkedWord: word, ); final prompt = OracleMasterPromptGenerator.generateGeomancyMasterPrompt( question: 'Исход ключевого решения', layoutTitle: 'Великий Щит Судьбы (16 фигур)', isShield: true, judge: judge, reconciler: reconciler, rightWitness: judge, leftWitness: reconciler, ); expect(prompt.isNotEmpty, true); expect(prompt.contains("АРАБСКАЯ ГЕОМАНТИЯ ('ИЛМ АР-РАМЛ)"), true); expect(prompt.contains('ВЕРХОВНЫЙ СУДЬЯ'), true); expect(prompt.contains('ПРИМИРИТЕЛЬ'), true); expect(prompt.contains('Fortuna Major'), true); expect(prompt.contains('Acquisitio'), true); expect(prompt.contains('Исход ключевого решения'), true); expect(prompt.contains('ТРЕБОВАНИЯ К ИНТЕРПРЕТАЦИИ НЕЙРОСЕТЬЮ'), true); }); test('Generates Cross-System Master Prompt with Great Geomantic Shield structure', () { final repo = WordsRepository(); final word = repo.allWords[0]; final items = [ ReadingSignItem(title: '1-я Мать: Via', subtitle: 'Огонь • Солнце', symbol: '· · · ·', lore: 'Путь, движение', linkedWord: word), ReadingSignItem(title: '2-я Мать: Populus', subtitle: 'Вода • Луна', symbol: '·· ·· ·· ··', lore: 'Толпа, пассивность', linkedWord: word), ReadingSignItem(title: '3-я Мать: Conjunctio', subtitle: 'Воздух • Меркурий', symbol: '·· · · ··', lore: 'Соединение, союз', linkedWord: word), ReadingSignItem(title: '4-я Мать: Carcer', subtitle: 'Земля • Сатурн', symbol: '· ·· ·· ·', lore: 'Тюрьма, фиксация', linkedWord: word), ReadingSignItem(title: '1-я Дочь: Fortuna Major', subtitle: 'Огонь • Солнце', symbol: '· · ·· ··', lore: 'Великая удача'), ReadingSignItem(title: '2-я Дочь: Acquisitio', subtitle: 'Воздух • Юпитер', symbol: '·· · · ··', lore: 'Прибыль'), ReadingSignItem(title: '3-я Дочь: Puella', subtitle: 'Воздух • Венера', symbol: '· · ·· ·', lore: 'Девушка'), ReadingSignItem(title: '4-я Дочь: Puer', subtitle: 'Огонь • Марс', symbol: '· · · ··', lore: 'Юноша'), ReadingSignItem(title: '1-й Племянник: Amissio', subtitle: 'Земля • Венера', symbol: '· ·· · ··', lore: 'Потеря'), ReadingSignItem(title: '2-й Племянник: Albus', subtitle: 'Вода • Меркурий', symbol: '·· ·· · ··', lore: 'Белизна'), ReadingSignItem(title: '3-й Племянник: Rubeus', subtitle: 'Огонь • Марс', symbol: '·· · ·· ··', lore: 'Краснота'), ReadingSignItem(title: '4-й Племянник: Tristitia', subtitle: 'Земля • Сатурн', symbol: '·· ·· ·· ·', lore: 'Печаль'), ReadingSignItem(title: 'Правый Свидетель (Внешнее): Fortuna Minor', subtitle: 'Огонь • Солнце', symbol: '· · ·· ·', lore: 'Малая удача'), ReadingSignItem(title: 'Левый Свидетель (Внутреннее): Laetitia', subtitle: 'Воздух • Юпитер', symbol: '· ·· ·· ··', lore: 'Радость'), ReadingSignItem(title: 'СУДЬЯ (Итог): Fortuna Major', subtitle: 'Огонь • Солнце', symbol: '· · ·· ··', lore: 'Триумф и истина', linkedWord: word), ReadingSignItem(title: 'Примиритель: Populus', subtitle: 'Вода • Луна', symbol: '·· ·· ·· ··', lore: 'Окончательное согласие'), ]; final geomancyReading = SyncreticReading( id: 'reading_geomancy_test', systemId: 'geomancy', systemName: "Арабская Геомантия ('Илм ар-рамл)", systemIcon: '⌛', timestamp: DateTime.now(), layoutTitle: 'Великий Геомантический Щит (16 фигур)', inputMethod: 'sand_ritual', items: items, question: 'Каков исход предприятия?', ); final session = SyncreticSession( id: 'session_test_1', date: DateTime.now(), mainQuestion: 'Каков исход предприятия?', readings: [geomancyReading], ); final crossPrompt = OracleMasterPromptGenerator.generateCrossSystemComparison(session); expect(crossPrompt.contains('ВЕЛИКИЙ МЕТА-МАСТЕР-ПРОМПТ'), true); expect(crossPrompt.contains('СВЯЩЕННАЯ АРХИТЕКТУРА ВЕЛИКОГО ГЕОМАНТИЧЕСКОГО ЩИТА (16 САКРАЛЬНЫХ ФИГУР)'), true); expect(crossPrompt.contains('ВЕРХОВНЫЙ СУДЬЯ'), true); expect(crossPrompt.contains('ПРИМИРИТЕЛЬ'), true); expect(crossPrompt.contains('ДВА СВИДЕТЕЛЯ'), true); expect(crossPrompt.contains('ЧЕТЫРЕ МАТЕРИ'), true); expect(crossPrompt.contains('ЧЕТЫРЕ ДОЧЕРИ'), true); expect(crossPrompt.contains('ЧЕТЫРЕ ПЛЕМЯННИКА'), true); expect(crossPrompt.contains('Геомантический вектор: Итоговый вердикт выносит Верховный Судья'), true); expect(crossPrompt.contains('вердикт Верховного Судьи Геомантии (Аль-Кади)'), true); }); }