UNPKG

@ton-community/tlb-parser

Version:

Parse TLB syntax into TypeScript objects

62 lines (50 loc) 1.55 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) }) } })