55 lines
1.6 KiB
Go
55 lines
1.6 KiB
Go
package vm
|
|
|
|
import (
|
|
"godb/internals/buffer"
|
|
"testing"
|
|
)
|
|
|
|
var inputBuffer = buffer.NewInputBuffer()
|
|
|
|
var statement = NewStatement()
|
|
|
|
func TestVM(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
input string
|
|
prepareStatusExpected PrepareResults
|
|
statementResultExpected statementType
|
|
}{
|
|
{
|
|
name: "Testing Select Statement",
|
|
input: "select",
|
|
prepareStatusExpected: PrepareSuccess,
|
|
statementResultExpected: StatementSelect,
|
|
},
|
|
{
|
|
name: "Testing Insert Statement",
|
|
input: "insert 0 hello hello.com",
|
|
prepareStatusExpected: PrepareSuccess,
|
|
statementResultExpected: StatementInsert,
|
|
},
|
|
{
|
|
name: "Testing Unrecognized Statement",
|
|
input: "something",
|
|
prepareStatusExpected: PrepareUnrecognised,
|
|
statementResultExpected: StatementUnrecognized,
|
|
},
|
|
{
|
|
name: "Testing Syntax Errors",
|
|
input: "insert 0 hello",
|
|
prepareStatusExpected: PrepareSyntaxError,
|
|
statementResultExpected: StatementUnrecognized,
|
|
},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
t.Run(test.name, func(t *testing.T) {
|
|
inputBuffer.Buffer = test.input
|
|
result := statement.PrepareStatements(inputBuffer)
|
|
if result != test.prepareStatusExpected && statement.stype == test.statementResultExpected {
|
|
t.Errorf("Expected prepareResult and stype to be: (%v, %v), got: (%v,%v)\n", test.prepareStatusExpected, test.statementResultExpected, result, statement.stype)
|
|
}
|
|
})
|
|
}
|
|
}
|