UNPKG

@tonkite/tlb-parser

Version:

Parse TL-B syntax into TypeScript objects

47 lines (35 loc) 1.49 kB
import fs from 'fs'; import path from 'path'; import { parse } from '../src'; import { loadYamlCases } from './loaders/yaml'; const fixturesDir = path.resolve(__dirname, 'fixtures'); const maybe = (condition: Boolean) => (condition ? test : test.skip); describe('parsing into intermediate representation using grammar', () => { test('block.tlb can be parsed', () => { expect.hasAssertions(); const input = fs.readFileSync(path.resolve(fixturesDir, 'tlb', 'block.tlb'), 'utf-8'); const parsed = parse(input); expect(parsed.shortMessage).toBe(undefined); expect(parsed.succeeded()).toBe(true); }); for (let caseDef of loadYamlCases(fixturesDir, 'grammar', 'invalid-one-liners.yml')) { maybe(!caseDef.skip)(`Generated invalid example: ${caseDef.case}`, () => { expect.hasAssertions(); const parsed = parse(caseDef.code); if (caseDef.error !== undefined) { expect(parsed.shortMessage).toEqual(caseDef.error); } else if (caseDef.errorStart !== undefined) { expect(parsed.shortMessage).toMatch(caseDef.errorStart); } expect(parsed.succeeded()).toBe(false); }); } for (let caseDef of loadYamlCases(fixturesDir, 'grammar', 'valid-one-liners.yml')) { test(`Generated valid example: ${caseDef.case}`, () => { expect.hasAssertions(); const parsed = parse(caseDef.code); expect(parsed.shortMessage).toBe(undefined); expect(parsed.succeeded()).toBe(true); }); } });