aboutsummaryrefslogtreecommitdiff
path: root/tests/standard-version
diff options
context:
space:
mode:
Diffstat (limited to 'tests/standard-version')
-rw-r--r--tests/standard-version/driver.cxx19
-rw-r--r--tests/standard-version/testscript82
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
+ }
+ }
+}