2026-07-26 23:07:28 +05:30
package vm
import (
"godb/internals/buffer"
"testing"
)
var inputBuffer = buffer . NewInputBuffer ()
var statement = NewStatement ()
2026-07-29 01:04:00 +05:30
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 ,
},
}
2026-07-26 23:07:28 +05:30
2026-07-29 01:04:00 +05:30
for _ , test := range tests {
t . Run ( test . name , func ( t * testing . T ) {
inputBuffer . Buffer = test . input
result := statement . PrepareStatements ( inputBuffer )
2026-07-29 01:07:55 +05:30
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 )
}
2026-07-29 01:04:00 +05:30
})
2026-07-26 23:07:28 +05:30
}
}