Files
brain/tools/secretary-armor.test.mjs
T

31 lines
1.5 KiB
JavaScript

import { describe, it, expect } from 'vitest';
import { parseLoose, salvageObjects, one, normLens } from './secretary-armor.mjs';
describe('secretary-armor', () => {
it('parseLoose: чистый объект', () => {
expect(parseLoose('{"new":[{"text":"x"}]}', 'new').new).toHaveLength(1);
});
it('parseLoose: ```json-обёртка и висячая запятая', () => {
expect(parseLoose('```json\n{"forks":[{"a":1},]}\n```', 'forks').forks).toHaveLength(1);
});
it('parseLoose: голый массив', () => {
expect(parseLoose('[{"a":1},{"b":2}]', 'tend').tend).toHaveLength(2);
});
it('parseLoose: сломанный JSON -> спасение по-объектно (битый пропущен)', () => {
const broken = '{"tend":[{"id":"СВ-1","action":"carry"},{"id":"СВ-2","why":Ход без кавычек},{"id":"СВ-3","action":"carry"}]}';
expect(parseLoose(broken, 'tend').tend.map((t) => t.id)).toEqual(['СВ-1', 'СВ-3']);
});
it('one: проза->словарь; неизвестное->догадка', () => {
expect(one('ответ')).toBe('внутр');
expect(one('владелец сказал')).toBe('воля');
expect(one('незавершённый')).toBe('догадка');
expect(one('абракадабра')).toBe('догадка');
expect(one('внеш')).toBe('внеш');
});
it('normLens: 9->Л9, л4->Л4', () => {
expect(normLens('9')).toBe('Л9');
expect(normLens('л4')).toBe('Л4');
expect(normLens('Л6')).toBe('Л6');
});
});