Files
godb/internals/vm/vm_test.go
T

59 lines
1.7 KiB
Go

package vm
import (
"godb/internals/buffer"
"testing"
)
var inputBuffer = buffer.NewInputBuffer()
var statement = NewStatement()
func comapareExpectedAndRetruned(t *testing.T, result, expectedResult PrepareResults, resultingStype, expectedStype statementType) {
if result != expectedResult && resultingStype == expectedStype {
t.Errorf("Expected prepareResult and stype to be: (%v, %v), got: (%v,%v)\n", expectedResult, expectedStype, result, resultingStype)
}
}
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)
comapareExpectedAndRetruned(t, result, test.prepareStatusExpected, statement.stype, test.statementResultExpected)
})
}
}