diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/standard-version/driver.cxx | 19 | ||||
-rw-r--r-- | tests/standard-version/testscript | 82 |
2 files changed, 95 insertions, 6 deletions
diff --git a/tests/standard-version/driver.cxx b/tests/standard-version/driver.cxx index e6a21ef..86d9621 100644 --- a/tests/standard-version/driver.cxx +++ b/tests/standard-version/driver.cxx @@ -76,12 +76,14 @@ version (const string& s, bool allow_earliest = true) // argv[0] -b <version> // argv[0] -c <version> <version> // argv[0] -r +// argv[0] -s <version> <constraint> // argv[0] // // -a output 'y' for alpha-version, 'n' otherwise // -b output 'y' for beta-version, 'n' otherwise // -c output 0 if versions are equal, -1 if the first one is less, 1 otherwise // -r create version constraints from STDIN lines, and print them to STDOUT +// -s output 'y' if version satisfies constraint, 'n' otherwise // // If no options are specified, then create versions from STDIN lines, and // print them to STDOUT. @@ -100,18 +102,14 @@ try if (o == "-a") { assert (argc == 3); - char r (version (argv[2]).alpha () - ? 'y' - : 'n'); + char r (version (argv[2]).alpha () ? 'y' : 'n'); cout << r << endl; } else if (o == "-b") { assert (argc == 3); - char r (version (argv[2]).beta () - ? 'y' - : 'n'); + char r (version (argv[2]).beta () ? 'y' : 'n'); cout << r << endl; } @@ -130,6 +128,15 @@ try while (getline (cin, s)) cout << standard_version_constraint (s) << endl; } + else if (o == "-s") + { + assert (argc == 4); + + char r (standard_version_constraint (argv[3]).satisfies ( + version (argv[2])) ? 'y' : 'n'); + + cout << r << endl; + } else assert (false); diff --git a/tests/standard-version/testscript b/tests/standard-version/testscript index e5e3248..b6bc1a0 100644 --- a/tests/standard-version/testscript +++ b/tests/standard-version/testscript @@ -297,3 +297,85 @@ } } } + +: satisfaction +: +{ + test.options += -s + + : comparison + : + : Constraints have a single endpoint being present. + : + { + : eq + : + { + $* '1.2.3' '== 1.2.3' >y : eq + $* '1.2.3' '<= 1.2.3' >y : le + $* '1.2.3' '< 1.2.3' >n : lt + $* '1.2.3' '>= 1.2.3' >y : ge + $* '1.2.3' '> 1.2.3' >n : gt + } + + : smaller-greater + : + { + $* '1.2.3' '== 1.2.4' >n : eq + $* '1.2.3' '<= 1.2.4' >y : le + $* '1.2.3' '< 1.2.4' >y : lt + $* '1.2.3' '>= 1.2.4' >n : ge + $* '1.2.3' '> 1.2.4' >n : gt + } + + : greater-smaller + : + { + $* '1.2.4' '<= 1.2.3' >n : le + $* '1.2.4' '< 1.2.3' >n : lt + $* '1.2.4' '>= 1.2.3' >y : ge + $* '1.2.4' '> 1.2.3' >y : gt + } + } + + : range + : + : Constraints have both endpoints being present. + : + { + : left-out + : + { + $* '1.2.3' '[1.2.4 1.2.5]' >n : closed + $* '1.2.3' '(1.2.4 1.2.5]' >n : open + } + + : left-endpoint + : + { + $* '1.2.3' '[1.2.3 1.2.4]' >y : closed + $* '1.2.3' '(1.2.3 1.2.4]' >n : open + } + + : in + : + { + $* '1.2.3' '[1.2.2 1.2.4]' >y : closed + $* '1.2.3' '(1.2.2 1.2.4)' >y : open + } + + : right-endpoint + : + { + $* '1.2.3' '[1.2.2 1.2.3]' >y : closed + $* '1.2.3' '[1.2.2 1.2.3)' >n : open + } + + : right-out + : + { + $* '1.2.3' '[1.2.1 1.2.2]' >n : closed + $* '1.2.3' '[1.2.1 1.2.2)' >n : open + } + } +} |