From 8cfdd0e856ed2ccc8c8606a58c5a2a35b1ae2ae4 Mon Sep 17 00:00:00 2001 From: Erindcl Date: Wed, 2 Dec 2020 10:35:37 +0800 Subject: [PATCH] test(flink): add flink visitor and listener test --- test/parser/flinksql/listener.test.ts | 12 +++++++----- test/parser/flinksql/visitor.test.ts | 27 +++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 test/parser/flinksql/visitor.test.ts diff --git a/test/parser/flinksql/listener.test.ts b/test/parser/flinksql/listener.test.ts index cbfc5c9..e346622 100644 --- a/test/parser/flinksql/listener.test.ts +++ b/test/parser/flinksql/listener.test.ts @@ -1,6 +1,8 @@ -import SQLParser, { PlSqlParserListener } from '../../../src/parser/plsql'; -// todo 校验关键字提取 -describe('PLSQL Listener Tests', () => { +import +SQLParser, { FlinkSqlParserListener } + from '../../../src/parser/flinksql'; + +describe('Flink SQL Listener Tests', () => { const expectTableName = 'user1'; const sql = `select id,name,sex from ${expectTableName};`; const parser = new SQLParser(); @@ -9,8 +11,8 @@ describe('PLSQL Listener Tests', () => { test('Listener enterTableName', async () => { let result = ''; - class MyListener extends PlSqlParserListener { - enterTable_ref_list(ctx): void { + class MyListener extends FlinkSqlParserListener { + enterTableExpression(ctx): void { result = ctx.getText().toLowerCase(); } } diff --git a/test/parser/flinksql/visitor.test.ts b/test/parser/flinksql/visitor.test.ts new file mode 100644 index 0000000..a3d5bc8 --- /dev/null +++ b/test/parser/flinksql/visitor.test.ts @@ -0,0 +1,27 @@ +import SQLParser, { FlinkSqlParserVisitor } from '../../../src/parser/flinksql'; + +describe('Flink SQL Visitor Tests', () => { + const expectTableName = 'user1'; + const sql = `select id,name,sex from ${expectTableName};`; + const parser = new SQLParser(); + + const parserTree = parser.parse(sql, (error) => { + console.log('Parse error:', error); + }); + + // console.log('Parser tree string:', parser.toString(parserTree)); + + test('Visitor visitTableName', () => { + let result = ''; + class MyVisitor extends FlinkSqlParserVisitor { + visitTableExpression(ctx): void { + result = ctx.getText().toLowerCase(); + super.visitTableExpression(ctx); + } + } + const visitor: any = new MyVisitor(); + visitor.visit(parserTree); + + expect(result).toBe(expectTableName); + }); +});