package dbleveldb_test import ( "os" "testing" "imuslab.com/zoraxy/mod/database/dbleveldb" ) func TestNewDB(t *testing.T) { path := "/tmp/testdb" defer os.RemoveAll(path) db, err := dbleveldb.NewDB(path) if err != nil { t.Fatalf("Failed to create new DB: %v", err) } defer db.Close() } func TestNewTable(t *testing.T) { path := "/tmp/testdb" defer os.RemoveAll(path) db, err := dbleveldb.NewDB(path) if err != nil { t.Fatalf("Failed to create new DB: %v", err) } defer db.Close() err = db.NewTable("testTable") if err != nil { t.Fatalf("Failed to create new table: %v", err) } } func TestTableExists(t *testing.T) { path := "/tmp/testdb" defer os.RemoveAll(path) db, err := dbleveldb.NewDB(path) if err != nil { t.Fatalf("Failed to create new DB: %v", err) } defer db.Close() db.NewTable("testTable") if !db.TableExists("testTable") { t.Fatalf("Table should exist") } } func TestDropTable(t *testing.T) { path := "/tmp/testdb" defer os.RemoveAll(path) db, err := dbleveldb.NewDB(path) if err != nil { t.Fatalf("Failed to create new DB: %v", err) } defer db.Close() db.NewTable("testTable") err = db.DropTable("testTable") if err != nil { t.Fatalf("Failed to drop table: %v", err) } if db.TableExists("testTable") { t.Fatalf("Table should not exist") } } func TestWriteAndRead(t *testing.T) { path := "/tmp/testdb" defer os.RemoveAll(path) db, err := dbleveldb.NewDB(path) if err != nil { t.Fatalf("Failed to create new DB: %v", err) } defer db.Close() db.NewTable("testTable") err = db.Write("testTable", "testKey", "testValue") if err != nil { t.Fatalf("Failed to write to table: %v", err) } var value string err = db.Read("testTable", "testKey", &value) if err != nil { t.Fatalf("Failed to read from table: %v", err) } if value != "testValue" { t.Fatalf("Expected 'testValue', got '%v'", value) } } func TestListTable(t *testing.T) { path := "/tmp/testdb" defer os.RemoveAll(path) db, err := dbleveldb.NewDB(path) if err != nil { t.Fatalf("Failed to create new DB: %v", err) } defer db.Close() db.NewTable("testTable") err = db.Write("testTable", "testKey1", "testValue1") if err != nil { t.Fatalf("Failed to write to table: %v", err) } err = db.Write("testTable", "testKey2", "testValue2") if err != nil { t.Fatalf("Failed to write to table: %v", err) } result, err := db.ListTable("testTable") if err != nil { t.Fatalf("Failed to list table: %v", err) } if len(result) != 2 { t.Fatalf("Expected 2 entries, got %v", len(result)) } expected := map[string]string{ "testTable/testKey1": "\"testValue1\"", "testTable/testKey2": "\"testValue2\"", } for _, entry := range result { key := string(entry[0]) value := string(entry[1]) if expected[key] != value { t.Fatalf("Expected value '%v' for key '%v', got '%v'", expected[key], key, value) } } }