3 namespace Drupal\Tests\Component\Utility;
5 use Drupal\Component\Utility\Number;
6 use PHPUnit\Framework\TestCase;
9 * Tests number manipulation utilities.
13 * @coversDefaultClass \Drupal\Component\Utility\Number
15 * @see \Drupal\Component\Utility\Number
17 class NumberTest extends TestCase {
20 * Tests Number::validStep() without offset.
22 * @dataProvider providerTestValidStep
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().
32 public function testValidStep($value, $step, $expected) {
33 $return = Number::validStep($value, $step);
34 $this->assertEquals($expected, $return);
38 * Tests Number::validStep() with offset.
40 * @dataProvider providerTestValidStepOffset
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().
52 public function testValidStepOffset($value, $step, $offset, $expected) {
53 $return = Number::validStep($value, $step, $offset);
54 $this->assertEquals($expected, $return);
58 * Provides data for self::testNumberStep().
60 * @see \Drupal\Tests\Component\Utility\Number::testValidStep
62 public static function providerTestValidStep() {
64 // Value and step equal.
67 // Valid integer steps.
74 [-100, 100 / 7, TRUE],
77 // Valid and very small float steps.
78 [1000.12345, 1e-10, TRUE],
79 [3.9999999999999, 1e-13, TRUE],
81 // Invalid integer steps.
85 // Invalid float steps.
89 // Step mismatches very close to being valid.
90 [70 + 9e-7, 10 + 9e-7, FALSE],
91 [1936.5, 3e-8, FALSE],
96 * Data provider for \Drupal\Test\Component\Utility\NumberTest::testValidStepOffset().
98 * @see \Drupal\Test\Component\Utility\NumberTest::testValidStepOffset()
100 public static function providerTestValidStepOffset() {
103 [11.3, 10.3, 1, TRUE],
105 [-100, 90 / 7, -10, TRUE],
106 [2 / 7 + 5 / 9, 1 / 7, 5 / 9, TRUE],
108 // Ensure a small offset is still invalid.
109 [10.3, 10.3, 0.0001, FALSE],
110 [1 / 5, 1 / 7, 1 / 11, FALSE],
112 // Try negative values and offsets.
113 [1000, 10, -5, FALSE],
120 * Tests the alphadecimal conversion functions.
122 * @dataProvider providerTestConversions
123 * @covers ::intToAlphadecimal
124 * @covers ::alphadecimalToInt
128 * @param string $expected
129 * The expected alphadecimal value.
131 public function testConversions($value, $expected) {
132 $this->assertSame(Number::intToAlphadecimal($value), $expected);
133 $this->assertSame($value, Number::alphadecimalToInt($expected));
137 * Data provider for testConversions().
139 * @see testConversions()
142 * An array containing:
143 * - The integer value.
144 * - The alphadecimal value.
146 public function providerTestConversions() {