31 lines
1.5 KiB
JavaScript
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');
|
|
});
|
|
});
|