UNPKG

earley-sgf

Version:

Early algorithm used to parse SGF file

44 lines (43 loc) 1.38 kB
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];TE[dq];TB[dc][aa];AB[dq];AE[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('TE')); assert(found.has('TW')); assert(found.has('AB')); assert(found.has('AW')); assert(found.has('AE')); });