diff --git a/src/Formatters/OptionalQuantityFormatter.php b/src/Formatters/OptionalQuantityFormatter.php index c191755..8951afe 100644 --- a/src/Formatters/OptionalQuantityFormatter.php +++ b/src/Formatters/OptionalQuantityFormatter.php @@ -15,6 +15,7 @@ use InvalidArgumentException; use Web3\Utils; use Web3\Formatters\IFormatter; use Web3\Validators\TagValidator; +use Web3\Formatters\QuantityFormatter; class OptionalQuantityFormatter implements IFormatter { @@ -29,9 +30,6 @@ class OptionalQuantityFormatter implements IFormatter if (TagValidator::validate($value)) { return $value; } - $value = Utils::toString($value); - $bn = Utils::toBn($value); - - return '0x' . $bn->toHex(true); + return QuantityFormatter::format($value); } } \ No newline at end of file diff --git a/src/Formatters/QuantityFormatter.php b/src/Formatters/QuantityFormatter.php index 59bf475..1f03759 100644 --- a/src/Formatters/QuantityFormatter.php +++ b/src/Formatters/QuantityFormatter.php @@ -35,7 +35,7 @@ class QuantityFormatter implements IFormatter $hex = preg_replace('/^0x0+(?!$)/', '', $value); } else { $bn = Utils::toBn($value); - $hex = $bn->toHex(true); + $hex = $bn->toHex(true); } if (empty($hex)) { $hex = '0'; diff --git a/test/unit/OptionalQuantityFormatterTest.php b/test/unit/OptionalQuantityFormatterTest.php new file mode 100644 index 0000000..792db26 --- /dev/null +++ b/test/unit/OptionalQuantityFormatterTest.php @@ -0,0 +1,60 @@ +formatter = new OptionalQuantityFormatter; + } + + /** + * testFormat + * + * @return void + */ + public function testFormat() + { + $formatter = $this->formatter; + + $this->assertEquals('0x927c0', $formatter->format(0x0927c0)); + $this->assertEquals('0x927c0', $formatter->format('0x0927c0')); + $this->assertEquals('0x927c0', $formatter->format('0x927c0')); + $this->assertEquals('0x927c0', $formatter->format('600000')); + $this->assertEquals('0x927c0', $formatter->format(600000)); + + $this->assertEquals('0xea60', $formatter->format('0x0ea60')); + $this->assertEquals('0xea60', $formatter->format('0xea60')); + $this->assertEquals('0xea60', $formatter->format(0x0ea60)); + $this->assertEquals('0xea60', $formatter->format('60000')); + $this->assertEquals('0xea60', $formatter->format(60000)); + + $this->assertEquals('0x0', $formatter->format(0x00)); + $this->assertEquals('0x0', $formatter->format('0x00')); + $this->assertEquals('0x0', $formatter->format('0x0')); + $this->assertEquals('0x0', $formatter->format('0')); + $this->assertEquals('0x0', $formatter->format(0)); + + $this->assertEquals('latest', $formatter->format('latest')); + $this->assertEquals('earliest', $formatter->format('earliest')); + $this->assertEquals('pending', $formatter->format('pending')); + $this->assertEquals('0x0', $formatter->format('hello')); + } +} \ No newline at end of file