* ptexinfmt.el: Use lexical binding.
[elisp/wanderlust.git] / tests / test-elmo-util.el
index 81f30f9..6c0c6b8 100644 (file)
@@ -1,3 +1,4 @@
+;; -*- lexical-binding: t -*-
 (require 'lunit)
 (require 'elmo-util)
 
 ;;;   (equal '(1 2 "3" 5 4)
 ;;;      (elmo-list-insert '(1 2 "3" 5) 4 "3"))
 
+(defun test-elmo-same-list-p (list1 list2)
+  (let ((clist1 (copy-sequence list1))
+       (clist2 (copy-sequence list2)))
+    (while list2
+      (setq clist1 (delq (car list2) clist1))
+      (setq list2 (cdr list2)))
+    (while list1
+      (setq clist2 (delq (car list1) clist2))
+      (setq list1 (cdr list1)))
+    (equal (list clist1 clist2) '(nil nil))))
+
+(defun test-elmo-same-diff-p (diff1 diff2)
+  (and (test-elmo-same-list-p (car diff1)
+                             (car diff2))
+       (test-elmo-same-list-p (nth 1 diff1)
+                             (nth 1 diff2))))
+
+(luna-define-method test-elmo-list-diff ((case test-elmo-util))
+  (let ((list1 '(1 2 3))
+       (list2 '(1 2 3 4))
+       (list3 '(1 2 4))
+       (list4 '(4 5 6))
+       (list5 '(3 4 5 6)))
+    (lunit-assert
+     (test-elmo-same-diff-p '(nil nil)
+                           (elmo-list-diff nil nil)))
+    (lunit-assert
+     (test-elmo-same-diff-p '(nil (1 2 3))
+                           (elmo-list-diff nil list1)))
+    (lunit-assert
+     (test-elmo-same-diff-p '((1 2 3) nil)
+                           (elmo-list-diff list1 nil)))
+    (lunit-assert
+     (test-elmo-same-diff-p '(nil nil)
+                           (elmo-list-diff list1 list1)))
+    (lunit-assert
+     (test-elmo-same-diff-p '(nil (4))
+                           (elmo-list-diff list1 list2)))
+    (lunit-assert
+     (test-elmo-same-diff-p '((3) (4))
+                           (elmo-list-diff list1 list3)))
+    (lunit-assert
+     (test-elmo-same-diff-p '((1 2 3) (4 5 6))
+                           (elmo-list-diff list1 list4)))
+    (lunit-assert
+     (test-elmo-same-diff-p '((1 2) (5 6))
+                           (elmo-list-diff list3 list4)))
+    (lunit-assert
+     (test-elmo-same-diff-p '((1 2) (3 5 6))
+                           (elmo-list-diff list3 list5)))))
+
 (luna-define-method test-elmo-delete-char-1 ((case test-elmo-util))
   (lunit-assert
    (string= "f" (elmo-delete-char ?o "foo")))
    (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
   (lunit-assert
    (equal '(1)
          (elmo-number-set-to-number-list '(1)))))
+
+(luna-define-method test-elmo-delete-cr-1 ((case test-elmo-util))
+  (lunit-assert (string= "" (elmo-delete-cr "")))
+  (lunit-assert (string= "\n" (elmo-delete-cr "\r\n")))
+  (lunit-assert (string= "\n\n" (elmo-delete-cr "\r\n\n")))
+  (lunit-assert (string= "\n\n" (elmo-delete-cr "\r\n\r\n"))))