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

Function TestParseUpdateCommand

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

Source from the content-addressed store, hash-verified

709}
710
711func TestParseUpdateCommand(t *testing.T) {
712 tests := []struct {
713 input string
714 expectedTableName string
715 expectedChanges map[token.Token]ast.Anonymitifier
716 }{
717 {
718 input: "UPDATE tbl SET colName TO 5;", expectedTableName: "tbl", expectedChanges: map[token.Token]ast.Anonymitifier{
719 {Type: token.IDENT, Literal: "colName"}: {Token: token.Token{Type: token.LITERAL, Literal: "5"}},
720 },
721 },
722 {
723 input: "UPDATE tbl1 SET colName1 TO 'hi hello', colName2 TO 5;", expectedTableName: "tbl1", expectedChanges: map[token.Token]ast.Anonymitifier{
724 {Type: token.IDENT, Literal: "colName1"}: {Token: token.Token{Type: token.IDENT, Literal: "hi hello"}},
725 {Type: token.IDENT, Literal: "colName2"}: {Token: token.Token{Type: token.LITERAL, Literal: "5"}},
726 },
727 },
728 {
729 input: "UPDATE tbl1 SET colName1 TO NULL, colName2 TO 'NULL';", expectedTableName: "tbl1", expectedChanges: map[token.Token]ast.Anonymitifier{
730 {Type: token.IDENT, Literal: "colName1"}: {Token: token.Token{Type: token.NULL, Literal: "NULL"}},
731 {Type: token.IDENT, Literal: "colName2"}: {Token: token.Token{Type: token.LITERAL, Literal: "NULL"}},
732 },
733 },
734 }
735
736 for testIndex, tt := range tests {
737 lexer := lexer.RunLexer(tt.input)
738 parserInstance := New(lexer)
739 sequences, err := parserInstance.ParseSequence()
740 if err != nil {
741 t.Fatalf("[%d] Got error from parser: %s", testIndex, err)
742 }
743
744 if len(sequences.Commands) != 1 {
745 t.Fatalf("[%d] sequences does not contain 1 statements. got=%d", testIndex, len(sequences.Commands))
746 }
747
748 if !testUpdateStatement(t, sequences.Commands[0], tt.expectedTableName, tt.expectedChanges) {
749 return
750 }
751 }
752}
753
754func TestParseUpdateCommandWithWhere(t *testing.T) {
755 tests := []struct {

Callers

nothing calls this directly

Calls 4

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

Tested by

no test coverage detected