Mercurial > hg > isophonics-drupal-site
comparison core/tests/Drupal/Tests/Component/Utility/NumberTest.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
1 <?php | |
2 | |
3 namespace Drupal\Tests\Component\Utility; | |
4 | |
5 use Drupal\Component\Utility\Number; | |
6 use PHPUnit\Framework\TestCase; | |
7 | |
8 /** | |
9 * Tests number manipulation utilities. | |
10 * | |
11 * @group Utility | |
12 * | |
13 * @coversDefaultClass \Drupal\Component\Utility\Number | |
14 * | |
15 * @see \Drupal\Component\Utility\Number | |
16 */ | |
17 class NumberTest extends TestCase { | |
18 | |
19 /** | |
20 * Tests Number::validStep() without offset. | |
21 * | |
22 * @dataProvider providerTestValidStep | |
23 * @covers ::validStep | |
24 * | |
25 * @param numeric $value | |
26 * The value argument for Number::validStep(). | |
27 * @param numeric $step | |
28 * The step argument for Number::validStep(). | |
29 * @param bool $expected | |
30 * Expected return value from Number::validStep(). | |
31 */ | |
32 public function testValidStep($value, $step, $expected) { | |
33 $return = Number::validStep($value, $step); | |
34 $this->assertEquals($expected, $return); | |
35 } | |
36 | |
37 /** | |
38 * Tests Number::validStep() with offset. | |
39 * | |
40 * @dataProvider providerTestValidStepOffset | |
41 * @covers ::validStep | |
42 * | |
43 * @param numeric $value | |
44 * The value argument for Number::validStep(). | |
45 * @param numeric $step | |
46 * The step argument for Number::validStep(). | |
47 * @param numeric $offset | |
48 * The offset argument for Number::validStep(). | |
49 * @param bool $expected | |
50 * Expected return value from Number::validStep(). | |
51 */ | |
52 public function testValidStepOffset($value, $step, $offset, $expected) { | |
53 $return = Number::validStep($value, $step, $offset); | |
54 $this->assertEquals($expected, $return); | |
55 } | |
56 | |
57 /** | |
58 * Provides data for self::testNumberStep(). | |
59 * | |
60 * @see \Drupal\Tests\Component\Utility\Number::testValidStep | |
61 */ | |
62 public static function providerTestValidStep() { | |
63 return [ | |
64 // Value and step equal. | |
65 [10.3, 10.3, TRUE], | |
66 | |
67 // Valid integer steps. | |
68 [42, 21, TRUE], | |
69 [42, 3, TRUE], | |
70 | |
71 // Valid float steps. | |
72 [42, 10.5, TRUE], | |
73 [1, 1 / 3, TRUE], | |
74 [-100, 100 / 7, TRUE], | |
75 [1000, -10, TRUE], | |
76 | |
77 // Valid and very small float steps. | |
78 [1000.12345, 1e-10, TRUE], | |
79 [3.9999999999999, 1e-13, TRUE], | |
80 | |
81 // Invalid integer steps. | |
82 [100, 30, FALSE], | |
83 [-10, 4, FALSE], | |
84 | |
85 // Invalid float steps. | |
86 [6, 5 / 7, FALSE], | |
87 [10.3, 10.25, FALSE], | |
88 | |
89 // Step mismatches very close to being valid. | |
90 [70 + 9e-7, 10 + 9e-7, FALSE], | |
91 [1936.5, 3e-8, FALSE], | |
92 ]; | |
93 } | |
94 | |
95 /** | |
96 * Data provider for \Drupal\Test\Component\Utility\NumberTest::testValidStepOffset(). | |
97 * | |
98 * @see \Drupal\Test\Component\Utility\NumberTest::testValidStepOffset() | |
99 */ | |
100 public static function providerTestValidStepOffset() { | |
101 return [ | |
102 // Try obvious fits. | |
103 [11.3, 10.3, 1, TRUE], | |
104 [100, 10, 50, TRUE], | |
105 [-100, 90 / 7, -10, TRUE], | |
106 [2 / 7 + 5 / 9, 1 / 7, 5 / 9, TRUE], | |
107 | |
108 // Ensure a small offset is still invalid. | |
109 [10.3, 10.3, 0.0001, FALSE], | |
110 [1 / 5, 1 / 7, 1 / 11, FALSE], | |
111 | |
112 // Try negative values and offsets. | |
113 [1000, 10, -5, FALSE], | |
114 [-10, 4, 0, FALSE], | |
115 [-10, 4, -4, FALSE], | |
116 ]; | |
117 } | |
118 | |
119 /** | |
120 * Tests the alphadecimal conversion functions. | |
121 * | |
122 * @dataProvider providerTestConversions | |
123 * @covers ::intToAlphadecimal | |
124 * @covers ::alphadecimalToInt | |
125 * | |
126 * @param int $value | |
127 * The integer value. | |
128 * @param string $expected | |
129 * The expected alphadecimal value. | |
130 */ | |
131 public function testConversions($value, $expected) { | |
132 $this->assertSame(Number::intToAlphadecimal($value), $expected); | |
133 $this->assertSame($value, Number::alphadecimalToInt($expected)); | |
134 } | |
135 | |
136 /** | |
137 * Data provider for testConversions(). | |
138 * | |
139 * @see testConversions() | |
140 * | |
141 * @return array | |
142 * An array containing: | |
143 * - The integer value. | |
144 * - The alphadecimal value. | |
145 */ | |
146 public function providerTestConversions() { | |
147 return [ | |
148 [0, '00'], | |
149 [1, '01'], | |
150 [10, '0a'], | |
151 [20, '0k'], | |
152 [35, '0z'], | |
153 [36, '110'], | |
154 [100, '12s'], | |
155 ]; | |
156 } | |
157 | |
158 } |