BitwiseTest.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. namespace MathPHP\Tests\Functions;
  3. use MathPHP\Functions\Bitwise;
  4. class BitwiseTest extends \PHPUnit\Framework\TestCase
  5. {
  6. /**
  7. * @test add
  8. * @dataProvider dataProviderForBitwiseAdd
  9. * @param int $a
  10. * @param int $b
  11. * @param array $expected
  12. */
  13. public function testBitwiseAdd(int $a, int $b, array $expected)
  14. {
  15. // When
  16. $sum = Bitwise::add($a, $b);
  17. // Then
  18. $this->assertEquals($expected, $sum);
  19. }
  20. public function dataProviderForBitwiseAdd(): array
  21. {
  22. return [
  23. [
  24. 1, 1, [
  25. 'overflow' => false,
  26. 'value' => 2,
  27. ],
  28. ],
  29. [
  30. 1, -1, [
  31. 'overflow' => true,
  32. 'value' => 0,
  33. ],
  34. ],
  35. [
  36. \PHP_INT_MAX, 1, [
  37. 'overflow' => false,
  38. 'value' => \PHP_INT_MIN,
  39. ],
  40. ],
  41. [
  42. -1, -1, [
  43. 'overflow' => true,
  44. 'value' => -2,
  45. ],
  46. ],
  47. [
  48. \PHP_INT_MIN, \PHP_INT_MIN, [
  49. 'overflow' => true,
  50. 'value' => 0,
  51. ],
  52. ],
  53. [
  54. \PHP_INT_MIN, \PHP_INT_MAX, [
  55. 'overflow' => false,
  56. 'value' => -1,
  57. ],
  58. ],
  59. [
  60. 0, 0, [
  61. 'overflow' => false,
  62. 'value' => 0,
  63. ],
  64. ],
  65. ];
  66. }
  67. }