(t *testing.T)
| 709 | } |
| 710 | |
| 711 | func 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 | |
| 754 | func TestParseUpdateCommandWithWhere(t *testing.T) { |
| 755 | tests := []struct { |
nothing calls this directly
no test coverage detected