]> gitweb.factorcode.org Git - factor.git/blob - extra/sequences/extras/extras-tests.factor
sequences.extra: Fix min-by and max-by.
[factor.git] / extra / sequences / extras / extras-tests.factor
1 USING: ascii kernel make math sequences sequences.extras strings
2 tools.test ;
3
4 IN: sequences.extras.tests
5
6 [ 1 ] [ 1 2 [ ] min-by ] unit-test
7 [ 1 ] [ 2 1 [ ] min-by ] unit-test
8 [ 42.0 ] [ 42.0 1/0. [ ] min-by ] unit-test
9 [ 42.0 ] [ 1/0. 42.0 [ ] min-by ] unit-test
10 [ 2 ] [ 1 2 [ ] max-by ] unit-test
11 [ 2 ] [ 2 1 [ ] max-by ] unit-test
12 [ 1/0. ] [ 42.0 1/0. [ ] max-by ] unit-test
13 [ 1/0. ] [ 1/0. 42.0 [ ] max-by ] unit-test
14 [ "12345" ] [ "123" "12345" [ length ] max-by ] unit-test
15 [ "123" ] [ "123" "12345" [ length ] min-by ] unit-test
16
17 [ 4 ] [ 5 iota [ ] maximum ] unit-test
18 [ 0 ] [ 5 iota [ ] minimum ] unit-test
19 [ { "foo" } ] [ { { "foo" } { "bar" } } [ first ] maximum ] unit-test
20 [ { "bar" } ] [ { { "foo" } { "bar" } } [ first ] minimum ] unit-test
21
22 [ { "a" "b" "c" "d" "ab" "bc" "cd" "abc" "bcd" "abcd" } ] [ "abcd" all-subseqs ] unit-test
23
24 [ { "a" "ab" "abc" "abcd" "b" "bc" "bcd" "c" "cd" "d" } ]
25 [ [ "abcd" [ , ] each-subseq ] { } make ] unit-test
26
27 [ "" ] [ "abc" "def" longest-subseq ] unit-test
28 [ "abcd" ] [ "abcd" "abcde" longest-subseq ] unit-test
29 [ "foo" ] [ "foo" "foobar" longest-subseq ] unit-test
30 [ "foo" ] [ "foobar" "foo" longest-subseq ] unit-test
31
32 [ "" "" ] [ "" "" CHAR: ? pad-longest ] unit-test
33 [ "abc" "def" ] [ "abc" "def" CHAR: ? pad-longest ] unit-test
34 [ "   " "abc" ] [ "" "abc" CHAR: \s pad-longest ] unit-test
35 [ "abc" "   " ] [ "abc" "" CHAR: \s pad-longest ] unit-test
36 [ "abc..." "foobar" ] [ "abc" "foobar" CHAR: . pad-longest ] unit-test
37
38 [ { 0 1 0 1 } ] [
39     { 0 0 0 0 } { 1 3 } over [ 1 + ] change-nths
40 ] unit-test
41
42 [ { 1 3 5 } ] [ { 1 2 3 4 5 6 } [ nip even? ] filter-index ] unit-test
43
44 [ V{ 1 3 5 } ] [ { 1 2 3 4 5 6 } [ nip even? ] V{ } filter-index-as ] unit-test
45
46 [ { 1 3 5 } ] [ { 1 2 3 4 5 6 } even-indices ] unit-test
47
48 [ { 2 4 6 } ] [ { 1 2 3 4 5 6 } odd-indices ] unit-test
49
50 { "a b c d e" }
51 [ "a      b  \t \n \r  c   d \n    e   " [ blank? ] " " compact ] unit-test
52
53 { " a b c d e " }
54 [ " a      b  c   d    e   " [ blank? ] " " collapse ] unit-test
55
56 { { "hello," " " "world!" " " " " } }
57 [ "hello, world!  " [ blank? ] slice-when [ >string ] map ] unit-test
58
59 { "hello" } [ "hello" 0 rotate ] unit-test
60 { "llohe" } [ "hello" 2 rotate ] unit-test
61 { "hello" } [ "hello" dup 0 rotate! ] unit-test
62 { "lohel" } [ "hello" dup 3 rotate! ] unit-test
63
64 { { } } [ { } [ ] map-concat ] unit-test
65 { V{ 0 0 1 0 1 2 } } [ 4 iota [ iota ] map-concat ] unit-test
66 { "abc" } [ "abc" [ 1string ] map-concat ] unit-test
67 { "abc" } [ { 97 98 99 } [ 1string ] map-concat ] unit-test
68 { { 97 98 99 } } [ "abc" [ 1string ] { } map-concat-as ] unit-test
69
70 { { } } [ { } [ ] [ even? ] map-filter ] unit-test
71 { "bcde" } [ "abcd" [ 1 + ] [ drop t ] map-filter ] unit-test
72 { { 0 4 16 36 64 } } [ 10 iota [ sq ] [ even? ] { } map-filter-as ] unit-test
73
74 { V{ 0 4 16 36 64 } } [ 10 iota [ even? ] [ sq ] filter-map ] unit-test
75 { { 2 6 10 14 18 } } [ 10 iota [ odd? ] [ 2 * ] { } filter-map-as ] unit-test
76
77 { 8 } [ 3 iota dup [ 1 + * ] 2map-sum ] unit-test
78 { 4 } [ "hello" "jello" [ = ] 2count ] unit-test