feat: complete academic symbol lexicon heal, 2-column Cooper extraction, and updated assets
This commit is contained in:
@@ -0,0 +1,121 @@
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:words999/models/houses_session_model.dart';
|
||||
import 'package:words999/models/word_model.dart';
|
||||
import 'package:words999/services/houses_service.dart';
|
||||
import 'package:words999/services/words_repository.dart';
|
||||
import 'package:words999/services/oracle_master_prompt_generator.dart';
|
||||
|
||||
void main() {
|
||||
TestWidgetsFlutterBinding.ensureInitialized();
|
||||
|
||||
group('Querent & Master Prompt Tests', () {
|
||||
late HousesService service;
|
||||
|
||||
setUp(() async {
|
||||
SharedPreferences.setMockInitialValues({});
|
||||
final repo = WordsRepository();
|
||||
await repo.init(remoteDailyShuffle: false);
|
||||
service = HousesService();
|
||||
});
|
||||
|
||||
test('Querent is properly initialized and anchored in session', () {
|
||||
const querent = WordItem(
|
||||
id: 1,
|
||||
word: 'ИСТИНА',
|
||||
partOfSpeech: 'существительное',
|
||||
frequency: 50.0,
|
||||
core: 'Незыблемое основание бытия',
|
||||
category: 'Философия',
|
||||
description: 'Чистый свет разума',
|
||||
oracle: 'Всякая тень исчезает перед ликом Истины',
|
||||
shadow: 'Фанатичная убежденность',
|
||||
asks: 'В чем ты боишься признаться себе?',
|
||||
step: 'Взгляни правде в глаза',
|
||||
binds: ['Искажение'],
|
||||
);
|
||||
|
||||
final session = service.createNewSession(
|
||||
question: 'Куда ведет путь?',
|
||||
querentWord: querent,
|
||||
querentHouseIndex: 42,
|
||||
);
|
||||
|
||||
expect(session.querentWord, isNotNull);
|
||||
expect(session.querentWord!.word, 'ИСТИНА');
|
||||
expect(session.querentHouseIndex, 42);
|
||||
expect(session.question, 'Куда ведет путь?');
|
||||
});
|
||||
|
||||
test('Master Prompt compiles full 3-tier hierarchy and sacred geometry', () {
|
||||
const querent = WordItem(
|
||||
id: 2,
|
||||
word: 'ПУТНИК',
|
||||
partOfSpeech: 'существительное',
|
||||
frequency: 45.0,
|
||||
core: 'Движение сквозь миры',
|
||||
category: 'Архетип',
|
||||
description: 'Идущий сквозь пространство и время',
|
||||
oracle: 'Дорога рождается под ногами идущего',
|
||||
shadow: 'Блуждание без цели',
|
||||
asks: 'Каков твой истинный пункт назначения?',
|
||||
step: 'Сделай первый шаг в неизведанное',
|
||||
binds: ['Застой'],
|
||||
);
|
||||
|
||||
var session = service.createNewSession(
|
||||
question: 'Что ожидает на пороге нового цикла?',
|
||||
querentWord: querent,
|
||||
querentHouseIndex: 100,
|
||||
);
|
||||
|
||||
// Open 2 houses with guests
|
||||
final cell1 = session.grid[10];
|
||||
const guest1 = WordItem(
|
||||
id: 3,
|
||||
word: 'ОГОНЬ',
|
||||
partOfSpeech: 'существительное',
|
||||
frequency: 60.0,
|
||||
core: 'Первичная искра трансформации',
|
||||
category: 'Стихия',
|
||||
description: 'Пламя очищения',
|
||||
oracle: 'Огонь сжигает ветхое',
|
||||
shadow: 'Разрушительная ярость',
|
||||
asks: 'Что требует очищения?',
|
||||
step: 'Зажги внутреннее пламя',
|
||||
binds: ['Пепел'],
|
||||
);
|
||||
session = service.revealHouse(session, cell: cell1, guestWord: guest1);
|
||||
|
||||
final cell2 = session.grid[25];
|
||||
const guest2 = WordItem(
|
||||
id: 4,
|
||||
word: 'ЗЕРКАЛО',
|
||||
partOfSpeech: 'существительное',
|
||||
frequency: 55.0,
|
||||
core: 'Отражение скрытой сущности',
|
||||
category: 'Символ',
|
||||
description: 'Гладь осознания',
|
||||
oracle: 'То, что ты видишь снаружи — внутри тебя',
|
||||
shadow: 'Иллюзия и самообман',
|
||||
asks: 'Что отражается в твоем сердце?',
|
||||
step: 'Прими свое отражение',
|
||||
binds: ['Кривое зеркало'],
|
||||
);
|
||||
session = service.revealHouse(session, cell: cell2, guestWord: guest2);
|
||||
|
||||
final prompt = OracleMasterPromptGenerator.generate(session);
|
||||
|
||||
expect(prompt, contains('ОРАКУЛ 999'));
|
||||
expect(prompt, contains('ПУТНИК'));
|
||||
expect(prompt, contains('Что ожидает на пороге нового цикла?'));
|
||||
expect(prompt, contains('ОГОНЬ'));
|
||||
expect(prompt, contains('ЗЕРКАЛО'));
|
||||
expect(prompt, contains('АРХОНТ'));
|
||||
expect(prompt, contains('ДОМ'));
|
||||
expect(prompt, contains('ГОСТЬ'));
|
||||
expect(prompt, contains('САКРАЛЬНАЯ ГЕОМЕТРИЯ'));
|
||||
expect(prompt, contains('ИНСТРУКЦИЯ ДЛЯ ТОЛКОВАНИЯ'));
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user