You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

102 regels
2.4 KiB

  1. (import "alist.slime")
  2. (define a (ds::alist::make))
  3. ;; a == (())
  4. (assert (= (first a) ()))
  5. (ds::alist::set! a 'key1 'value1)
  6. ;; a == (key1: value1)
  7. (assert (= (ds::alist::get a 'key1) 'value1))
  8. (assert (ds::alist::key-exists? a 'key1))
  9. (assert (not (ds::alist::key-exists? a 'key2)))
  10. (ds::alist::set! a 'key2 'value2)
  11. ;; a == (key2: value2,
  12. ;; key1: value1)
  13. (assert (= (ds::alist::get a 'key2) 'value2))
  14. (assert (ds::alist::key-exists? a 'key2))
  15. (assert (= (ds::alist::find a 'key2) 0))
  16. (assert (= (ds::alist::find a 'key1) 1))
  17. (assert (= (length (first a)) 2))
  18. (ds::alist::set! a 'key1 'value3)
  19. ;; a == (key1: value3,
  20. ;; key2: value2,
  21. ;; key1: value1)
  22. (assert (= (length (first a)) 3))
  23. (assert (= (ds::alist::get a 'key1) 'value3))
  24. (ds::alist::set-overwrite! a 'key1 'value4)
  25. ;; a == (key1: value4,
  26. ;; key2: value2,
  27. ;; key1: value1)
  28. (assert (= (length (first a)) 3))
  29. (assert (= (ds::alist::get a 'key1) 'value4))
  30. (ds::alist::remove! a 'key1)
  31. ;; a == (key2: value2,
  32. ;; key1: value1)
  33. (assert (= (length (first a)) 2))
  34. (assert (= (ds::alist::get a 'key1) 'value1))
  35. (assert (= (ds::alist::get a 'key2) 'value2))
  36. ;; -------------
  37. ;;
  38. ;; PLISTS
  39. ;;
  40. ;; -------------
  41. (define p (ds::plist::make))
  42. ;; p == (())
  43. (assert (= (first p) ()))
  44. (ds::plist::set! p :key1 'value1)
  45. ;; p == ((:key1 value1))
  46. (assert (= (ds::plist::get p :key1) 'value1))
  47. (assert (ds::plist::prop-exists? p :key1))
  48. (assert (not (ds::plist::prop-exists? p :key2)))
  49. (ds::plist::set! p :key2 'value2)
  50. ;; p == ((:key2 value2,
  51. ;; :key1 value1))
  52. (assert (= (ds::plist::get p :key2) 'value2))
  53. (assert (ds::plist::prop-exists? p :key2))
  54. (assert (= (ds::plist::find p :key2) 0))
  55. (assert (= (ds::plist::find p :key1) 1))
  56. (assert (= (length (first p)) 4))
  57. (ds::plist::set! p :key1 'value3)
  58. ;; p == ((:key1 value3,
  59. ;; :key2 value2,
  60. ;; :key1 value1))
  61. (assert (= (length (first p)) 6))
  62. (assert (= (ds::plist::get p :key1) 'value3))
  63. (ds::plist::set-overwrite! p :key1 'value4)
  64. ;; p == ((:key1 value4,
  65. ;; :key2 value2,
  66. ;; :key1 value1))
  67. ;; (assert (= (length (first p)) 6))
  68. ;; (assert (= (ds::plist::get p :key1) 'value4))
  69. ;; (ds::plist::remove! p :key1)
  70. ;; ;; p == ((:key2 value2,
  71. ;; ;; :key1 value1))
  72. ;; (assert (= (length (first p)) 4))
  73. ;; (assert (= (ds::plist::get p :key1) 'value1))
  74. ;; (assert (= (ds::plist::get p :key2) 'value2))