123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- <?php
- declare(strict_types=1);
- namespace Ramsey\Uuid\Test\Math;
- use Ramsey\Uuid\Exception\InvalidArgumentException;
- use Ramsey\Uuid\Math\BrickMathCalculator;
- use Ramsey\Uuid\Math\RoundingMode;
- use Ramsey\Uuid\Test\TestCase;
- use Ramsey\Uuid\Type\Hexadecimal;
- use Ramsey\Uuid\Type\Integer as IntegerObject;
- class BrickMathCalculatorTest extends TestCase
- {
- public function testAdd(): void
- {
- $int1 = new IntegerObject(5);
- $int2 = new IntegerObject(6);
- $int3 = new IntegerObject(7);
- $calculator = new BrickMathCalculator();
- $result = $calculator->add($int1, $int2, $int3);
- $this->assertSame('18', $result->toString());
- }
- public function testSubtract(): void
- {
- $int1 = new IntegerObject(5);
- $int2 = new IntegerObject(6);
- $int3 = new IntegerObject(7);
- $calculator = new BrickMathCalculator();
- $result = $calculator->subtract($int1, $int2, $int3);
- $this->assertSame('-8', $result->toString());
- }
- public function testMultiply(): void
- {
- $int1 = new IntegerObject(5);
- $int2 = new IntegerObject(6);
- $int3 = new IntegerObject(7);
- $calculator = new BrickMathCalculator();
- $result = $calculator->multiply($int1, $int2, $int3);
- $this->assertSame('210', $result->toString());
- }
- public function testDivide(): void
- {
- $int1 = new IntegerObject(1023);
- $int2 = new IntegerObject(6);
- $int3 = new IntegerObject(7);
- $calculator = new BrickMathCalculator();
- $result = $calculator->divide(RoundingMode::HALF_UP, 0, $int1, $int2, $int3);
- $this->assertSame('24', $result->toString());
- }
- public function testFromBase(): void
- {
- $calculator = new BrickMathCalculator();
- $result = $calculator->fromBase('ffffffffffffffffffff', 16);
- $this->assertInstanceOf(IntegerObject::class, $result);
- $this->assertSame('1208925819614629174706175', $result->toString());
- }
- public function testToBase(): void
- {
- $intValue = new IntegerObject('1208925819614629174706175');
- $calculator = new BrickMathCalculator();
- $this->assertSame('ffffffffffffffffffff', $calculator->toBase($intValue, 16));
- }
- public function testToHexadecimal(): void
- {
- $intValue = new IntegerObject('1208925819614629174706175');
- $calculator = new BrickMathCalculator();
- $result = $calculator->toHexadecimal($intValue);
- $this->assertInstanceOf(Hexadecimal::class, $result);
- $this->assertSame('ffffffffffffffffffff', $result->toString());
- }
- public function testFromBaseThrowsException(): void
- {
- $calculator = new BrickMathCalculator();
- $this->expectException(InvalidArgumentException::class);
- $this->expectExceptionMessage('"o" is not a valid character in base 16');
- $calculator->fromBase('foobar', 16);
- }
- public function testToBaseThrowsException(): void
- {
- $calculator = new BrickMathCalculator();
- $this->expectException(InvalidArgumentException::class);
- $this->expectExceptionMessage('Base 1024 is out of range [2, 36]');
- $calculator->toBase(new IntegerObject(42), 1024);
- }
- }
|