earley-sgf
Version:
Early algorithm used to parse SGF file
44 lines (43 loc) • 1.38 kB
JavaScript
import { assert, test } from 'vitest';
import { sgfTokenize } from './sgfTokenize.js';
test('DT PB PW KM SZ W B', () => {
const sgfFile = '(;DT[2024-04-21]PB[or2win]PW[Henry_Yuan]SZ[19]KM[6.5]RE[B+2.5];W[dq])';
const found = new Set();
const texts = new Set();
for (let token of sgfTokenize(sgfFile)) {
found.add(token.token);
if (token.token !== token.text)
texts.add(token.text);
}
assert(found.has('DT'));
assert(texts.has('2024-04-21'));
assert(found.has('PB'));
assert(found.has('PW'));
assert(texts.has('Henry_Yuan'));
assert(found.has('KM'));
assert(texts.has('6.5'));
assert(found.has('W'));
assert(found.has('SZ'));
assert(found.has('RE'));
assert(texts.has('B+2.5'));
assert(found.has('['));
assert(found.has(']'));
assert(found.has('('));
assert(found.has(')'));
assert(found.has(';'));
assert(found.has('text'));
});
test('TB TW TN AB AW AN', () => {
const sgfFile = '(;;B[pd];TW[dc][aa];TN[dq];TB[dc][aa];AB[dq];AN[dq];AW[dq])';
const found = new Set();
for (let token of sgfTokenize(sgfFile)) {
found.add(token.token);
}
assert(found.has('B'));
assert(found.has('TB'));
assert(found.has('TN'));
assert(found.has('TW'));
assert(found.has('AB'));
assert(found.has('AW'));
assert(found.has('AN'));
});