From 64504e8b8fb097d6e849953eb0e4721321c41a27 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Mon, 11 Sep 2023 10:21:36 +0200 Subject: add optional operator to rpmcmpver for consistency with version_compare --- tests/002-rpmvercmp.phpt | 44 ++++++++++++++++++++++++++++++++++++++++- tests/010-rpmvercmp_error7.phpt | 10 +++++++--- tests/011-rpmvercmp_error8.phpt | 12 ++++++++--- 3 files changed, 59 insertions(+), 7 deletions(-) (limited to 'tests') diff --git a/tests/002-rpmvercmp.phpt b/tests/002-rpmvercmp.phpt index d83cf67..c53a183 100644 --- a/tests/002-rpmvercmp.phpt +++ b/tests/002-rpmvercmp.phpt @@ -29,11 +29,53 @@ $ok = true; foreach ($cases as $case) { list($a,$b,$expected) = $case; $result = rpmvercmp($a,$b); - if ($result != $expected) { + if ($result !== $expected) { $ok = false; printf("rpmvercmp(%s, %s) = %d when %d expected\n", $a, $b, $result, $expected); } } + +$cases = [ + ['1', '2', '>', false], + ['1', '2', 'gt', false], + ['1', '2', '>=', false], + ['1', '2', 'ge', false], + ['1', '1', '>=', true], + ['1', '1', 'ge', true], + + ['1', '2', '<', true], + ['1', '2', 'lt', true], + ['1', '2', '<=', true], + ['1', '2', 'le', true], + ['1', '1', '<=', true], + ['1', '1', 'le', true], + + ['1', '1', '=', true], + ['1', '1', '==', true], + ['1', '1', 'eq', true], + + ['1', '2', '=', false], + ['1', '2', '==', false], + ['1', '2', 'eq', false], + + ['1', '1', '!=', false], + ['1', '1', '<>', false], + ['1', '1', 'ne', false], + + ['1', '2', '!=', true], + ['1', '2', '<>', true], + ['1', '2', 'ne', true], +]; +foreach ($cases as $case) { + list($a,$b,$op,$expected) = $case; + $result = rpmvercmp($a,$b,$op); + if ($result !== $expected) { + $ok = false; + printf("rpmvercmp(%s, %s, %s) = %s when %s expected\n", + $a, $b, $op, $result ? "true" : "false", $expected ? "true" : "false"); + } +} + if ($ok) echo "OK\n"; ?> Done diff --git a/tests/010-rpmvercmp_error7.phpt b/tests/010-rpmvercmp_error7.phpt index c9b3875..2d5c220 100644 --- a/tests/010-rpmvercmp_error7.phpt +++ b/tests/010-rpmvercmp_error7.phpt @@ -10,16 +10,20 @@ if (PHP_VERSION_ID >= 80000) print "skip only for PHP 7"; var_dump(rpmvercmp()); var_dump(rpmvercmp("a")); var_dump(rpmvercmp("a", "b", "c")); +var_dump(rpmvercmp("a", "b", "c", "d")); ?> Done --EXPECTF-- -Warning: rpmvercmp() expects exactly 2 parameters, 0 given in %s +Warning: rpmvercmp() expects at least 2 parameters, 0 given in %s NULL -Warning: rpmvercmp() expects exactly 2 parameters, 1 given in %s +Warning: rpmvercmp() expects at least 2 parameters, 1 given in %s NULL -Warning: rpmvercmp() expects exactly 2 parameters, 3 given in %s +Warning: rpmvercmp(): c is not a valid comparison operator in %s +NULL + +Warning: rpmvercmp() expects at most 3 parameters, 4 given in %s NULL Done diff --git a/tests/011-rpmvercmp_error8.phpt b/tests/011-rpmvercmp_error8.phpt index 4430975..2fe6aa1 100644 --- a/tests/011-rpmvercmp_error8.phpt +++ b/tests/011-rpmvercmp_error8.phpt @@ -19,13 +19,19 @@ try { } try { var_dump(rpmvercmp("a", "b", "c")); +} catch (ValueError $e) { + echo $e->getMessage(), "\n"; +} +try { + var_dump(rpmvercmp("a", "b", "c", "d")); } catch (ArgumentCountError $e) { echo $e->getMessage(), "\n"; } ?> Done --EXPECTF-- -rpmvercmp() expects exactly 2 %s, 0 given -rpmvercmp() expects exactly 2 %s, 1 given -rpmvercmp() expects exactly 2 %s, 3 given +rpmvercmp() expects at least 2 %s, 0 given +rpmvercmp() expects at least 2 %s, 1 given +rpmvercmp(): Argument #3 ($operator) must be a valid comparison operator +rpmvercmp() expects at most 3 %s, 4 given Done -- cgit