aboutsummaryrefslogtreecommitdiffstats
path: root/tests/wrapper/version_compare_test.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/wrapper/version_compare_test.php')
-rw-r--r--tests/wrapper/version_compare_test.php130
1 files changed, 130 insertions, 0 deletions
diff --git a/tests/wrapper/version_compare_test.php b/tests/wrapper/version_compare_test.php
new file mode 100644
index 0000000000..f718cfd16b
--- /dev/null
+++ b/tests/wrapper/version_compare_test.php
@@ -0,0 +1,130 @@
+<?php
+/**
+*
+* @package testing
+* @copyright (c) 2011 phpBB Group
+* @license http://opensource.org/licenses/gpl-license.php GNU Public License
+*
+*/
+
+require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
+
+class phpbb_wrapper_version_compare_test extends phpbb_test_case
+{
+ public function test_two_parameters()
+ {
+ $this->assertEquals(-1, phpbb_version_compare('1.0.0', '1.0.1'));
+ $this->assertEquals(0, phpbb_version_compare('1.0.0', '1.0.0'));
+ $this->assertEquals(1, phpbb_version_compare('1.0.1', '1.0.0'));
+ }
+
+ public function test_three_parameters()
+ {
+ $this->assertEquals(true, phpbb_version_compare('1.0.0', '1.0.1', '<'));
+ $this->assertEquals(true, phpbb_version_compare('1.0.0', '1.0.0', '<='));
+ $this->assertEquals(true, phpbb_version_compare('1.0.0', '1.0.0', '='));
+ $this->assertEquals(true, phpbb_version_compare('1.0.0', '1.0.0', '>='));
+ $this->assertEquals(true, phpbb_version_compare('1.0.1', '1.0.0', '>'));
+ }
+
+ public function test_strict_order()
+ {
+ $releases = array(
+ '2.0.0',
+ '2.0.1',
+ // Those are not version_compare() compatible
+ //'2.0.6a',
+ //'2.0.6b',
+ //'2.0.6c',
+ //'2.0.6d',
+ '2.0.7',
+ '2.0.23',
+ '3.0.A1',
+ '3.0.A2',
+ '3.0.A3',
+ '3.0.B1',
+ '3.0.B2',
+ '3.0.B4',
+ '3.0.B5',
+ '3.0.RC1',
+ '3.0.RC5',
+ '3.0.0',
+ '3.0.1',
+ '3.0.2',
+ '3.0.7',
+ '3.0.7-PL1',
+ '3.0.8-RC1',
+ '3.0.8',
+ '3.0.9-dev',
+ '3.0.9-RC1',
+ '3.0.9-RC2',
+ '3.0.9-RC4',
+ '3.0.10-RC1',
+ '3.1-dev',
+ '3.2-A1',
+ );
+
+ for ($i = 0, $size = sizeof($releases); $i < $size - 1; ++$i)
+ {
+ $version1 = $releases[$i];
+ $version2 = $releases[$i + 1];
+
+ $this->assertEquals(
+ true,
+ phpbb_version_compare($version1, $version2, '<'),
+ "Result of version comparison $version1 < $version2 is incorrect."
+ );
+ }
+ }
+
+ /**
+ * @dataProvider equality_test_data
+ */
+ public function test_equality($version1, $version2)
+ {
+ $this->assertEquals(
+ 0,
+ phpbb_version_compare($version1, $version2),
+ "Result of version comparison $version1 = $version2 is incorrect."
+ );
+
+ $this->assertEquals(
+ true,
+ phpbb_version_compare($version1, $version2, '='),
+ "Result of version comparison $version1 = $version2 is incorrect."
+ );
+ }
+
+ public function equality_test_data()
+ {
+ return array(
+ array('1.1.0-A2', '1.1.0-a2'),
+ array('1.1.0-B1', '1.1.0-b1'),
+ );
+ }
+
+ /**
+ * @dataProvider alpha_beta_test_data
+ */
+ public function test_alpha_beta($expected, $version1, $version2)
+ {
+ $this->assertEquals(
+ $expected,
+ phpbb_version_compare($version1, $version2),
+ "Result of version comparison ($version1, $version2) = $expected is incorrect."
+ );
+
+ }
+
+ public function alpha_beta_test_data()
+ {
+ return array(
+ array(-1, '1.1.0-A2', '1.1.0-B1'),
+ array(-1, '1.1.0-a2', '1.1.0-b1'),
+
+ array(-1, '1.1.0-a2', '1.1.0-B1'),
+ array(-1, '1.1.0-A2', '1.1.0-b1'),
+ );
+ }
+
+}