]> gitweb.factorcode.org Git - factor.git/blob - extra/semantic-versioning/semantic-versioning-tests.factor
4c44af47e85ceb193723be3bcdc6b8d25ee1f3a6
[factor.git] / extra / semantic-versioning / semantic-versioning-tests.factor
1 USING: assocs kernel math.order random semantic-versioning
2 sequences sequences.extras sorting tools.test ;
3 IN: semantic-versioning
4
5 {
6     {
7         { { 0 1 0 } f f }
8         { { 0 97 0 } f f }
9         { { 1 1 0 } f f }
10         { { 1 2 3 } f f }
11         { { 1 0 0 } "dev1" f }
12         { { 1 0 0 } "rc1" "build" }
13         { { 1 0 0 } "rc2" f }
14         { { 1 0 0 } "rc2" "123456" }
15     }
16 } [
17     {
18         ".1"
19         "0.97"
20         "1.1"
21         "1.2.3"
22         "1.0.0dev1"
23         "1.0.0rc1+build"
24         "1.0.0-rc2"
25         "1.0.0-rc2+123456"
26     } [ split-version ] map
27 ] unit-test
28
29 { +gt+ } [ "1.2.0dev1" "0.12.1dev2" version<=> ] unit-test
30 { +lt+ } [ "1.9.0" "1.10.0" version<=> ] unit-test
31 { +eq+ } [ "2.0.0rc1" "2.0.0rc1" version<=> ] unit-test
32 { +lt+ } [ "1.0.0rc1" "1.0.0" version<=> ] unit-test
33 { +lt+ } [ "1.0.0rc1" "1.0.0rc2" version<=> ] unit-test
34 { +lt+ } [ "1.0.0-rc.1" "1.0.0-rc.11" version<=> ] unit-test
35 { +lt+ } [ "1.0.0-rc.2" "1.0.0-rc.11" version<=> ] unit-test
36 { +eq+ } [ "1.0.0+foo" "1.0.0+bar" version<=> ] unit-test
37 { +eq+ } [ "1.0" "1.0.0" version<=> ] unit-test
38
39 { t } [
40     {
41         "1.0.0-alpha"
42         "1.0.0-alpha.1"
43         "1.0.0-alpha.beta"
44         "1.0.0-beta"
45         "1.0.0-beta.2"
46         "1.0.0-beta.11"
47         "1.0.0-rc.1"
48         "1.0.0"
49     } dup clone randomize [ version<=> ] sort =
50 ] unit-test
51
52 ! { +gt+ } [ "1.2.3-r2" "1.2.3-r100" version<=> ] unit-test
53
54 ! first > second
55 CONSTANT: semver-gt-comparisons {
56     { "0.0.0" "0.0.0-foo" }
57     { "0.0.1" "0.0.0" }
58     { "1.0.0" "0.9.9" }
59     { "0.10.0" "0.9.0" }
60     { "0.99.0" "0.10.0" }
61     { "2.0.0" "1.2.3" }
62     ! { "v0.0.0" "0.0.0-oo" }
63     ! { "v0.0.1" "0.0.0" }
64     ! { "v1.0.0" "0.9.9" }
65     ! { "v0.10.0" "0.9.0" }
66     ! { "v0.99.0" "0.10.0" }
67     ! { "v2.0.0" "1.2.3" }
68     ! { "0.0.0" "v0.0.0-fo" }
69     ! { "0.0.1" "v0.0.0" }
70     ! { "1.0.0" "v0.9.9" }
71     ! { "0.10.0" "v0.9.0" }
72     ! { "0.99.0" "v0.10.0" }
73     ! { "2.0.0" "v1.2.3" }
74     { "1.2.3" "1.2.3-asf" }
75     { "1.2.3" "1.2.3-4" }
76     { "1.2.3" "1.2.3-4-fo" }
77     { "1.2.3-5-foo" "1.2.3-5" }
78     { "1.2.3-5" "1.2.3-4" }
79     { "1.2.3-5-foo" "1.2.3-5-Foo" }
80     { "3.0.0" "2.7.2+asdf" }
81     { "1.2.3-a.10" "1.2.3-a.5" }
82     { "1.2.3-a.b" "1.2.3-a.5" }
83     { "1.2.3-a.b" "1.2.3-a" }
84     ! { "1.2.3-a.b.c.10.d.5" ".2.3-a.b.c.5.d.100" } ! bad parse
85     ! { "1.2.3-r2" "1.2.3-r100" } ! fixme
86     { "1.2.3-r100" "1.2.3-R2" }
87 }
88
89 { t } [
90     semver-gt-comparisons
91     [ first2 version<=> ] zip-with
92     values [ +gt+ = ] all?
93 ] unit-test
94
95 { t } [
96     semver-gt-comparisons
97     [ first2 swap version<=> ] zip-with
98     values [ +lt+ = ] all?
99 ] unit-test