Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
85.71% covered (warning)
85.71%
60 / 70
71.43% covered (warning)
71.43%
5 / 7
CRAP
0.00% covered (danger)
0.00%
0 / 1
phpbb_wrapper_version_compare_test
85.71% covered (warning)
85.71%
60 / 70
71.43% covered (warning)
71.43%
5 / 7
8.19
0.00% covered (danger)
0.00%
0 / 1
 test_two_parameters
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
 test_three_parameters
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 test_strict_order
100.00% covered (success)
100.00%
37 / 37
100.00% covered (success)
100.00%
1 / 1
2
 test_equality
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
1 / 1
1
 equality_test_data
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
2
 test_alpha_beta
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 alpha_beta_test_data
0.00% covered (danger)
0.00%
0 / 6
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2/**
3*
4* This file is part of the phpBB Forum Software package.
5*
6* @copyright (c) phpBB Limited <https://www.phpbb.com>
7* @license GNU General Public License, version 2 (GPL-2.0)
8*
9* For full copyright and license information, please see
10* the docs/CREDITS.txt file.
11*
12*/
13
14class phpbb_wrapper_version_compare_test extends phpbb_test_case
15{
16    public function test_two_parameters()
17    {
18        $this->assertEquals(-1, phpbb_version_compare('1.0.0', '1.0.1'));
19        $this->assertEquals(0, phpbb_version_compare('1.0.0', '1.0.0'));
20        $this->assertEquals(1, phpbb_version_compare('1.0.1', '1.0.0'));
21    }
22    
23    public function test_three_parameters()
24    {
25        $this->assertEquals(true, phpbb_version_compare('1.0.0', '1.0.1', '<'));
26        $this->assertEquals(true, phpbb_version_compare('1.0.0', '1.0.0', '<='));
27        $this->assertEquals(true, phpbb_version_compare('1.0.0', '1.0.0', '='));
28        $this->assertEquals(true, phpbb_version_compare('1.0.0', '1.0.0', '>='));
29        $this->assertEquals(true, phpbb_version_compare('1.0.1', '1.0.0', '>'));
30    }
31
32    public function test_strict_order()
33    {
34        $releases = array(
35            '2.0.0',
36            '2.0.1',
37            // Those are not version_compare() compatible
38            //'2.0.6a',
39            //'2.0.6b',
40            //'2.0.6c',
41            //'2.0.6d',
42            '2.0.7',
43            '2.0.23',
44            '3.0.A1',
45            '3.0.A2',
46            '3.0.A3',
47            '3.0.B1',
48            '3.0.B2',
49            '3.0.B4',
50            '3.0.B5',
51            '3.0.RC1',
52            '3.0.RC5',
53            '3.0.0',
54            '3.0.1',
55            '3.0.2',
56            '3.0.7',
57            '3.0.7-PL1',
58            '3.0.8-RC1',
59            '3.0.8',
60            '3.0.9-dev',
61            '3.0.9-RC1',
62            '3.0.9-RC2',
63            '3.0.9-RC4',
64            '3.0.10-RC1',
65            '3.1-dev',
66            '3.2-A1',
67        );
68
69        for ($i = 0, $size = count($releases); $i < $size - 1; ++$i)
70        {
71            $version1 = $releases[$i];
72            $version2 = $releases[$i + 1];
73
74            $this->assertEquals(
75                true,
76                phpbb_version_compare($version1, $version2, '<'),
77                "Result of version comparison $version1 < $version2 is incorrect."
78            );
79        }
80    }
81
82    /**
83    * @dataProvider equality_test_data
84    */
85    public function test_equality($version1, $version2)
86    {
87        $this->assertEquals(
88            0,
89            phpbb_version_compare($version1, $version2),
90            "Result of version comparison $version1 = $version2 is incorrect."
91        );
92
93        $this->assertEquals(
94            true,
95            phpbb_version_compare($version1, $version2, '='),
96            "Result of version comparison $version1 = $version2 is incorrect."
97        );
98    }
99
100    public static function equality_test_data()
101    {
102        return array(
103            array('1.1.0-A2', '1.1.0-a2'),
104            array('1.1.0-B1', '1.1.0-b1'),
105        );
106    }
107
108    /**
109    * @dataProvider alpha_beta_test_data
110    */
111    public function test_alpha_beta($expected, $version1, $version2)
112    {
113        $this->assertEquals(
114            $expected,
115            phpbb_version_compare($version1, $version2),
116            "Result of version comparison ($version1$version2) = $expected is incorrect."
117        );
118        
119    }
120
121    public static function alpha_beta_test_data()
122    {
123        return array(
124            array(-1, '1.1.0-A2', '1.1.0-B1'),
125            array(-1, '1.1.0-a2', '1.1.0-b1'),
126
127            array(-1, '1.1.0-a2', '1.1.0-B1'),
128            array(-1, '1.1.0-A2', '1.1.0-b1'),
129        );
130    }
131
132}