(import "alist.slime") (define a (make-alist)) ;; a == () (assert (= (first a) ())) (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))) (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 (= (length (first a)) 2)) (alist-set! a 'key1 'value3) ;; a == (key1: value3, ;; key2: value2, ;; key1: value1) (assert (= (length (first a)) 3)) (assert (= (alist-get a 'key1) 'value3)) (alist-set-overwrite! a 'key1 'value4) ;; a == (key1: value4, ;; key2: value2, ;; key1: value1) (assert (= (length (first a)) 3)) (assert (= (alist-get a 'key1) 'value4)) (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))