service = self::$container->get(AmountFormatter::class); } public function testFormatWithoutUnit() { $this->assertEquals('2', $this->service->format(2.321)); $this->assertEquals('1002', $this->service->format(1002.356)); $this->assertEquals('1000454', $this->service->format(1000454.0)); $this->assertEquals('0', $this->service->format(0.01)); $this->assertEquals('0', $this->service->format(0)); } public function testInvalidInput() { $this->expectException(\InvalidArgumentException::class); $this->service->format('test'); } public function testFormatUnitWithoutSI() { $meters = new MeasurementUnit(); $meters->setIsInteger(false)->setUseSIPrefix(false)->setUnit('m'); $this->assertEquals('0.32 m', $this->service->format(0.3245, $meters)); $this->assertEquals('10003.56 m', $this->service->format(10003.556, $meters)); $this->assertEquals('0.00 m', $this->service->format(0.0004, $meters)); } public function testFormatUnitWithSI() { $meters = new MeasurementUnit(); $meters->setIsInteger(false)->setUseSIPrefix(true)->setUnit('m'); $this->assertEquals('0.32 m', $this->service->format(0.3245, $meters)); $this->assertEquals('12.32 m', $this->service->format(12.323, $meters)); $this->assertEquals('120.32 km', $this->service->format(120320.45, $meters)); $this->assertEquals('0.32 mm', $this->service->format(0.00032, $meters)); } public function testFormatMoreDigits() { $this->assertEquals('12.12345', $this->service->format(12.1234532, null, ['is_integer' => false, 'decimals' => 5])); $this->assertEquals('12.1', $this->service->format(12.1234532, null, ['is_integer' => false, 'decimals' => 1])); } public function testFormatOptionsOverride() { $meters = new MeasurementUnit(); $meters->setIsInteger(false)->setUseSIPrefix(true)->setUnit('m'); $this->assertEquals('12.32', $this->service->format(12.323, $meters, ['unit' => ''])); $this->assertEquals('12002.32 m', $this->service->format(12002.32, $meters, ['show_prefix' => false])); $this->assertEquals('123 m', $this->service->format(123.234, $meters, ['is_integer' => true])); } }