* test-elmo-util.el (test-elmo-number-set-delete-1): New testcase.
[elisp/wanderlust.git] / tests / test-elmo-util.el
index 0bc877e..457a011 100644 (file)
@@ -1,7 +1,6 @@
 (require 'lunit)
 (require 'elmo-util)
 
-
 (luna-define-class test-elmo-util (lunit-test-case))
 
 ;; setup & teardown
        (make-temp-file temporary-file-directory)))
 
 (luna-define-method lunit-test-case-teardown ((case test-elmo-util))
-  (delete-file test-elmo-temoporary-file))
+  (when (file-exists-p test-elmo-temoporary-file)
+    (delete-file test-elmo-temoporary-file)))
 
 
 (luna-define-method test-elmo-replace-string-as-filename-1 ((case test-elmo-util))
+  "Revert checking replace and recover."
   (lunit-assert
    (let ((str "/foo//./../bar/"))
      (string= str
               (elmo-replace-string-as-filename str))))))
 
 
+;; object save & load
 (luna-define-method test-elmo-object-save-1 ((case test-elmo-util))
+  "Check `print-length' let bindings."
   (let ((list '(1 2 3 4 5 6 7 8 9 10 11 12))
-       (print-length 1)
+       (print-length 1))
+    (elmo-object-save test-elmo-temoporary-file list)
+    (lunit-assert
+     (equal list
+           (elmo-object-load test-elmo-temoporary-file)))))
+
+(luna-define-method test-elmo-object-save-2 ((case test-elmo-util))
+  "Check `print-level' let bindings."
+  (let ((list '(1 (2 :foo (nil . :bar))))
        (print-level 1))
     (elmo-object-save test-elmo-temoporary-file list)
     (lunit-assert
      (equal list
            (elmo-object-load test-elmo-temoporary-file)))))
+
+(luna-define-method test-elmo-save-string-1 ((case test-elmo-util))
+  )
+
+;; list functions
+(luna-define-method test-elmo-uniq-list-1 ((case test-elmo-util))
+  (lunit-assert
+   (eq nil (elmo-uniq-list nil)))
+  (lunit-assert
+   (equal '(1) (elmo-uniq-list '(1))))
+  (lunit-assert
+   (equal '(1) (elmo-uniq-list '(1 1))))
+  (lunit-assert
+   (equal '(1) (elmo-uniq-list '(1 1 1)))))
+
+(luna-define-method test-elmo-uniq-list-2 ((case test-elmo-util))
+  (lunit-assert
+   (equal '(1 2 3 4 5 6 nil)
+         (elmo-uniq-list '(1 2 3 4 1 5 6 nil nil 1 1 2))))
+  (lunit-assert
+   (equal '("foo") (elmo-uniq-list '("foo" "foo")))))
+
+(luna-define-method test-elmo-uniq-list-3 ((case test-elmo-util))
+  "Check using DELETE-FUNCTION"
+  (lunit-assert
+   (equal '("foo" "foo") (elmo-uniq-list '("foo" "foo") #'delq)))
+  (lunit-assert
+   (equal '(:foo) (elmo-uniq-list '(:foo :foo) #'delq))))
+
+(luna-define-method test-elmo-list-insert-1 ((case test-elmo-util))
+  (lunit-assert
+   (equal '(1 2 3 4 5)
+         (elmo-list-insert '(1 2 3 5) 4 3)))
+  (lunit-assert
+   (equal '(1 2 3 5 9)
+         (elmo-list-insert '(1 2 3 5) 9 :notfound)))
+;;; memq vs. member
+;;;   (equal '(1 2 "3" 5 4)
+;;;      (elmo-list-insert '(1 2 "3" 5) 4 "3"))
+   )
+
+(luna-define-method test-elmo-list-insert-2 ((case test-elmo-util))
+  "Check not copied"
+  (let* ((list1 '(1 2 3 4 5))
+        (list2 list1))
+    (elmo-list-insert list1 4 3)
+    (lunit-assert
+     (eq list1 list2))))
+;;; memq vs. member
+;;;   (equal '(1 2 "3" 5 4)
+;;;      (elmo-list-insert '(1 2 "3" 5) 4 "3"))
+
+(luna-define-method test-elmo-delete-char-1 ((case test-elmo-util))
+  (lunit-assert
+   (string= "f" (elmo-delete-char ?o "foo")))
+  (lunit-assert
+   (string= "f\nf" (elmo-delete-char ?o "foo\nfoo")))
+  (lunit-assert
+   (string= "" (elmo-delete-char ?o  "oo")))
+  (lunit-assert
+   (string= "" (elmo-delete-char ?o  ""))))
+
+(luna-define-method test-elmo-concat-path-1 ((case test-elmo-util))
+  (lunit-assert
+   (string=
+    "/home/foo"
+    (elmo-concat-path "/home" "foo")))
+  (lunit-assert
+   (string=
+    (elmo-concat-path "/home/" "foo")
+    (elmo-concat-path "/home//" "foo"))))
+
+
+(luna-define-method test-elmo-remove-passwd-1 ((case test-elmo-util))
+  "Check shred password."
+  (let* ((password "cGFzc3dk")
+        (elmo-passwd-alist (list (cons "key" password))))
+    (elmo-remove-passwd "key")
+    (lunit-assert
+     (string= "\0\0\0\0\0\0\0\0" password))))
+
+(luna-define-method test-elmo-remove-passwd-2 ((case test-elmo-util))
+  "Check remove target pair only.  Not rassoc."
+  (let ((password "cGFzc3dk")
+       (elmo-passwd-alist '(("foo" . "key")
+                            ("key" . "ok")
+                            ("bar" . "baz"))))
+    (elmo-remove-passwd "key")
+    (lunit-assert
+     (equal '(("foo" . "key")
+             ("bar" . "baz"))
+           elmo-passwd-alist))))
+
+(luna-define-method test-elmo-remove-passwd-3 ((case test-elmo-util))
+  "Multiple same key."
+  (let ((password "cGFzc3dk")
+       (elmo-passwd-alist '(("foo" . "key")
+                            ("key" . "ok")
+                            ("key" . "ok2")
+                            ("bar" . "baz"))))
+    (elmo-remove-passwd "key")
+    (lunit-assert
+     (equal '(("foo" . "key")
+             ("bar" . "baz"))
+           elmo-passwd-alist))))
+
+(luna-define-method test-elmo-passwd-alist-clear-1 ((case test-elmo-util))
+  "Check shred ALL password."
+  (let* ((password1 "cGFzc3dk")
+        (password2 (copy-sequence password1))
+        (elmo-passwd-alist (list (cons "key1" password1)
+                                 (cons "key2" password2))))
+    (elmo-passwd-alist-clear)
+    (lunit-assert
+     (string= "\0\0\0\0\0\0\0\0" password1))
+    (lunit-assert
+     (string= "\0\0\0\0\0\0\0\0" password2))))
+
+(luna-define-method test-elmo-address-quote-specials-1 ((case test-elmo-util))
+  ""
+  (lunit-assert
+   (string= "\"dot.atom.text\""
+           (elmo-address-quote-specials "dot.atom.text")))
+  (lunit-assert
+   (string= "\"...\""
+           (elmo-address-quote-specials "..."))))
+
+(luna-define-method test-elmo-address-quote-specials-2 ((case test-elmo-util))
+  ""
+  (lunit-assert
+   (string=
+    "atext!#$%&'*+-/=?^_`{|}~"
+    (elmo-address-quote-specials "atext!#$%&'*+-/=?^_`{|}~"))))
+
+(luna-define-method test-elmo-elmo-flatten-1 ((case test-elmo-util))
+  ""
+  (lunit-assert
+   (equal
+    '(1 2 3 4 5)
+    (elmo-flatten '(1 2 (3 4 5))))))
+
+(luna-define-method test-elmo-number-set-member-1 ((case test-elmo-util))
+  "Check edge."
+  (lunit-assert
+   (equal '((1 . 99))
+         (elmo-number-set-member 1 '((1 . 99)))))
+  (lunit-assert
+   (equal '((1 . 99))
+         (elmo-number-set-member 99 '((1 . 99))))))
+
+(luna-define-method test-elmo-number-set-member-2 ((case test-elmo-util))
+  "Check edge."
+  (lunit-assert
+   (null (elmo-number-set-member 0 '((1 . 99)))))
+  (lunit-assert
+   (null (elmo-number-set-member 100 '((1 . 99))))))
+
+(luna-define-method test-elmo-number-set-append-list-1 ((case test-elmo-util))
+  "Simple testcase."
+  (lunit-assert
+   (equal '((1 . 100))
+         (elmo-number-set-append-list '((1 . 99)) '(100)))))
+
+(luna-define-method test-elmo-number-set-append-1 ((case test-elmo-util))
+  "Simple testcase."
+  (lunit-assert
+   (equal '((1 . 100))
+         (elmo-number-set-append '((1 . 99)) 100))))
+
+(luna-define-method test-elmo-number-set-delete-1 ((case test-elmo-util))
+  "Check edge."
+  (lunit-assert
+   (equal '(2 3)
+         (elmo-number-set-delete '(1 2 3) 1))))
+
+(luna-define-method test-elmo-number-set-delete-2 ((case test-elmo-util))
+  "Normal case."
+  (lunit-assert
+   (equal '(1 3)
+         (elmo-number-set-delete '(1 2 3) 2))))
+
+(luna-define-method test-elmo-number-set-delete-3 ((case test-elmo-util))
+  "Check edge."
+  (lunit-assert
+   (equal '(1 2)
+         (elmo-number-set-delete '(1 2 3) 3))))
+
+(luna-define-method test-elmo-number-set-delete-4 ((case test-elmo-util))
+  "Check edge."
+  (lunit-assert
+   (equal '((2 . 100))
+         (elmo-number-set-delete '((1 . 100)) 1))))
+
+(luna-define-method test-elmo-number-set-delete-5 ((case test-elmo-util))
+  "Check edge."
+  (lunit-assert
+   (equal '(1 (3 . 100))
+         (elmo-number-set-delete '((1 . 100)) 2))))
+
+(luna-define-method test-elmo-number-set-delete-6 ((case test-elmo-util))
+  "Normal case."
+  (lunit-assert
+   (equal '((1 . 49) (51 . 100))
+         (elmo-number-set-delete '((1 . 100)) 50))))
+
+(luna-define-method test-elmo-number-set-delete-7 ((case test-elmo-util))
+  "Check edge."
+  (lunit-assert
+   (equal '((1 . 98) 100)
+         (elmo-number-set-delete '((1 . 100)) 99))))
+
+(luna-define-method test-elmo-number-set-delete-8 ((case test-elmo-util))
+  "Check edge."
+  (lunit-assert
+   (equal '((1 . 99))
+         (elmo-number-set-delete '((1 . 100)) 100))))
+
+(luna-define-method test-elmo-number-set-delete-list-1 ((case test-elmo-util))
+  "Simple testcase."
+  (lunit-assert
+   (equal '((1 . 99))
+         (elmo-number-set-delete-list '((1 . 100)) '(100)))))
+
+(luna-define-method test-elmo-number-set-to-number-list-1 ((case test-elmo-util))
+  "Simple testcase."
+  (lunit-assert
+   (equal '(1 2 3 4 5 6 7 8 9)
+         (elmo-number-set-to-number-list '((1 . 9)))))
+  (lunit-assert
+   (equal '(1)
+         (elmo-number-set-to-number-list '(1)))))