mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 13:09:33 -06:00
164 lines
3.3 KiB
TypeScript
164 lines
3.3 KiB
TypeScript
import PGF, { PGFGrammar } from '../index'
|
|
import fs from 'fs'
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
describe('readPGF', () => {
|
|
test('valid', () => {
|
|
PGF.readPGF('../haskell/tests/basic.pgf')
|
|
})
|
|
|
|
test('non-existent', () => {
|
|
expect(() => {
|
|
PGF.readPGF('../haskell/tests/abc.pgf')
|
|
}).toThrow(Error)
|
|
})
|
|
|
|
test('GF', () => {
|
|
expect(() => {
|
|
PGF.readPGF('../haskell/tests/basic.gf')
|
|
}).toThrow(PGF.PGFError)
|
|
})
|
|
|
|
test('NGF', () => {
|
|
try {
|
|
fs.unlinkSync('./basic.ngf')
|
|
} catch {
|
|
// empty
|
|
}
|
|
PGF.bootNGF('../haskell/tests/basic.pgf', './basic.ngf')
|
|
expect(() => {
|
|
PGF.readPGF('./basic.ngf')
|
|
}).toThrow(PGF.PGFError)
|
|
})
|
|
})
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
describe('bootNGF', () => {
|
|
beforeAll(() => {
|
|
try {
|
|
fs.unlinkSync('./basic.ngf')
|
|
} catch {
|
|
// empty
|
|
}
|
|
})
|
|
|
|
test('valid', () => {
|
|
PGF.bootNGF('../haskell/tests/basic.pgf', './basic.ngf')
|
|
})
|
|
|
|
test('non-existent', () => {
|
|
expect(() => {
|
|
PGF.bootNGF('../haskell/tests/abc.pgf', './abc.ngf')
|
|
}).toThrow(Error)
|
|
})
|
|
|
|
test('GF', () => {
|
|
expect(() => {
|
|
PGF.bootNGF('../haskell/tests/basic.gf', './abc.ngf')
|
|
}).toThrow(PGF.PGFError)
|
|
})
|
|
|
|
test('NGF', () => {
|
|
expect(() => {
|
|
PGF.bootNGF('./basic.ngf', './abc.ngf')
|
|
}).toThrow(PGF.PGFError)
|
|
})
|
|
|
|
test('existing', () => {
|
|
expect(() => {
|
|
PGF.bootNGF('../haskell/tests/basic.pgf', './basic.ngf')
|
|
}).toThrow(Error)
|
|
})
|
|
})
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
describe('readNGF', () => {
|
|
// beforeAll(() => {
|
|
// try {
|
|
// fs.unlinkSync('./basic.ngf')
|
|
// } catch {
|
|
// // empty
|
|
// }
|
|
// })
|
|
|
|
test('valid', () => {
|
|
const gr = PGF.readNGF('./basic.ngf')
|
|
expect(gr.getCategories().length).toBeGreaterThan(0)
|
|
})
|
|
|
|
test('non-existent', () => {
|
|
expect(() => {
|
|
PGF.readNGF('./abc.ngf')
|
|
}).toThrow(Error)
|
|
})
|
|
|
|
test('GF', () => {
|
|
expect(() => {
|
|
PGF.readNGF('../haskell/tests/basic.gf')
|
|
}).toThrow(PGF.PGFError)
|
|
})
|
|
|
|
test('PGF', () => {
|
|
expect(() => {
|
|
PGF.readNGF('../haskell/tests/basic.pgf')
|
|
}).toThrow(PGF.PGFError)
|
|
})
|
|
})
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
describe('newNGF', () => {
|
|
beforeAll(() => {
|
|
try {
|
|
fs.unlinkSync('./empty.ngf')
|
|
} catch {
|
|
// empty
|
|
}
|
|
})
|
|
|
|
test('file', () => {
|
|
const gr = PGF.newNGF('empty', './empty.ngf')
|
|
expect(gr.getCategories().length).toBe(0)
|
|
})
|
|
|
|
test('memory', () => {
|
|
const gr = PGF.newNGF('empty')
|
|
expect(gr.getCategories().length).toBe(0)
|
|
})
|
|
|
|
test('existing', () => {
|
|
expect(() => {
|
|
PGF.newNGF('empty', './basic.ngf')
|
|
}).toThrow(Error)
|
|
})
|
|
})
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
describe('abstract syntax', () => {
|
|
let gr: PGFGrammar
|
|
|
|
beforeAll(() => {
|
|
gr = PGF.readPGF('../haskell/tests/basic.pgf')
|
|
})
|
|
|
|
afterAll(() => {
|
|
gr.release()
|
|
})
|
|
|
|
test('abstract name', () => {
|
|
expect(gr.getAbstractName()).toBe('basic')
|
|
})
|
|
|
|
test('categories', () => {
|
|
expect(gr.getCategories()).toEqual(['Float','Int','N','P','S','String'])
|
|
})
|
|
|
|
test('functions', () => {
|
|
expect(gr.getFunctions()).toEqual(['c','ind','s','z'])
|
|
})
|
|
})
|