memory_test.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package ezdb
  2. import (
  3. "fmt"
  4. "testing"
  5. )
  6. func TestMemory(t *testing.T) {
  7. type Student struct {
  8. Name string `json:"name"`
  9. Age int `json:"age"`
  10. }
  11. collection := Memory[*Student](nil)
  12. cmp := func(expected, actual *Student) error {
  13. if expected == nil && actual != nil {
  14. return fmt.Errorf("expected no student (got %v)", actual)
  15. } else if expected != nil && actual == nil {
  16. return fmt.Errorf("expected student %v (got nil)", expected)
  17. }
  18. if actual.Name != expected.Name {
  19. return fmt.Errorf("student has wrong name (expected '%s', got '%s')", expected.Name, actual.Name)
  20. } else if actual.Age != expected.Age {
  21. return fmt.Errorf("student has wrong age (expected '%d', got '%d')", expected.Age, actual.Age)
  22. }
  23. return nil
  24. }
  25. tester := &CollectionTester[*Student]{
  26. C: collection,
  27. Cmp: cmp,
  28. Data: map[string]*Student{
  29. "annie": {Name: "Annie", Age: 32},
  30. "ben": {Name: "Ben", Age: 50},
  31. "clive": {Name: "Clive", Age: 21},
  32. },
  33. }
  34. named := func(name string, do func() error) func() {
  35. return func() {
  36. if err := do(); err != nil {
  37. t.Errorf("failed test %q: %v", name, err)
  38. } else {
  39. t.Logf("passed test %q", name)
  40. }
  41. }
  42. }
  43. sequence := []func(){
  44. named("init 1", tester.Init),
  45. named("has", tester.Has),
  46. named("get", tester.Get),
  47. named("getAll", tester.GetAll),
  48. named("deleteOne 1", tester.DeleteOne),
  49. named("deleteOne 2", tester.DeleteOne),
  50. named("init 2", tester.Init),
  51. named("iterCount", tester.IterCount),
  52. named("iterSortKeys", tester.IterSortKeys),
  53. named("deleteAll", tester.DeleteAll),
  54. named("close", tester.Close),
  55. }
  56. for _, do := range sequence {
  57. do()
  58. }
  59. }