Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
22.54% covered (danger)
22.54%
16 / 71
55.56% covered (warning)
55.56%
5 / 9
CRAP
0.00% covered (danger)
0.00%
0 / 1
phpbb_functions_acp_validate_range_test
22.54% covered (danger)
22.54%
16 / 71
55.56% covered (warning)
55.56%
5 / 9
46.65
0.00% covered (danger)
0.00%
0 / 1
 setUp
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 validate_range_data_fit
0.00% covered (danger)
0.00%
0 / 23
0.00% covered (danger)
0.00%
0 / 1
2
 test_validate_range_fit
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
 validate_range_data_too_low
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 1
2
 test_validate_range_too_low
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
 validate_range_data_too_big
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 1
2
 test_validate_range_too_big
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
 validate_range_data_too_long
0.00% covered (danger)
0.00%
0 / 6
0.00% covered (danger)
0.00%
0 / 1
2
 test_validate_range_too_long
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
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
14require_once __DIR__ . '/../../phpBB/includes/functions_acp.php';
15
16class phpbb_functions_acp_validate_range_test extends phpbb_test_case
17{
18    protected function setUp(): void
19    {
20        parent::setUp();
21
22        global $user;
23
24        $user = new phpbb_mock_user();
25        $user->lang = new phpbb_mock_lang();
26    }
27
28    /**
29    * Data sets that don't throw an error.
30    */
31    public static function validate_range_data_fit()
32    {
33        return array(
34            array(array(array('column_type' => 'BOOL', 'lang' => 'TEST', 'value' => 0))),
35            array(array(array('column_type' => 'BOOL', 'lang' => 'TEST', 'value' => 1))),
36
37            array(array(array('column_type' => 'USINT', 'lang' => 'TEST', 'value' => 0))),
38            array(array(array('column_type' => 'USINT', 'lang' => 'TEST', 'value' => 65535))),
39            array(array(array('column_type' => 'USINT:32:128', 'lang' => 'TEST', 'value' => 35))),
40
41            array(array(array('column_type' => 'UINT', 'lang' => 'TEST', 'value' => 0))),
42            array(array(array('column_type' => 'UINT', 'lang' => 'TEST', 'value' => (int) 0x7fffffff))),
43            array(array(array('column_type' => 'UINT:32:128', 'lang' => 'TEST', 'value' => 35))),
44
45            array(array(array('column_type' => 'INT', 'lang' => 'TEST', 'value' => (int) -2147483648))),
46            array(array(array('column_type' => 'INT', 'lang' => 'TEST', 'value' => (int) 0x7fffffff))),
47            array(array(array('column_type' => 'INT:-32:128', 'lang' => 'TEST', 'value' => -28))),
48            array(array(array('column_type' => 'INT:-32:128', 'lang' => 'TEST', 'value' => 35))),
49
50            array(array(array('column_type' => 'TINT', 'lang' => 'TEST', 'value' => -128))),
51            array(array(array('column_type' => 'TINT', 'lang' => 'TEST', 'value' => 127))),
52            array(array(array('column_type' => 'TINT:-32:64', 'lang' => 'TEST', 'value' => -16))),
53            array(array(array('column_type' => 'TINT:-32:64', 'lang' => 'TEST', 'value' => 16))),
54
55            array(array(array('column_type' => 'VCHAR', 'lang' => 'TEST', 'value' => ''))),
56            array(array(array('column_type' => 'VCHAR', 'lang' => 'TEST', 'value' => str_repeat('a', 255)))),
57            array(array(array('column_type' => 'VCHAR', 'lang' => 'TEST', 'value' => str_repeat("\xC3\x84", 255)))),
58            array(array(array('column_type' => 'VCHAR:128', 'lang' => 'TEST', 'value' => str_repeat('a', 128)))),
59            array(array(array('column_type' => 'VCHAR:128', 'lang' => 'TEST', 'value' => str_repeat("\xC3\x84", 128)))),
60        );
61    }
62
63    /**
64    * @dataProvider validate_range_data_fit
65    */
66    public function test_validate_range_fit($test_data)
67    {
68        $phpbb_error = array();
69        validate_range($test_data, $phpbb_error);
70
71        $this->assertEquals(array(), $phpbb_error);
72    }
73
74    /**
75    * Data sets that throw the SETTING_TOO_LOW-error.
76    */
77    public static function validate_range_data_too_low()
78    {
79        return array(
80            array(array(array('column_type' => 'BOOL', 'lang' => 'TEST', 'value' => -1))),
81
82            array(array(array('column_type' => 'USINT', 'lang' => 'TEST', 'value' => -1))),
83            array(array(array('column_type' => 'USINT:32:128', 'lang' => 'TEST', 'value' => 31))),
84
85            array(array(array('column_type' => 'UINT', 'lang' => 'TEST', 'value' => -1))),
86            array(array(array('column_type' => 'UINT:32:128', 'lang' => 'TEST', 'value' => 31))),
87
88            array(array(array('column_type' => 'INT', 'lang' => 'TEST', 'value' => ((int) -2147483648) - 1))),
89            array(array(array('column_type' => 'INT:32:128', 'lang' => 'TEST', 'value' => 31))),
90            array(array(array('column_type' => 'INT:-32:128', 'lang' => 'TEST', 'value' => -33))),
91
92            array(array(array('column_type' => 'TINT', 'lang' => 'TEST', 'value' => -129))),
93            array(array(array('column_type' => 'TINT:32:64', 'lang' => 'TEST', 'value' => 31))),
94            array(array(array('column_type' => 'TINT:-32:64', 'lang' => 'TEST', 'value' => -33))),
95        );
96    }
97
98    /**
99    * @dataProvider validate_range_data_too_low
100    */
101    public function test_validate_range_too_low($test_data)
102    {
103        $phpbb_error = array();
104        validate_range($test_data, $phpbb_error);
105
106        $this->assertEquals(array('SETTING_TOO_LOW'), $phpbb_error);
107    }
108
109    /**
110    * Data sets that throw the SETTING_TOO_BIG-error.
111    */
112    public static function validate_range_data_too_big()
113    {
114        return array(
115            array(array(array('column_type' => 'BOOL', 'lang' => 'TEST', 'value' => 2))),
116
117            array(array(array('column_type' => 'USINT', 'lang' => 'TEST', 'value' => 65536))),
118            array(array(array('column_type' => 'USINT:32:128', 'lang' => 'TEST', 'value' => 129))),
119
120            array(array(array('column_type' => 'UINT', 'lang' => 'TEST', 'value' => ((int) 0x7fffffff) + 1))),
121            array(array(array('column_type' => 'UINT:32:128', 'lang' => 'TEST', 'value' => 129))),
122
123            array(array(array('column_type' => 'INT', 'lang' => 'TEST', 'value' => ((int) 0x7fffffff) + 1))),
124            array(array(array('column_type' => 'INT:-32:-16', 'lang' => 'TEST', 'value' => -15))),
125            array(array(array('column_type' => 'INT:-32:128', 'lang' => 'TEST', 'value' => 129))),
126
127            array(array(array('column_type' => 'TINT', 'lang' => 'TEST', 'value' => 128))),
128            array(array(array('column_type' => 'TINT:-32:-16', 'lang' => 'TEST', 'value' => -15))),
129            array(array(array('column_type' => 'TINT:-32:64', 'lang' => 'TEST', 'value' => 65))),
130        );
131    }
132
133    /**
134    * @dataProvider validate_range_data_too_big
135    */
136    public function test_validate_range_too_big($test_data)
137    {
138        $phpbb_error = array();
139        validate_range($test_data, $phpbb_error);
140
141        $this->assertEquals(array('SETTING_TOO_BIG'), $phpbb_error);
142    }
143
144    /**
145    * Data sets that throw the SETTING_TOO_LONG-error.
146    */
147    public static function validate_range_data_too_long()
148    {
149        return array(
150            array(array(array('column_type' => 'VCHAR', 'lang' => 'TEST', 'value' => str_repeat('a', 256)))),
151            array(array(array('column_type' => 'VCHAR', 'lang' => 'TEST', 'value' => str_repeat("\xC3\x84", 256)))),
152            array(array(array('column_type' => 'VCHAR:128', 'lang' => 'TEST', 'value' => str_repeat('a', 129)))),
153            array(array(array('column_type' => 'VCHAR:128', 'lang' => 'TEST', 'value' => str_repeat("\xC3\x84", 129)))),
154        );
155    }
156
157    /**
158    * @dataProvider validate_range_data_too_long
159    */
160    public function test_validate_range_too_long($test_data)
161    {
162        $phpbb_error = array();
163        validate_range($test_data, $phpbb_error);
164
165        $this->assertEquals(array('SETTING_TOO_LONG'), $phpbb_error);
166    }
167}