emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 66b99778b8 2/2: Add tests for concat, vconcat and append


From: Mattias Engdegård
Subject: master 66b99778b8 2/2: Add tests for concat, vconcat and append
Date: Wed, 26 Jan 2022 11:13:32 -0500 (EST)

branch: master
commit 66b99778b8109c557f22d76fadd1d75a0b5fa7fa
Author: Mattias Engdegård <mattiase@acm.org>
Commit: Mattias Engdegård <mattiase@acm.org>

    Add tests for concat, vconcat and append
    
    * test/src/fns-tests.el (fns-tests-concat)
    (fns-concat, fns-vconcat, fns-append): New.
---
 test/src/fns-tests.el | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 70 insertions(+)

diff --git a/test/src/fns-tests.el b/test/src/fns-tests.el
index f74e925d3b..723ef4c710 100644
--- a/test/src/fns-tests.el
+++ b/test/src/fns-tests.el
@@ -1192,4 +1192,74 @@
     (should-error (line-number-at-pos -1))
     (should-error (line-number-at-pos 100))))
 
+(defun fns-tests-concat (&rest args)
+  ;; Dodge the byte-compiler's partial evaluation of `concat' with
+  ;; constant arguments.
+  (apply #'concat args))
+
+(ert-deftest fns-concat ()
+  (should (equal (fns-tests-concat) ""))
+  (should (equal (fns-tests-concat "") ""))
+  (should (equal (fns-tests-concat nil) ""))
+  (should (equal (fns-tests-concat []) ""))
+  (should (equal (fns-tests-concat [97 98]) "ab"))
+  (should (equal (fns-tests-concat '(97 98)) "ab"))
+  (should (equal (fns-tests-concat "ab" '(99 100) nil [101 102] "gh")
+                 "abcdefgh"))
+  (should (equal (fns-tests-concat "Ab" "\200" "cd") "Ab\200cd"))
+  (should (equal (fns-tests-concat "aB" "\200" "çd") "aB\200çd"))
+  (should (equal (fns-tests-concat "AB" (string-to-multibyte "\200") "cd")
+                 (string-to-multibyte "AB\200cd")))
+  (should (equal (fns-tests-concat "ab" '(#xe5) [255] "cd") "abåÿcd"))
+  (should (equal (fns-tests-concat '(#x3fffff) [#x3fff80] "xy") "\377\200xy"))
+  (should (equal (fns-tests-concat '(#x3fffff) [#x3fff80] "xy§") 
"\377\200xy§"))
+  (should (equal-including-properties
+           (fns-tests-concat #("abc" 0 3 (a 1)) #("de" 0 2 (a 1)))
+           #("abcde" 0 5 (a 1))))
+  (should (equal-including-properties
+           (fns-tests-concat #("abc" 0 3 (a 1)) "§ü" #("çå" 0 2 (b 2)))
+           #("abc§üçå" 0 3 (a 1) 5 7 (b 2))))
+  (should-error (fns-tests-concat "a" '(98 . 99))
+                :type 'wrong-type-argument)
+  (let ((loop (list 66 67)))
+    (setcdr (cdr loop) loop)
+    (should-error (fns-tests-concat "A" loop)
+                  :type 'circular-list)))
+
+(ert-deftest fns-vconcat ()
+  (should (equal (vconcat) []))
+  (should (equal (vconcat nil) []))
+  (should (equal (vconcat "") []))
+  (should (equal (vconcat [1 2 3]) [1 2 3]))
+  (should (equal (vconcat '(1 2 3)) [1 2 3]))
+  (should (equal (vconcat "ABC") [65 66 67]))
+  (should (equal (vconcat "ü§") [252 167]))
+  (should (equal (vconcat [1 2 3] nil '(4 5) "AB" "å"
+                          "\377" (string-to-multibyte "\377")
+                          (bool-vector t nil nil t nil))
+                 [1 2 3 4 5 65 66 #xe5 255 #x3fffff t nil nil t nil]))
+  (should-error (vconcat [1] '(2 . 3))
+                :type 'wrong-type-argument)
+  (let ((loop (list 1 2)))
+    (setcdr (cdr loop) loop)
+    (should-error (vconcat [1] loop)
+                  :type 'circular-list)))
+
+(ert-deftest fns-append ()
+  (should (equal (append) nil))
+  (should (equal (append 'tail) 'tail))
+  (should (equal (append [1 2 3] nil '(4 5) "AB" "å"
+                         "\377" (string-to-multibyte "\377")
+                          (bool-vector t nil nil t nil)
+                         '(9 10))
+                 '(1 2 3 4 5 65 66 #xe5 255 #x3fffff t nil nil t nil 9 10)))
+  (should (equal (append '(1 2) '(3 4) 'tail)
+                 '(1 2 3 4 . tail)))
+  (should-error (append '(1 . 2) '(3))
+                :type 'wrong-type-argument)
+  (let ((loop (list 1 2)))
+    (setcdr (cdr loop) loop)
+    (should-error (append loop '(end))
+                  :type 'circular-list)))
+
 ;;; fns-tests.el ends here



reply via email to

[Prev in Thread] Current Thread [Next in Thread]