1
0

dbleveldb_test.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. package dbleveldb_test
  2. import (
  3. "os"
  4. "testing"
  5. "imuslab.com/zoraxy/mod/database/dbleveldb"
  6. )
  7. func TestNewDB(t *testing.T) {
  8. path := "/tmp/testdb"
  9. defer os.RemoveAll(path)
  10. db, err := dbleveldb.NewDB(path)
  11. if err != nil {
  12. t.Fatalf("Failed to create new DB: %v", err)
  13. }
  14. defer db.Close()
  15. }
  16. func TestNewTable(t *testing.T) {
  17. path := "/tmp/testdb"
  18. defer os.RemoveAll(path)
  19. db, err := dbleveldb.NewDB(path)
  20. if err != nil {
  21. t.Fatalf("Failed to create new DB: %v", err)
  22. }
  23. defer db.Close()
  24. err = db.NewTable("testTable")
  25. if err != nil {
  26. t.Fatalf("Failed to create new table: %v", err)
  27. }
  28. }
  29. func TestTableExists(t *testing.T) {
  30. path := "/tmp/testdb"
  31. defer os.RemoveAll(path)
  32. db, err := dbleveldb.NewDB(path)
  33. if err != nil {
  34. t.Fatalf("Failed to create new DB: %v", err)
  35. }
  36. defer db.Close()
  37. db.NewTable("testTable")
  38. if !db.TableExists("testTable") {
  39. t.Fatalf("Table should exist")
  40. }
  41. }
  42. func TestDropTable(t *testing.T) {
  43. path := "/tmp/testdb"
  44. defer os.RemoveAll(path)
  45. db, err := dbleveldb.NewDB(path)
  46. if err != nil {
  47. t.Fatalf("Failed to create new DB: %v", err)
  48. }
  49. defer db.Close()
  50. db.NewTable("testTable")
  51. err = db.DropTable("testTable")
  52. if err != nil {
  53. t.Fatalf("Failed to drop table: %v", err)
  54. }
  55. if db.TableExists("testTable") {
  56. t.Fatalf("Table should not exist")
  57. }
  58. }
  59. func TestWriteAndRead(t *testing.T) {
  60. path := "/tmp/testdb"
  61. defer os.RemoveAll(path)
  62. db, err := dbleveldb.NewDB(path)
  63. if err != nil {
  64. t.Fatalf("Failed to create new DB: %v", err)
  65. }
  66. defer db.Close()
  67. db.NewTable("testTable")
  68. err = db.Write("testTable", "testKey", "testValue")
  69. if err != nil {
  70. t.Fatalf("Failed to write to table: %v", err)
  71. }
  72. var value string
  73. err = db.Read("testTable", "testKey", &value)
  74. if err != nil {
  75. t.Fatalf("Failed to read from table: %v", err)
  76. }
  77. if value != "testValue" {
  78. t.Fatalf("Expected 'testValue', got '%v'", value)
  79. }
  80. }
  81. func TestListTable(t *testing.T) {
  82. path := "/tmp/testdb"
  83. defer os.RemoveAll(path)
  84. db, err := dbleveldb.NewDB(path)
  85. if err != nil {
  86. t.Fatalf("Failed to create new DB: %v", err)
  87. }
  88. defer db.Close()
  89. db.NewTable("testTable")
  90. err = db.Write("testTable", "testKey1", "testValue1")
  91. if err != nil {
  92. t.Fatalf("Failed to write to table: %v", err)
  93. }
  94. err = db.Write("testTable", "testKey2", "testValue2")
  95. if err != nil {
  96. t.Fatalf("Failed to write to table: %v", err)
  97. }
  98. result, err := db.ListTable("testTable")
  99. if err != nil {
  100. t.Fatalf("Failed to list table: %v", err)
  101. }
  102. if len(result) != 2 {
  103. t.Fatalf("Expected 2 entries, got %v", len(result))
  104. }
  105. expected := map[string]string{
  106. "testTable/testKey1": "\"testValue1\"",
  107. "testTable/testKey2": "\"testValue2\"",
  108. }
  109. for _, entry := range result {
  110. key := string(entry[0])
  111. value := string(entry[1])
  112. if expected[key] != value {
  113. t.Fatalf("Expected value '%v' for key '%v', got '%v'", expected[key], key, value)
  114. }
  115. }
  116. }