]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/semantic-versioning/semantic-versioning-tests.factor
factor: add newlines to .factor files
[factor.git] / extra / semantic-versioning / semantic-versioning-tests.factor
index 9745cc94a274de43ee3a76869462d98e6a636788..8c9a299d624b2cb0e13a3544577eadf74c80f073 100644 (file)
@@ -1,5 +1,100 @@
-USING: semantic-versioning tools.test ;
-IN: semantic-versioning.tests
+USING: assocs kernel math.order random semantic-versioning
+sequences sequences.extras sorting tools.test ;
+IN: semantic-versioning
+
+{
+    {
+        { { 0 1 0 } f f }
+        { { 0 97 0 } f f }
+        { { 1 1 0 } f f }
+        { { 1 2 3 } f f }
+        { { 1 0 0 } "dev1" f }
+        { { 1 0 0 } "rc1" "build" }
+        { { 1 0 0 } "rc2" f }
+        { { 1 0 0 } "rc2" "123456" }
+    }
+} [
+    {
+        ".1"
+        "0.97"
+        "1.1"
+        "1.2.3"
+        "1.0.0dev1"
+        "1.0.0rc1+build"
+        "1.0.0-rc2"
+        "1.0.0-rc2+123456"
+    } [ split-version ] map
+] unit-test
+
+{ +gt+ } [ "1.2.0dev1" "0.12.1dev2" version<=> ] unit-test
+{ +lt+ } [ "1.9.0" "1.10.0" version<=> ] unit-test
+{ +eq+ } [ "2.0.0rc1" "2.0.0rc1" version<=> ] unit-test
+{ +lt+ } [ "1.0.0rc1" "1.0.0" version<=> ] unit-test
+{ +lt+ } [ "1.0.0rc1" "1.0.0rc2" version<=> ] unit-test
+{ +lt+ } [ "1.0.0-rc.1" "1.0.0-rc.11" version<=> ] unit-test
+{ +lt+ } [ "1.0.0-rc.2" "1.0.0-rc.11" version<=> ] unit-test
+{ +eq+ } [ "1.0.0+foo" "1.0.0+bar" version<=> ] unit-test
+{ +eq+ } [ "1.0" "1.0.0" version<=> ] unit-test
+
+{ t } [
+    {
+        "1.0.0-alpha"
+        "1.0.0-alpha.1"
+        "1.0.0-alpha.beta"
+        "1.0.0-beta"
+        "1.0.0-beta.2"
+        "1.0.0-beta.11"
+        "1.0.0-rc.1"
+        "1.0.0"
+    } dup clone randomize [ version<=> ] sort =
+] unit-test
+
+! { +gt+ } [ "1.2.3-r2" "1.2.3-r100" version<=> ] unit-test
+
+! first > second
+CONSTANT: semver-gt-comparisons {
+    { "0.0.0" "0.0.0-foo" }
+    { "0.0.1" "0.0.0" }
+    { "1.0.0" "0.9.9" }
+    { "0.10.0" "0.9.0" }
+    { "0.99.0" "0.10.0" }
+    { "2.0.0" "1.2.3" }
+    ! { "v0.0.0" "0.0.0-oo" }
+    ! { "v0.0.1" "0.0.0" }
+    ! { "v1.0.0" "0.9.9" }
+    ! { "v0.10.0" "0.9.0" }
+    ! { "v0.99.0" "0.10.0" }
+    ! { "v2.0.0" "1.2.3" }
+    ! { "0.0.0" "v0.0.0-fo" }
+    ! { "0.0.1" "v0.0.0" }
+    ! { "1.0.0" "v0.9.9" }
+    ! { "0.10.0" "v0.9.0" }
+    ! { "0.99.0" "v0.10.0" }
+    ! { "2.0.0" "v1.2.3" }
+    { "1.2.3" "1.2.3-asf" }
+    { "1.2.3" "1.2.3-4" }
+    { "1.2.3" "1.2.3-4-fo" }
+    { "1.2.3-5-foo" "1.2.3-5" }
+    { "1.2.3-5" "1.2.3-4" }
+    { "1.2.3-5-foo" "1.2.3-5-Foo" }
+    { "3.0.0" "2.7.2+asdf" }
+    { "1.2.3-a.10" "1.2.3-a.5" }
+    { "1.2.3-a.b" "1.2.3-a.5" }
+    { "1.2.3-a.b" "1.2.3-a" }
+    ! { "1.2.3-a.b.c.10.d.5" ".2.3-a.b.c.5.d.100" } ! bad parse
+    ! { "1.2.3-r2" "1.2.3-r100" } ! fixme
+    { "1.2.3-r100" "1.2.3-R2" }
+}
+
+{ t } [
+    semver-gt-comparisons
+    [ first2 version<=> ] zip-with
+    values [ +gt+ = ] all?
+] unit-test
+
+{ t } [
+    semver-gt-comparisons
+    [ first2 swap version<=> ] zip-with
+    values [ +lt+ = ] all?
+] unit-test
 
-[ { 1 0 0 "dev1" } ] [ "1.0.0dev1" split-version ] unit-test
-[ { 1 2 3 } ] [ "1.2.3" split-version ] unit-test