From 9e66a1aad5025696e90ac3ab2a543c1720cc2b9d Mon Sep 17 00:00:00 2001 From: TakshakRamteke Date: Sun, 26 Jul 2026 23:07:28 +0530 Subject: [PATCH] fix: added some unit tests for vm --- internals/repl/repl_test.go | 8 ++++++ internals/vm/vm_test.go | 50 +++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 internals/repl/repl_test.go create mode 100644 internals/vm/vm_test.go diff --git a/internals/repl/repl_test.go b/internals/repl/repl_test.go new file mode 100644 index 0000000..23b26ec --- /dev/null +++ b/internals/repl/repl_test.go @@ -0,0 +1,8 @@ +package repl + +// TODO + +// in trying to implement unit test for Run we would kinda endup implementing a test which would be somewhat similar to +// e2e test which we already have in place under ../tests directory +// PrintConsole simply prints godb > to the console, so not sure if we would need a test for that +// Skipping unit test for this, while marking it as a TODO diff --git a/internals/vm/vm_test.go b/internals/vm/vm_test.go new file mode 100644 index 0000000..e1701ed --- /dev/null +++ b/internals/vm/vm_test.go @@ -0,0 +1,50 @@ +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 TestPrepareStatementSelect(t *testing.T) { + inputBuffer.Buffer = "select" + + result := statement.PrepareStatements(inputBuffer) + + comapareExpectedAndRetruned(t, result, PrepareSuccess, statement.stype, StatementSelect) +} + +func TestPrepareStatementInsert(t *testing.T) { + inputBuffer.Buffer = "insert 0 hello hello.com" + + result := statement.PrepareStatements(inputBuffer) + + comapareExpectedAndRetruned(t, result, PrepareSuccess, statement.stype, StatementInsert) +} + +func TestPrepareStatementUnrecognized(t *testing.T) { + inputBuffer.Buffer = "something" + + result := statement.PrepareStatements(inputBuffer) + + comapareExpectedAndRetruned(t, result, PrepareUnrecognised, statement.stype, StatementUnrecognized) +} + +func TestPrepareStatementSyntaxError(t *testing.T) { + inputBuffer.Buffer = "insert 0 hello" + + result := statement.PrepareStatements(inputBuffer) + + if result != PrepareSyntaxError { + t.Errorf("Expected prepareResult to be: %v, got: %v\n", PrepareSyntaxError, result) + } +}