map_test.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package ctn
  2. import (
  3. "testing"
  4. "math/rand"
  5. )
  6. func TestMapBasic(t *testing.T) {
  7. var m = MakeMutMap[string,int](StringCompare,
  8. MakePair("a",1),
  9. MakePair("b",2),
  10. )
  11. m.Insert("c", 3)
  12. m.Insert("c", 4)
  13. m.Delete("b")
  14. { var v, found = m.Lookup("a")
  15. if !(found && v == 1) {
  16. t.Fatalf("wrong behavior for a")
  17. } }
  18. if m.Has("b") {
  19. t.Fatalf("wrong behavior for b")
  20. }
  21. { var v, found = m.Lookup("c")
  22. if !(found && v == 4) {
  23. t.Fatalf("wrong behavior for c")
  24. } }
  25. m.ForEach(func(key string, value int) {
  26. t.Log(key, value)
  27. })
  28. }
  29. // TODO: test for MergedWith, ...
  30. func TestToOrderedMap(t *testing.T) {
  31. var ordered_keys = [] string { "1", "2", "3", "4", "5", "6", "7", "8", "9" }
  32. for trial := 0; trial < 100; trial += 1 {
  33. var h = make(map[string] int)
  34. var keys = make([] string, len(ordered_keys))
  35. for i, key := range ordered_keys {
  36. keys[i] = key
  37. }
  38. rand.Shuffle(len(keys), func(i, j int) {
  39. var tmp = keys[i]
  40. keys[i] = keys[j]
  41. keys[j] = tmp
  42. })
  43. for i, key := range keys {
  44. h[key] = (i+1)
  45. }
  46. var i = 0
  47. ToOrderedMap(h).ForEach(func(key string, value int) {
  48. if key != ordered_keys[i] {
  49. t.Fatalf("keys are not ordered (trial %d)", trial)
  50. }
  51. i += 1
  52. })
  53. }
  54. }