* test-elmo-localdir.el
[elisp/wanderlust.git] / tests / test-elmo-util.el
1 (require 'lunit)
2 (require 'elmo-util)
3
4 (luna-define-class test-elmo-util (lunit-test-case))
5
6 ;; setup & teardown
7 (defvar test-elmo-temoporary-file)
8
9 (luna-define-method lunit-test-case-setup ((case test-elmo-util))
10   (setq test-elmo-temoporary-file
11         (make-temp-file temporary-file-directory)))
12
13 (luna-define-method lunit-test-case-teardown ((case test-elmo-util))
14   (when (file-exists-p test-elmo-temoporary-file)
15     (delete-file test-elmo-temoporary-file)))
16
17
18 (luna-define-method test-elmo-replace-string-as-filename-1 ((case test-elmo-util))
19   "Revert checking replace and recover."
20   (lunit-assert
21    (let ((str "/foo//./../bar/"))
22      (string= str
23               (elmo-recover-string-from-filename
24                (elmo-replace-string-as-filename str))))))
25
26
27 ;; object save & load
28 (luna-define-method test-elmo-object-save-1 ((case test-elmo-util))
29   "Check `print-length' let bindings."
30   (let ((list '(1 2 3 4 5 6 7 8 9 10 11 12))
31         (print-length 1))
32     (elmo-object-save test-elmo-temoporary-file list)
33     (lunit-assert
34      (equal list
35             (elmo-object-load test-elmo-temoporary-file)))))
36
37 (luna-define-method test-elmo-object-save-2 ((case test-elmo-util))
38   "Check `print-level' let bindings."
39   (let ((list '(1 (2 :foo (nil . :bar))))
40         (print-level 1))
41     (elmo-object-save test-elmo-temoporary-file list)
42     (lunit-assert
43      (equal list
44             (elmo-object-load test-elmo-temoporary-file)))))
45
46 (luna-define-method test-elmo-save-string-1 ((case test-elmo-util))
47   )
48
49 ;; list functions
50 (luna-define-method test-elmo-uniq-list-1 ((case test-elmo-util))
51   (lunit-assert
52    (eq nil (elmo-uniq-list nil)))
53   (lunit-assert
54    (equal '(1) (elmo-uniq-list '(1))))
55   (lunit-assert
56    (equal '(1) (elmo-uniq-list '(1 1))))
57   (lunit-assert
58    (equal '(1) (elmo-uniq-list '(1 1 1)))))
59
60 (luna-define-method test-elmo-uniq-list-2 ((case test-elmo-util))
61   (lunit-assert
62    (equal '(1 2 3 4 5 6 nil)
63           (elmo-uniq-list '(1 2 3 4 1 5 6 nil nil 1 1 2))))
64   (lunit-assert
65    (equal '("foo") (elmo-uniq-list '("foo" "foo")))))
66
67 (luna-define-method test-elmo-uniq-list-3 ((case test-elmo-util))
68   "Check using DELETE-FUNCTION"
69   (lunit-assert
70    (equal '("foo" "foo") (elmo-uniq-list '("foo" "foo") #'delq)))
71   (lunit-assert
72    (equal '(:foo) (elmo-uniq-list '(:foo :foo) #'delq))))
73
74 (luna-define-method test-elmo-list-insert-1 ((case test-elmo-util))
75   (lunit-assert
76    (equal '(1 2 3 4 5)
77           (elmo-list-insert '(1 2 3 5) 4 3)))
78   (lunit-assert
79    (equal '(1 2 3 5 9)
80           (elmo-list-insert '(1 2 3 5) 9 :notfound)))
81 ;;; memq vs. member
82 ;;;   (equal '(1 2 "3" 5 4)
83 ;;;       (elmo-list-insert '(1 2 "3" 5) 4 "3"))
84    )
85
86 (luna-define-method test-elmo-list-insert-2 ((case test-elmo-util))
87   "Check not copied"
88   (let* ((list1 '(1 2 3 4 5))
89          (list2 list1))
90     (elmo-list-insert list1 4 3)
91     (lunit-assert
92      (eq list1 list2))))
93 ;;; memq vs. member
94 ;;;   (equal '(1 2 "3" 5 4)
95 ;;;       (elmo-list-insert '(1 2 "3" 5) 4 "3"))
96
97 (luna-define-method test-elmo-delete-char-1 ((case test-elmo-util))
98   (lunit-assert
99    (string= "f" (elmo-delete-char ?o "foo")))
100   (lunit-assert
101    (string= "f\nf" (elmo-delete-char ?o "foo\nfoo")))
102   (lunit-assert
103    (string= "" (elmo-delete-char ?o  "oo")))
104   (lunit-assert
105    (string= "" (elmo-delete-char ?o  ""))))
106
107 (luna-define-method test-elmo-concat-path-1 ((case test-elmo-util))
108   (lunit-assert
109    (string=
110     "/home/foo"
111     (elmo-concat-path "/home" "foo")))
112   (lunit-assert
113    (string=
114     (elmo-concat-path "/home/" "foo")
115     (elmo-concat-path "/home//" "foo"))))
116
117
118 (luna-define-method test-elmo-remove-passwd-1 ((case test-elmo-util))
119   "Check shred password."
120   (let* ((password "cGFzc3dk")
121          (elmo-passwd-alist (list (cons "key" password))))
122     (elmo-remove-passwd "key")
123     (lunit-assert
124      (string= "\0\0\0\0\0\0\0\0" password))))
125
126 (luna-define-method test-elmo-remove-passwd-2 ((case test-elmo-util))
127   "Check remove target pair only.  Not rassoc."
128   (let ((password "cGFzc3dk")
129         (elmo-passwd-alist '(("foo" . "key")
130                              ("key" . "ok")
131                              ("bar" . "baz"))))
132     (elmo-remove-passwd "key")
133     (lunit-assert
134      (equal '(("foo" . "key")
135               ("bar" . "baz"))
136             elmo-passwd-alist))))
137
138 (luna-define-method test-elmo-remove-passwd-3 ((case test-elmo-util))
139   "Multiple same key."
140   (let ((password "cGFzc3dk")
141         (elmo-passwd-alist '(("foo" . "key")
142                              ("key" . "ok")
143                              ("key" . "ok2")
144                              ("bar" . "baz"))))
145     (elmo-remove-passwd "key")
146     (lunit-assert
147      (equal '(("foo" . "key")
148               ("bar" . "baz"))
149             elmo-passwd-alist))))
150
151 (luna-define-method test-elmo-passwd-alist-clear-1 ((case test-elmo-util))
152   "Check shred ALL password."
153   (let* ((password1 "cGFzc3dk")
154          (password2 (copy-sequence password1))
155          (elmo-passwd-alist (list (cons "key1" password1)
156                                   (cons "key2" password2))))
157     (elmo-passwd-alist-clear)
158     (lunit-assert
159      (string= "\0\0\0\0\0\0\0\0" password1))
160     (lunit-assert
161      (string= "\0\0\0\0\0\0\0\0" password2))))
162
163 (luna-define-method test-elmo-address-quote-specials-1 ((case test-elmo-util))
164   ""
165   (lunit-assert
166    (string= "\"dot.atom.text\""
167             (elmo-address-quote-specials "dot.atom.text")))
168   (lunit-assert
169    (string= "\"...\""
170             (elmo-address-quote-specials "..."))))
171
172 (luna-define-method test-elmo-address-quote-specials-2 ((case test-elmo-util))
173   ""
174   (lunit-assert
175    (string=
176     "atext!#$%&'*+-/=?^_`{|}~"
177     (elmo-address-quote-specials "atext!#$%&'*+-/=?^_`{|}~"))))
178
179 (luna-define-method test-elmo-elmo-flatten-1 ((case test-elmo-util))
180   ""
181   (lunit-assert
182    (equal
183     '(1 2 3 4 5)
184     (elmo-flatten '(1 2 (3 4 5))))))
185
186 (luna-define-method test-elmo-number-set-member-1 ((case test-elmo-util))
187   "Check edge."
188   (lunit-assert
189    (equal '((1 . 99))
190           (elmo-number-set-member 1 '((1 . 99)))))
191   (lunit-assert
192    (equal '((1 . 99))
193           (elmo-number-set-member 99 '((1 . 99))))))
194
195 (luna-define-method test-elmo-number-set-member-2 ((case test-elmo-util))
196   "Check edge."
197   (lunit-assert
198    (null (elmo-number-set-member 0 '((1 . 99)))))
199   (lunit-assert
200    (null (elmo-number-set-member 100 '((1 . 99))))))
201
202 (luna-define-method test-elmo-number-set-append-list-1 ((case test-elmo-util))
203   "Simple testcase."
204   (lunit-assert
205    (equal '((1 . 100))
206           (elmo-number-set-append-list '((1 . 99)) '(100)))))
207
208 (luna-define-method test-elmo-number-set-append-1 ((case test-elmo-util))
209   "Simple testcase."
210   (lunit-assert
211    (equal '((1 . 100))
212           (elmo-number-set-append '((1 . 99)) 100))))
213
214 (luna-define-method test-elmo-number-set-to-number-list-1 ((case test-elmo-util))
215   "Simple testcase."
216   (lunit-assert
217    (equal '(1 2 3 4 5 6 7 8 9)
218           (elmo-number-set-to-number-list '((1 . 9)))))
219   (lunit-assert
220    (equal '(1)
221           (elmo-number-set-to-number-list '(1)))))