-
Notifications
You must be signed in to change notification settings - Fork 0
/
parser-test.js
22 lines (21 loc) · 1.19 KB
/
parser-test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var assert = require("assert")
var peg = require('pegjs');
var fs = require('fs');
var parser = peg.buildParser(fs.readFileSync('grammar.pegjs', 'utf8'));
describe('grammar', function() {
it('select id, foo from bar', function() {
assert.deepEqual({"select":{"exprs":["id","foo"],"from":["bar"]}}, parser.parse('select id, foo from bar'));
});
it('create table bar (id integer primary key auto_increment, foo varchar)', function() {
assert.deepEqual({"createTable":[{"field":"id","type":"integer","pk":true,"ai":true},{"field":"foo","type":"varchar"}]},
parser.parse('create table bar (id integer primary key auto_increment, foo varchar)'));
});
it('insert into bar (id, foo) values (1, "hello")', function() {
assert.deepEqual({"insert":{"table":"bar","fields":["id","foo"],"values":[1,"hello"]}},
parser.parse('insert into bar (id, foo) values (1, "hello")'));
});
it('update bar set foo="hello" where id = 1', function() {
assert.deepEqual({"update":{"table":"bar","set":[{"field":"foo","expr":"hello"}],"where":{"expr":{"op":"=","field":"id","value":1}}}},
parser.parse('update bar set foo="hello" where id=1'));
});
});