environments are now hashmaps

This commit is contained in:
FelixBrendel
2019-09-30 08:27:23 +02:00
parent beb4e18efc
commit 2882f81e13
9 changed files with 120 additions and 113 deletions
+33 -33
View File
@@ -1,51 +1,51 @@
(import "alist.slime")
(define a (make-alist))
(define a (ds::alist::make))
;; a == (())
(assert (= (first a) ()))
(alist-set! a 'key1 'value1)
(ds::alist::set! a 'key1 'value1)
;; a == (key1: value1)
(assert (= (alist-get a 'key1) 'value1))
(assert (alist-key-exists? a 'key1))
(assert (not (alist-key-exists? a 'key2)))
(assert (= (ds::alist::get a 'key1) 'value1))
(assert (ds::alist::key-exists? a 'key1))
(assert (not (ds::alist::key-exists? a 'key2)))
(alist-set! a 'key2 'value2)
(ds::alist::set! a 'key2 'value2)
;; a == (key2: value2,
;; key1: value1)
(assert (= (alist-get a 'key2) 'value2))
(assert (alist-key-exists? a 'key2))
(assert (= (alist-find a 'key2) 0))
(assert (= (alist-find a 'key1) 1))
(assert (= (ds::alist::get a 'key2) 'value2))
(assert (ds::alist::key-exists? a 'key2))
(assert (= (ds::alist::find a 'key2) 0))
(assert (= (ds::alist::find a 'key1) 1))
(assert (= (length (first a)) 2))
(alist-set! a 'key1 'value3)
(ds::alist::set! a 'key1 'value3)
;; a == (key1: value3,
;; key2: value2,
;; key1: value1)
(assert (= (length (first a)) 3))
(assert (= (alist-get a 'key1) 'value3))
(assert (= (ds::alist::get a 'key1) 'value3))
(alist-set-overwrite! a 'key1 'value4)
(ds::alist::set-overwrite! a 'key1 'value4)
;; a == (key1: value4,
;; key2: value2,
;; key1: value1)
(assert (= (length (first a)) 3))
(assert (= (alist-get a 'key1) 'value4))
(assert (= (ds::alist::get a 'key1) 'value4))
(alist-remove! a 'key1)
(ds::alist::remove! a 'key1)
;; a == (key2: value2,
;; key1: value1)
(assert (= (length (first a)) 2))
(assert (= (alist-get a 'key1) 'value1))
(assert (= (alist-get a 'key2) 'value2))
(assert (= (ds::alist::get a 'key1) 'value1))
(assert (= (ds::alist::get a 'key2) 'value2))
;; -------------
@@ -54,48 +54,48 @@
;;
;; -------------
(define p (make-plist))
(define p (ds::plist::make))
;; p == (())
(assert (= (first p) ()))
(plist-set! p :key1 'value1)
(ds::plist::set! p :key1 'value1)
;; p == ((:key1 value1))
(assert (= (plist-get p :key1) 'value1))
(assert (plist-prop-exists? p :key1))
(assert (not (plist-prop-exists? p :key2)))
(assert (= (ds::plist::get p :key1) 'value1))
(assert (ds::plist::prop-exists? p :key1))
(assert (not (ds::plist::prop-exists? p :key2)))
(plist-set! p :key2 'value2)
;; p == ((:key2 value2,
;; :key1 value1))
(assert (= (plist-get p :key2) 'value2))
(assert (plist-prop-exists? p :key2))
(assert (= (plist-find p :key2) 0))
(assert (= (plist-find p :key1) 1))
(assert (= (ds::plist::get p :key2) 'value2))
(assert (ds::plist::prop-exists? p :key2))
(assert (= (ds::plist::find p :key2) 0))
(assert (= (ds::plist::find p :key1) 1))
(assert (= (length (first p)) 4))
(plist-set! p :key1 'value3)
(ds::plist::set! p :key1 'value3)
;; p == ((:key1 value3,
;; :key2 value2,
;; :key1 value1))
(assert (= (length (first p)) 6))
(assert (= (plist-get p :key1) 'value3))
(assert (= (ds::plist::get p :key1) 'value3))
(plist-set-overwrite! p :key1 'value4)
(ds::plist::set-overwrite! p :key1 'value4)
;; p == ((:key1 value4,
;; :key2 value2,
;; :key1 value1))
(assert (= (length (first p)) 6))
(assert (= (plist-get p :key1) 'value4))
(assert (= (ds::plist::get p :key1) 'value4))
(plist-remove! p :key1)
(ds::plist::remove! p :key1)
;; p == ((:key2 value2,
;; :key1 value1))
(assert (= (length (first p)) 4))
(assert (= (plist-get p :key1) 'value1))
(assert (= (plist-get p :key2) 'value2))
(assert (= (ds::plist::get p :key1) 'value1))
(assert (= (ds::plist::get p :key2) 'value2))
@@ -13,5 +13,3 @@
(define (b (:k (begin (break) (a))))
k)
(b))))
(print "k was" (test))