diff --git a/codegen_test.go b/codegen_test.go new file mode 100644 index 00000000..58e54cb4 --- /dev/null +++ b/codegen_test.go @@ -0,0 +1 @@ +package lbadd diff --git a/command_test.go b/command_test.go new file mode 100644 index 00000000..15e81d5c --- /dev/null +++ b/command_test.go @@ -0,0 +1,88 @@ +package lbadd + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func Test_newCommand(t *testing.T) { + type args struct { + cmd string + } + + tests := []struct { + name string + args args + want command + }{ + { + name: "unknown command", + args: args{cmd: "uh oh"}, + want: 0, + }, + { + name: "insert", + args: args{cmd: "insert"}, + want: 1, + }, + { + name: "select", + args: args{cmd: "select"}, + want: 2, + }, + { + name: "delete", + args: args{cmd: "delete"}, + want: 3, + }, + { + name: "mixed casing insert", + args: args{cmd: "iNsErT"}, + want: 1, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := newCommand(tt.args.cmd) + assert.Equal(t, tt.want, got) + }) + } +} + +func Test_command_String(t *testing.T) { + tests := []struct { + name string + c command + want string + }{ + { + name: "unknown", + c: 0, + want: "UNKNOWN", + }, + { + name: "insert", + c: 1, + want: "INSERT", + }, + { + name: "select", + c: 2, + want: "SELECT", + }, + { + name: "delete", + c: 3, + want: "DELETE", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := tt.c.String() + assert.Equal(t, tt.want, got) + }) + } +} diff --git a/executor_test.go b/executor_test.go index 58e54cb4..0036a108 100644 --- a/executor_test.go +++ b/executor_test.go @@ -1 +1,32 @@ package lbadd + +import "testing" + +func Test_executor_execute(t *testing.T) { + type ( + fields struct { + db *db + } + args struct { + instr instruction + } + ) + + tests := []struct { + name string + fields fields + args args + wantErr bool + }{ + // TODO: Add test cases. + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + e := &executor{db: tt.fields.db} + if err := e.execute(tt.args.instr); (err != nil) != tt.wantErr { + t.Errorf("executor.execute() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/parser.go b/parser.go index 0da1ea10..7e6defb7 100644 --- a/parser.go +++ b/parser.go @@ -101,10 +101,10 @@ func (p *parser) doParse() (query, error) { } } -// TODO var reservedWords = []string{ - "(", ")", ">=", "<=", "!=", ",", "=", ">", "<", "SELECT", "INSERT INTO", "VALUES", "UPDATE", "DELETE FROM", - "WHERE", "FROM", "SET", + "(", ")", ">=", "<=", "!=", ",", "=", ">", "<", + "SELECT", "INSERT INTO", "VALUES", "UPDATE", + "DELETE FROM", "WHERE", "FROM", "SET", } func (p *parser) peek() string { diff --git a/parser_test.go b/parser_test.go index 226489ed..a01019de 100644 --- a/parser_test.go +++ b/parser_test.go @@ -7,13 +7,6 @@ import ( "github.com/stretchr/testify/assert" ) -// queryType queryType -// tableName string -// conditions []condition -// updates map[string]string -// inserts [][]string -// fields []string - func TestParser(t *testing.T) { cases := []struct { name string