123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- /* tslint:disable:no-unused-expression */
- import { expect } from "chai";
-
- import * as AST from "../src/ast";
- import { isError } from "../src/error";
- import Lexer from "../src/lexer";
- import Parser from "../src/parser";
-
- const parse = (source: string): AST.Statement[] => {
- const tokens = new Lexer(source).scan();
- if (isError(tokens)) {
- throw tokens.message;
- } else {
- const tree = new Parser(tokens).parse();
- if (isError(tree)) {
- throw tree.message;
- }
- return tree;
- }
- };
-
- describe("Parser", () => {
- it("should parse a number selection", () => {
- const tree = parse("select 5");
- expect(tree).to.deep.equal([
- new AST.Statement({
- arguments: [new AST.Number(5)],
- type: AST.StatementType.SELECT,
- }),
- ]);
- });
-
- it("should parse a multiple number selection", () => {
- const tree = parse("select 5, 6");
- expect(tree).to.deep.equal([
- new AST.Statement({
- arguments: [
- new AST.Number(5),
- new AST.Number(6),
- ],
- type: AST.StatementType.SELECT,
- }),
- ]);
- });
- });
|