1 ;; -*- lexical-binding: t -*-
5 (luna-define-class test-elmo-util (lunit-test-case))
8 (defvar test-elmo-temoporary-file)
10 (luna-define-method lunit-test-case-setup ((case test-elmo-util))
11 (setq test-elmo-temoporary-file
12 (make-temp-file temporary-file-directory)))
14 (luna-define-method lunit-test-case-teardown ((case test-elmo-util))
15 (when (file-exists-p test-elmo-temoporary-file)
16 (delete-file test-elmo-temoporary-file)))
19 (luna-define-method test-elmo-replace-string-as-filename-1 ((case test-elmo-util))
20 "Revert checking replace and recover."
22 (let ((str "/foo//./../bar/"))
24 (elmo-recover-string-from-filename
25 (elmo-replace-string-as-filename str))))))
29 (luna-define-method test-elmo-object-save-1 ((case test-elmo-util))
30 "Check `print-length' let bindings."
31 (let ((list '(1 2 3 4 5 6 7 8 9 10 11 12))
33 (elmo-object-save test-elmo-temoporary-file list)
36 (elmo-object-load test-elmo-temoporary-file)))))
38 (luna-define-method test-elmo-object-save-2 ((case test-elmo-util))
39 "Check `print-level' let bindings."
40 (let ((list '(1 (2 :foo (nil . :bar))))
42 (elmo-object-save test-elmo-temoporary-file list)
45 (elmo-object-load test-elmo-temoporary-file)))))
47 (luna-define-method test-elmo-save-string-1 ((case test-elmo-util))
51 (luna-define-method test-elmo-uniq-list-1 ((case test-elmo-util))
53 (eq nil (elmo-uniq-list nil)))
55 (equal '(1) (elmo-uniq-list '(1))))
57 (equal '(1) (elmo-uniq-list '(1 1))))
59 (equal '(1) (elmo-uniq-list '(1 1 1)))))
61 (luna-define-method test-elmo-uniq-list-2 ((case test-elmo-util))
63 (equal '(1 2 3 4 5 6 nil)
64 (elmo-uniq-list '(1 2 3 4 1 5 6 nil nil 1 1 2))))
66 (equal '("foo") (elmo-uniq-list '("foo" "foo")))))
68 (luna-define-method test-elmo-uniq-list-3 ((case test-elmo-util))
69 "Check using DELETE-FUNCTION"
71 (equal '("foo" "foo") (elmo-uniq-list '("foo" "foo") #'delq)))
73 (equal '(:foo) (elmo-uniq-list '(:foo :foo) #'delq))))
75 (luna-define-method test-elmo-list-insert-1 ((case test-elmo-util))
78 (elmo-list-insert '(1 2 3 5) 4 3)))
81 (elmo-list-insert '(1 2 3 5) 9 :notfound)))
83 ;;; (equal '(1 2 "3" 5 4)
84 ;;; (elmo-list-insert '(1 2 "3" 5) 4 "3"))
87 (luna-define-method test-elmo-list-insert-2 ((case test-elmo-util))
89 (let* ((list1 '(1 2 3 4 5))
91 (elmo-list-insert list1 4 3)
95 ;;; (equal '(1 2 "3" 5 4)
96 ;;; (elmo-list-insert '(1 2 "3" 5) 4 "3"))
98 (defun test-elmo-same-list-p (list1 list2)
99 (let ((clist1 (copy-sequence list1))
100 (clist2 (copy-sequence list2)))
102 (setq clist1 (delq (car list2) clist1))
103 (setq list2 (cdr list2)))
105 (setq clist2 (delq (car list1) clist2))
106 (setq list1 (cdr list1)))
107 (equal (list clist1 clist2) '(nil nil))))
109 (defun test-elmo-same-diff-p (diff1 diff2)
110 (and (test-elmo-same-list-p (car diff1)
112 (test-elmo-same-list-p (nth 1 diff1)
115 (luna-define-method test-elmo-list-diff ((case test-elmo-util))
116 (let ((list1 '(1 2 3))
122 (test-elmo-same-diff-p '(nil nil)
123 (elmo-list-diff nil nil)))
125 (test-elmo-same-diff-p '(nil (1 2 3))
126 (elmo-list-diff nil list1)))
128 (test-elmo-same-diff-p '((1 2 3) nil)
129 (elmo-list-diff list1 nil)))
131 (test-elmo-same-diff-p '(nil nil)
132 (elmo-list-diff list1 list1)))
134 (test-elmo-same-diff-p '(nil (4))
135 (elmo-list-diff list1 list2)))
137 (test-elmo-same-diff-p '((3) (4))
138 (elmo-list-diff list1 list3)))
140 (test-elmo-same-diff-p '((1 2 3) (4 5 6))
141 (elmo-list-diff list1 list4)))
143 (test-elmo-same-diff-p '((1 2) (5 6))
144 (elmo-list-diff list3 list4)))
146 (test-elmo-same-diff-p '((1 2) (3 5 6))
147 (elmo-list-diff list3 list5)))))
149 (luna-define-method test-elmo-delete-char-1 ((case test-elmo-util))
151 (string= "f" (elmo-delete-char ?o "foo")))
153 (string= "f\nf" (elmo-delete-char ?o "foo\nfoo")))
155 (string= "" (elmo-delete-char ?o "oo")))
157 (string= "" (elmo-delete-char ?o ""))))
159 (luna-define-method test-elmo-concat-path-1 ((case test-elmo-util))
163 (elmo-concat-path "/home" "foo")))
166 (elmo-concat-path "/home/" "foo")
167 (elmo-concat-path "/home//" "foo"))))
170 (luna-define-method test-elmo-remove-passwd-1 ((case test-elmo-util))
171 "Check shred password."
172 (let* ((password "cGFzc3dk")
173 (elmo-passwd-alist (list (cons "key" password))))
174 (elmo-remove-passwd "key")
176 (string= "\0\0\0\0\0\0\0\0" password))))
178 (luna-define-method test-elmo-remove-passwd-2 ((case test-elmo-util))
179 "Check remove target pair only. Not rassoc."
180 (let ((password "cGFzc3dk")
181 (elmo-passwd-alist '(("foo" . "key")
184 (elmo-remove-passwd "key")
186 (equal '(("foo" . "key")
188 elmo-passwd-alist))))
190 (luna-define-method test-elmo-remove-passwd-3 ((case test-elmo-util))
192 (let ((password "cGFzc3dk")
193 (elmo-passwd-alist '(("foo" . "key")
197 (elmo-remove-passwd "key")
199 (equal '(("foo" . "key")
201 elmo-passwd-alist))))
203 (luna-define-method test-elmo-passwd-alist-clear-1 ((case test-elmo-util))
204 "Check shred ALL password."
205 (let* ((password1 "cGFzc3dk")
206 (password2 (copy-sequence password1))
207 (elmo-passwd-alist (list (cons "key1" password1)
208 (cons "key2" password2))))
209 (elmo-passwd-alist-clear)
211 (string= "\0\0\0\0\0\0\0\0" password1))
213 (string= "\0\0\0\0\0\0\0\0" password2))))
215 (luna-define-method test-elmo-address-quote-specials-1 ((case test-elmo-util))
218 (string= "\"dot.atom.text\""
219 (elmo-address-quote-specials "dot.atom.text")))
222 (elmo-address-quote-specials "..."))))
224 (luna-define-method test-elmo-address-quote-specials-2 ((case test-elmo-util))
228 "atext!#$%&'*+-/=?^_`{|}~"
229 (elmo-address-quote-specials "atext!#$%&'*+-/=?^_`{|}~"))))
231 (luna-define-method test-elmo-elmo-flatten-1 ((case test-elmo-util))
236 (elmo-flatten '(1 2 (3 4 5))))))
238 (luna-define-method test-elmo-number-set-member-1 ((case test-elmo-util))
242 (elmo-number-set-member 1 '((1 . 99)))))
245 (elmo-number-set-member 99 '((1 . 99))))))
247 (luna-define-method test-elmo-number-set-member-2 ((case test-elmo-util))
250 (null (elmo-number-set-member 0 '((1 . 99)))))
252 (null (elmo-number-set-member 100 '((1 . 99))))))
254 (luna-define-method test-elmo-number-set-append-list-1 ((case test-elmo-util))
258 (elmo-number-set-append-list '((1 . 99)) '(100)))))
260 (luna-define-method test-elmo-number-set-append-1 ((case test-elmo-util))
264 (elmo-number-set-append '((1 . 99)) 100))))
266 (luna-define-method test-elmo-number-set-delete-1 ((case test-elmo-util))
270 (elmo-number-set-delete '(1 2 3) 1))))
272 (luna-define-method test-elmo-number-set-delete-2 ((case test-elmo-util))
276 (elmo-number-set-delete '(1 2 3) 2))))
278 (luna-define-method test-elmo-number-set-delete-3 ((case test-elmo-util))
282 (elmo-number-set-delete '(1 2 3) 3))))
284 (luna-define-method test-elmo-number-set-delete-4 ((case test-elmo-util))
288 (elmo-number-set-delete '((1 . 100)) 1))))
290 (luna-define-method test-elmo-number-set-delete-5 ((case test-elmo-util))
293 (equal '(1 (3 . 100))
294 (elmo-number-set-delete '((1 . 100)) 2))))
296 (luna-define-method test-elmo-number-set-delete-6 ((case test-elmo-util))
299 (equal '((1 . 49) (51 . 100))
300 (elmo-number-set-delete '((1 . 100)) 50))))
302 (luna-define-method test-elmo-number-set-delete-7 ((case test-elmo-util))
305 (equal '((1 . 98) 100)
306 (elmo-number-set-delete '((1 . 100)) 99))))
308 (luna-define-method test-elmo-number-set-delete-8 ((case test-elmo-util))
312 (elmo-number-set-delete '((1 . 100)) 100))))
314 (luna-define-method test-elmo-number-set-delete-list-1 ((case test-elmo-util))
318 (elmo-number-set-delete-list '((1 . 100)) '(100)))))
320 (luna-define-method test-elmo-number-set-to-number-list-1 ((case test-elmo-util))
323 (equal '(1 2 3 4 5 6 7 8 9)
324 (elmo-number-set-to-number-list '((1 . 9)))))
327 (elmo-number-set-to-number-list '(1)))))
329 (luna-define-method test-elmo-delete-cr-1 ((case test-elmo-util))
330 (lunit-assert (string= "" (elmo-delete-cr "")))
331 (lunit-assert (string= "\n" (elmo-delete-cr "\r\n")))
332 (lunit-assert (string= "\n\n" (elmo-delete-cr "\r\n\n")))
333 (lunit-assert (string= "\n\n" (elmo-delete-cr "\r\n\r\n"))))