about summary refs log tree commit diff
path: root/users/wpcarro/emacs/pkgs/al/tests.el
blob: 6556ddabc3599e98c3df2c9540b3bd063f761e83 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Dependencies
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(require 'ert)
(require 'al)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Tests
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(ert-deftest al-has-key? ()
  (and
   (al-has-key? 'fname '((fname . "William")))
   (not (al-has-key? 'lname '((fname . "William"))))))

(ert-deftest al-get ()
  (let ((xs (->> (al-new)
                 (al-set 'fname "John")
                 (al-set 'employed? nil))))
    (and
     (string= "John" (al-get 'fname xs))
     (string= "Cleese" (al-get 'lname xs "Cleese"))
     ;; Test that the value of nil is returned even when a default is defined,
     ;; which could be a subtle bug in the typical Elisp pattern of supporting
     ;; defaults with: (or foo default).
     (eq nil (al-get 'employed? xs))
     (eq nil (al-get 'employed? xs "default")))))

(ert-deftest al-has-value? ()
  (and
   (al-has-value? "William" '((fname . "William")))
   (not (al-has-key? "John" '((fname . "William"))))))

(ert-deftest al-map-keys ()
  (equal '((2 . one)
           (3 . two))
         (al-map-keys #'1+
                      '((1 . one)
                        (2 . two)))))

(ert-deftest al-map-values ()
  (equal '((one . 2)
           (two . 3))
         (al-map-values #'1+
                        '((one . 1)
                          (two . 2)))))