@ton-community/tlb-parser
Version:
Parse TLB syntax into TypeScript objects
62 lines (50 loc) • 1.55 kB
text/typescript
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)
})
}
})