BitwiseTest.php 1.64 KB
Newer Older
冯超鹏's avatar
冯超鹏 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
<?php
namespace MathPHP\Tests\Functions;

use MathPHP\Functions\Bitwise;

class BitwiseTest extends \PHPUnit\Framework\TestCase
{
    /**
     * @dataProvider dataProviderForBitwiseAdd
     * @param        int   $a
     * @param        int   $b
     * @param        array $expected
     */
    public function testBitwiseAdd(int $a, int $b, array $expected)
    {
        $results = Bitwise::add($a, $b);
        $this->assertEquals($expected, $results);
    }

    public function dataProviderForBitwiseAdd(): array
    {
        return [
            [
                1, 1, [
                    'overflow' => false,
                    'value'    => 2,
                ],
            ],
            [
                1, -1, [
                    'overflow' => true,
                    'value'    => 0,
                ],
            ],
            [
                \PHP_INT_MAX, 1, [
                    'overflow' => false,
                    'value'    => \PHP_INT_MIN,
                ],
            ],
            [
                -1, -1, [
                    'overflow' => true,
                    'value'    => -2,
                ],
            ],
            [
                \PHP_INT_MIN, \PHP_INT_MIN, [
                    'overflow' => true,
                    'value'    => 0,
                ],
            ],
            [
                \PHP_INT_MIN, \PHP_INT_MAX, [
                    'overflow' => false,
                    'value'    => -1,
                ],
            ],
            [
                0, 0, [
                    'overflow' => false,
                    'value'    => 0,
                ],
            ],

        ];
    }
}