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) }) } }