summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2024-07-10 02:19:57 -0700
committerKaz Kylheku <kaz@kylheku.com>2024-07-10 02:19:57 -0700
commit588cfc99a8c9ca5eed03caae6147ae1e10519145 (patch)
tree8b88233717b0bbbd7636417170230fd5a933fbcc /tests
parent2eed172a061a5df56bcc7cfda28b975165db38d3 (diff)
downloadtxr-588cfc99a8c9ca5eed03caae6147ae1e10519145.tar.gz
txr-588cfc99a8c9ca5eed03caae6147ae1e10519145.tar.bz2
txr-588cfc99a8c9ca5eed03caae6147ae1e10519145.zip
split*: add missing tests.
* tests/012/seq.tl: Add tests for split* that were lost in some editing. Corresponding tests exist for split already and for partition.
Diffstat (limited to 'tests')
-rw-r--r--tests/012/seq.tl125
1 files changed, 125 insertions, 0 deletions
diff --git a/tests/012/seq.tl b/tests/012/seq.tl
index a6a7b069..f81c4046 100644
--- a/tests/012/seq.tl
+++ b/tests/012/seq.tl
@@ -1156,6 +1156,131 @@
(split* #(a) '(0)) (#() #())
(split* #(a) '(1)) (#(a) #()))
+(mtest
+ (split* "a" -1) ("" "")
+ (split* "a" 0) ("" "")
+ (split* "a" 1) ("a" "")
+ (split* "a" 2) ("a" "") ;; questionable behavior
+ (split* "a" '(-1)) ("" "")
+ (split* "a" '(0)) ("" "")
+ (split* "a" '(1)) ("a" ""))
+
+(mtest
+ (split* 2..3 -1) (nil nil)
+ (split* 2..3 0) (nil nil)
+ (split* 2..3 1) ((2) nil)
+ (split* 2..3 2) ((2) nil) ;; questionable behavior
+ (split* 2..3 '(-1)) (nil nil)
+ (split* 2..3 '(0)) (nil nil)
+ (split* 2..3 '(1)) ((2) nil))
+
+(mtest
+ (split* '(a b) -1) ((a) nil)
+ (split* '(a b) 0) (nil (b))
+ (split* '(a b) 1) ((a) nil)
+ (split* '(a b) 2) ((a b) nil)
+ (split* '(a b) 3) ((a b) nil) ;; questionable behavior
+ (split* '(a b) '(0 -1)) (nil (b)) ;; questionable
+ (split* '(a b) '(0 1)) (nil nil nil) ;; questionabble
+ (split* '(a b) '(0 -1 2)) (nil (b) nil) ;; questionable
+ (split* '(a b) '(0 1 2)) (nil nil nil) ;; questionable
+ (split* '(a b) '(1 2)) ((a) nil)
+ (split* '(a b) '(-1 2)) ((a) nil)) ;; questionable
+
+(mtest
+ (split* #(a b) -1) (#(a) #())
+ (split* #(a b) 0) (#() #(b))
+ (split* #(a b) 1) (#(a) #())
+ (split* #(a b) 2) (#(a b) #())
+ (split* #(a b) 3) (#(a b) #()) ;; questionable behavior
+ (split* #(a b) '(0 -1)) (#() #(b)) ;; questionable
+ (split* #(a b) '(0 1)) (#() #() #()) ;; questionable
+ (split* #(a b) '(0 -1 2)) (#() #(b) #()) ;; questionable
+ (split* #(a b) '(0 1 2)) (#() #() #()) ;; questionable
+ (split* #(a b) '(1 2)) (#(a) #()) ;; questionable
+ (split* #(a b) '(-1 2)) (#(a) #())) ;; questionable
+
+(mtest
+ (split* "ab" -1) ("a" "")
+ (split* "ab" 0) ("" "b")
+ (split* "ab" 1) ("a" "")
+ (split* "ab" 2) ("ab" "")
+ (split* "ab" 3) ("ab" "") ;; questionable behavior
+ (split* "ab" #(0 -1)) ("" "b") ;; questionable
+ (split* "ab" '(0 1)) ("" "" "") ;; questionable
+ (split* "ab" '(0 -1 2)) ("" "b" "") ;; questionable
+ (split* "ab" '(0 1 2)) ("" "" "") ;; questionable
+ (split* "ab" '(1 2)) ("a" "") ;; questionable
+ (split* "ab" '(-1 2)) ("a" "")) ;; questionable
+
+(mtest
+ (split* 2..4 -1) ((2) ())
+ (split* 2..4 0) (nil (3))
+ (split* 2..4 1) ((2) nil)
+ (split* 2..4 2) ((2 3) nil)
+ (split* 2..4 3) ((2 3) nil)
+ (split* 2..4 '(0 -1)) (nil (3))
+ (split* 2..4 '(0 1)) (nil nil nil)
+ (split* 2..4 '(0 -1 2)) (nil (3) nil)
+ (split* 2..4 '(0 1 2)) (nil nil nil)
+ (split* 2..4 '(1 2)) ((2) nil)
+ (split* 2..4 '(-1 2)) ((2) nil))
+
+(mtest
+ (split* '(a b c) -1) ((a b) nil)
+ (split* '(a b c) 0) (nil (b c))
+ (split* '(a b c) 1) ((a) (c))
+ (split* '(a b c) 2) ((a b) nil)
+ (split* '(a b c) 3) ((a b c) nil)
+ (split* '(a b c) 4) ((a b c) nil)
+ (split* '(a b c) '(0 1)) (nil nil (c))
+ (split* '(a b c) '(0 2)) (nil (b) nil)
+ (split* '(a b c) '(0 3)) (nil (b c) nil)
+ (split* '(a b c) '(1 2)) ((a) nil nil)
+ (split* '(a b c) '(1 3)) ((a) (c) nil)
+ (split* '(a b c) '(2 3)) ((a b) nil))
+
+(mtest
+ (split* #(a b c) -1) (#(a b) #())
+ (split* #(a b c) 0) (#() #(b c))
+ (split* #(a b c) 1) (#(a) #(c))
+ (split* #(a b c) 2) (#(a b) #())
+ (split* #(a b c) 3) (#(a b c) #())
+ (split* #(a b c) 4) (#(a b c) #())
+ (split* #(a b c) '(0 1)) (#() #() #(c))
+ (split* #(a b c) '(0 2)) (#() #(b) #())
+ (split* #(a b c) '(0 3)) (#() #(b c) #())
+ (split* #(a b c) '(1 2)) (#(a) #() #())
+ (split* #(a b c) '(1 3)) (#(a) #(c) #())
+ (split* #(a b c) '(2 3)) (#(a b) #()))
+
+(mtest
+ (split* "abc" -1) ("ab" "")
+ (split* "abc" 0) ("" "bc")
+ (split* "abc" 1) ("a" "c")
+ (split* "abc" 2) ("ab" "")
+ (split* "abc" 3) ("abc" "")
+ (split* "abc" 4) ("abc" "")
+ (split* "abc" '(0 1)) ("" "" "c")
+ (split* "abc" '(0 2)) ("" "b" "")
+ (split* "abc" '(0 3)) ("" "bc" "")
+ (split* "abc" '(1 2)) ("a" "" "")
+ (split* "abc" '(1 3)) ("a" "c" "")
+ (split* "abc" '(2 3)) ("ab" ""))
+
+(mtest
+ (split* 2..5 -1) ((2 3) nil)
+ (split* 2..5 0) (nil (3 4))
+ (split* 2..5 1) ((2) (4))
+ (split* 2..5 2) ((2 3) nil)
+ (split* 2..5 3) ((2 3 4) nil)
+ (split* 2..5 4) ((2 3 4) nil)
+ (split* 2..5 '(0 1)) (nil nil (4))
+ (split* 2..5 '(0 2)) (nil (3) nil)
+ (split* 2..5 '(0 3)) (nil (3 4) nil)
+ (split* 2..5 '(1 2)) ((2) nil nil)
+ (split* 2..5 '(1 3)) ((2) (4) nil)
+ (split* 2..5 '(2 3)) ((2 3) nil))
(mtest
(partition nil -1) nil