]> gitweb.factorcode.org Git - factor.git/blob - basis/sorting/specification/specification-tests.factor
Rename and add sorting words
[factor.git] / basis / sorting / specification / specification-tests.factor
1 ! Copyright (C) 2009 Doug Coleman.
2 ! See https://factorcode.org/license.txt for BSD license.
3 USING: accessors math.order sorting.specification tools.test
4 arrays sequences kernel assocs multiline sorting.functor ;
5 IN: sorting.specification.tests
6
7 TUPLE: sort-test a b c tuple2 ;
8
9 TUPLE: tuple2 d ;
10
11 {
12     {
13         T{ sort-test { a 1 } { b 3 } { c 9 } }
14         T{ sort-test { a 1 } { b 1 } { c 10 } }
15         T{ sort-test { a 1 } { b 1 } { c 11 } }
16         T{ sort-test { a 2 } { b 5 } { c 2 } }
17         T{ sort-test { a 2 } { b 5 } { c 3 } }
18     }
19 } [
20     {
21         T{ sort-test f 1 3 9 }
22         T{ sort-test f 1 1 10 }
23         T{ sort-test f 1 1 11 }
24         T{ sort-test f 2 5 3 }
25         T{ sort-test f 2 5 2 }
26     } { { a>> <=> } { b>> >=< } { c>> <=> } } sort-with-spec
27 ] unit-test
28
29 {
30     {
31         T{ sort-test { a 1 } { b 3 } { c 9 } }
32         T{ sort-test { a 1 } { b 1 } { c 10 } }
33         T{ sort-test { a 1 } { b 1 } { c 11 } }
34         T{ sort-test { a 2 } { b 5 } { c 2 } }
35         T{ sort-test { a 2 } { b 5 } { c 3 } }
36     }
37 } [
38     {
39         T{ sort-test f 1 3 9 }
40         T{ sort-test f 1 1 10 }
41         T{ sort-test f 1 1 11 }
42         T{ sort-test f 2 5 3 }
43         T{ sort-test f 2 5 2 }
44     } { { a>> <=> } { b>> >=< } { c>> <=> } } sort-with-spec
45 ] unit-test
46
47 { { } } [
48     { } { { a>> <=> } { b>> >=< } { c>> <=> } } sort-with-spec
49 ] unit-test
50
51 { { } } [ { } { } sort-with-spec ] unit-test
52
53 {
54     {
55         T{ sort-test { a 6 } { tuple2 T{ tuple2 { d 1 } } } }
56         T{ sort-test { a 6 } { tuple2 T{ tuple2 { d 2 } } } }
57         T{ sort-test { a 5 } { tuple2 T{ tuple2 { d 3 } } } }
58         T{ sort-test { a 6 } { tuple2 T{ tuple2 { d 3 } } } }
59         T{ sort-test { a 6 } { tuple2 T{ tuple2 { d 3 } } } }
60         T{ sort-test { a 5 } { tuple2 T{ tuple2 { d 4 } } } }
61     }
62 } [
63     {
64         T{ sort-test f 6 f f T{ tuple2 f 1 } }
65         T{ sort-test f 5 f f T{ tuple2 f 4 } }
66         T{ sort-test f 6 f f T{ tuple2 f 3 } }
67         T{ sort-test f 6 f f T{ tuple2 f 3 } }
68         T{ sort-test f 5 f f T{ tuple2 f 3 } }
69         T{ sort-test f 6 f f T{ tuple2 f 2 } }
70     } { { tuple2>> d>> <=> } { a>> <=> } } sort-with-spec
71 ] unit-test
72
73
74 { { "a" "b" "c" } } [ { "b" "c" "a" } { <=> <=> } sort-with-spec ] unit-test
75 { { "b" "c" "a" } } [ { "b" "c" "a" } { } sort-with-spec ] unit-test
76
77 << "length-test" [ length ] define-sorting >>
78
79 { { { 1 } { 1 2 3 } { 1 3 2 } { 3 2 1 } } }
80 [
81     { { 3 2 1 } { 1 2 3 } { 1 3 2 } { 1 } }
82     { length-test<=> <=> } sort-with-spec
83 ] unit-test
84
85 { { { { 0 } 1 } { { 1 } 2 } { { 1 } 1 } { { 3 1 } 2 } } }
86 [
87     { { { 3 1 } 2 } { { 1 } 2 } { { 0 } 1 } { { 1 } 1 } }
88     { length-test<=> <=> } sort-keys-with-spec
89 ] unit-test
90
91 { { { 0 { 1 } } { 1 { 1 } } { 3 { 2 4 } } { 1 { 2 0 0 0 } } } }
92 [
93     { { 3 { 2 4 } } { 1 { 2 0 0 0 } } { 0 { 1 } } { 1 { 1 } } }
94     { length-test<=> <=> } sort-values-with-spec
95 ] unit-test
96
97 { { { "apples" 1 } { "bananas" 2 } { "cherries" 3 } } } [
98     H{ { "apples" 1 } { "bananas" 2 } { "cherries" 3 } }
99     { { sequences:length <=> } } sort-keys-with-spec
100 ] unit-test