1 USING: arrays ascii io io.streams.string kernel make math
2 math.vectors random sequences sequences.extras strings
5 IN: sequences.extras.tests
7 [ 4 ] [ 5 iota [ ] supremum-by ] unit-test
8 [ 0 ] [ 5 iota [ ] infimum-by ] unit-test
9 { "bar" } [ { "bar" "baz" "qux" } [ length ] supremum-by ] unit-test
10 { "bar" } [ { "bar" "baz" "qux" } [ length ] infimum-by ] unit-test
11 [ { "foo" } ] [ { { "foo" } { "bar" } } [ first ] supremum-by ] unit-test
12 [ { "bar" } ] [ { { "foo" } { "bar" } } [ first ] infimum-by ] unit-test
27 } [ { 0 0 255 } distance ] infimum-by
30 { V{ 0 1 2 3 4 5 6 7 8 9 } } [
32 10 iota >array randomize
33 [ swap insert-sorted ] each
36 [ { "a" "b" "c" "d" "ab" "bc" "cd" "abc" "bcd" "abcd" } ] [ "abcd" all-subseqs ] unit-test
38 [ { "a" "ab" "abc" "abcd" "b" "bc" "bcd" "c" "cd" "d" } ]
39 [ [ "abcd" [ , ] each-subseq ] { } make ] unit-test
41 [ "" ] [ "abc" "def" longest-subseq ] unit-test
42 [ "abcd" ] [ "abcd" "abcde" longest-subseq ] unit-test
43 [ "foo" ] [ "foo" "foobar" longest-subseq ] unit-test
44 [ "foo" ] [ "foobar" "foo" longest-subseq ] unit-test
46 [ "" "" ] [ "" "" CHAR: ? pad-longest ] unit-test
47 [ "abc" "def" ] [ "abc" "def" CHAR: ? pad-longest ] unit-test
48 [ " " "abc" ] [ "" "abc" CHAR: \s pad-longest ] unit-test
49 [ "abc" " " ] [ "abc" "" CHAR: \s pad-longest ] unit-test
50 [ "abc..." "foobar" ] [ "abc" "foobar" CHAR: . pad-longest ] unit-test
53 { 0 0 0 0 } { 1 3 } over [ 1 + ] change-nths
56 [ { 1 3 5 } ] [ { 1 2 3 4 5 6 } [ nip even? ] filter-index ] unit-test
58 [ V{ 1 3 5 } ] [ { 1 2 3 4 5 6 } [ nip even? ] V{ } filter-index-as ] unit-test
60 [ { 1 3 5 } ] [ { 1 2 3 4 5 6 } even-indices ] unit-test
62 [ { 2 4 6 } ] [ { 1 2 3 4 5 6 } odd-indices ] unit-test
65 [ "a b \t \n \r c d \n e " [ blank? ] " " compact ] unit-test
68 [ " a b c d e " [ blank? ] " " collapse ] unit-test
70 { { "hello," " " "world!" " " " " } }
71 [ "hello, world! " [ blank? ] slice-when [ >string ] map ] unit-test
73 { "hello" } [ "hello" 0 rotate ] unit-test
74 { "llohe" } [ "hello" 2 rotate ] unit-test
75 { "hello" } [ "hello" dup 0 rotate! ] unit-test
76 { "lohel" } [ "hello" dup 3 rotate! ] unit-test
78 { { } } [ { } [ ] map-concat ] unit-test
79 { V{ 0 0 1 0 1 2 } } [ 4 iota [ iota ] map-concat ] unit-test
80 { "abc" } [ "abc" [ 1string ] map-concat ] unit-test
81 { "abc" } [ { 97 98 99 } [ 1string ] map-concat ] unit-test
82 { { 97 98 99 } } [ "abc" [ 1string ] { } map-concat-as ] unit-test
84 { { } } [ { } [ ] [ even? ] map-filter ] unit-test
85 { "bcde" } [ "abcd" [ 1 + ] [ drop t ] map-filter ] unit-test
86 { { 0 4 16 36 64 } } [ 10 iota [ sq ] [ even? ] { } map-filter-as ] unit-test
88 { V{ 0 4 16 36 64 } } [ 10 iota [ even? ] [ sq ] filter-map ] unit-test
89 { { 2 6 10 14 18 } } [ 10 iota [ odd? ] [ 2 * ] { } filter-map-as ] unit-test
91 { 8 } [ 3 iota dup [ 1 + * ] 2map-sum ] unit-test
92 { 4 } [ "hello" "jello" [ = ] 2count ] unit-test
94 { { } } [ { } round-robin ] unit-test
95 { "ADEBFC" } [ { "ABC" "D" "EF" } round-robin >string ] unit-test
97 { { } } [ "ABC" [ ] { } trim-as ] unit-test
98 { "ABC" } [ { 32 65 66 67 32 } [ blank? ] "" trim-as ] unit-test
100 { t } [ "ABC" dup [ blank? ] ?trim [ identity-hashcode ] same? ] unit-test
101 { "ABC" } [ " ABC " [ blank? ] ?trim ] unit-test
103 { "" } [ "" "" "" unsurround ] unit-test
104 { "" } [ " " " " " " unsurround ] unit-test
105 { "foo.com" } [ "http://foo.com" "http://" "/" unsurround ] unit-test
107 { t } [ { 1 3 5 7 } [ even? ] none? ] unit-test
108 { f } [ { 1 2 3 4 } [ even? ] none? ] unit-test
109 { t } [ { } [ even? ] none? ] unit-test
111 { f } [ { 1 2 3 4 } [ even? ] one? ] unit-test
112 { t } [ { 1 2 3 } [ even? ] one? ] unit-test
113 { f } [ { } [ even? ] one? ] unit-test
115 { { { 5 8 0 } { 6 9 1 } { 7 10 2 } } } [ { 5 6 7 } { 8 9 10 } [ 3array ] 2map-index ] unit-test
117 { { } } [ { } <evens> >array ] unit-test
118 { { 0 2 } } [ 4 iota <evens> >array ] unit-test
119 { { 0 2 4 } } [ 5 iota <evens> >array ] unit-test
121 { { } } [ { } <odds> >array ] unit-test
122 { { 1 3 } } [ 5 iota <odds> >array ] unit-test
123 { { 1 3 5 } } [ 6 iota <odds> >array ] unit-test
125 { 1 } [ { 1 7 3 7 6 3 7 } arg-max ] unit-test
126 { 0 } [ { 1 7 3 7 6 3 7 } arg-min ] unit-test
128 { t } [ { 1 2 3 4 5 } 1 first= ] unit-test
129 { t } [ { 1 2 3 4 5 } 2 second= ] unit-test
130 { t } [ { 1 2 3 4 5 } 3 third= ] unit-test
131 { t } [ { 1 2 3 4 5 } 4 fourth= ] unit-test
132 { t } [ { 1 2 3 4 5 } 5 last= ] unit-test
133 { t } [ 4 { 1 2 3 4 5 } 5 nth= ] unit-test
135 { t } [ { 1 2 3 4 5 } [ 1 = ] first? ] unit-test
136 { t } [ { 1 2 3 4 5 } [ 2 = ] second? ] unit-test
137 { t } [ { 1 2 3 4 5 } [ 3 = ] third? ] unit-test
138 { t } [ { 1 2 3 4 5 } [ 4 = ] fourth? ] unit-test
139 { t } [ { 1 2 3 4 5 } [ 5 = ] last? ] unit-test
140 { t } [ 4 { 1 2 3 4 5 } [ 5 = ] nth? ] unit-test
142 { { 97 115 100 102 } } [
143 "asdf" [ [ read1 ] loop>array ] with-string-reader
146 { V{ 97 115 100 102 } } [
147 "asdf" [ [ read1 ] V{ } loop>sequence ] with-string-reader
150 { "" } [ { } "" reverse-as ] unit-test
151 { "ABC" } [ { 67 66 65 } "" reverse-as ] unit-test
153 { V{ 1 } } [ 1 0 V{ } [ insert-nth! ] keep ] unit-test
154 { V{ 1 2 3 4 } } [ 2 1 V{ 1 3 4 } [ insert-nth! ] keep ] unit-test
156 { "abc" } [ B{ 97 98 99 100 101 102 103 } 3 "" head-as ] unit-test
157 { "abcd" } [ B{ 97 98 99 100 101 102 103 } 3 "" head*-as ] unit-test
158 { "defg" } [ B{ 97 98 99 100 101 102 103 } 3 "" tail-as ] unit-test
159 { "efg" } [ B{ 97 98 99 100 101 102 103 } 3 "" tail*-as ] unit-test
161 { { 1 0 0 1 0 0 0 1 0 0 } }
162 [ 1 { 0 3 7 } 10 0 <array> [ set-nths ] keep ] unit-test
164 { { 1 0 0 1 0 0 0 1 0 0 } }
165 [ 1 { 0 3 7 } 10 0 <array> [ set-nths-unsafe ] keep ] unit-test