116 lines
6.8 KiB
Dart
116 lines
6.8 KiB
Dart
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);
|
|
});
|
|
}
|