MCPcopy Create free account
hub / github.com/LissaGreense/GO4SQL / TestParseInsertCommand

Function TestParseInsertCommand

parser/parser_test.go:71–99  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

69}
70
71func TestParseInsertCommand(t *testing.T) {
72 tests := []struct {
73 input string
74 expectedTableName string
75 expectedValuesTokens []token.Token
76 }{
77 {"INSERT INTO TBL VALUES();", "TBL", []token.Token{}},
78 {"INSERT INTO TBL VALUES( 'HELLO' );", "TBL", []token.Token{{Type: token.IDENT, Literal: "HELLO"}}},
79 {"INSERT INTO TBL VALUES( 'HELLO', 10 , 'LOL');", "TBL", []token.Token{{Type: token.IDENT, Literal: "HELLO"}, {Type: token.LITERAL, Literal: "10"}, {Type: token.IDENT, Literal: "LOL"}}},
80 {"INSERT INTO TBL VALUES(NULL, 'NULL', null);", "TBL", []token.Token{{Type: token.NULL, Literal: "NULL"}, {Type: token.IDENT, Literal: "NULL"}, {Type: token.IDENT, Literal: "null"}}},
81 }
82
83 for testIndex, tt := range tests {
84 lexer := lexer.RunLexer(tt.input)
85 parserInstance := New(lexer)
86 sequences, err := parserInstance.ParseSequence()
87 if err != nil {
88 t.Fatalf("[%d] Got error from parser: %s", testIndex, err)
89 }
90
91 if len(sequences.Commands) != 1 {
92 t.Fatalf("[%d] sequences does not contain 1 statements. got=%d", testIndex, len(sequences.Commands))
93 }
94
95 if !testInsertStatement(t, sequences.Commands[0], tt.expectedTableName, tt.expectedValuesTokens) {
96 return
97 }
98 }
99}
100
101func testInsertStatement(t *testing.T, command ast.Command, expectedTableName string, expectedValuesTokens []token.Token) bool {
102 if command.TokenLiteral() != "INSERT" {

Callers

nothing calls this directly

Calls 4

RunLexerFunction · 0.92
testInsertStatementFunction · 0.85
ParseSequenceMethod · 0.80
NewFunction · 0.70

Tested by

no test coverage detected