Quantity formatter test.
This commit is contained in:
parent
b1318bb0d2
commit
e130d45068
@ -26,8 +26,22 @@ class QuantityFormatter implements IFormatter
|
||||
public static function format($value)
|
||||
{
|
||||
$value = Utils::toString($value);
|
||||
$bn = Utils::toBn($value);
|
||||
|
||||
return '0x' . $bn->toHex(true);
|
||||
if (Utils::isZeroPrefixed($value)) {
|
||||
// test hex with zero ahead, hardcode 0x0
|
||||
if ($value === '0x0' || strpos($value, '0x0') !== 0) {
|
||||
return $value;
|
||||
}
|
||||
$hex = preg_replace('/^0x0+(?!$)/', '', $value);
|
||||
} else {
|
||||
$bn = Utils::toBn($value);
|
||||
$hex = $bn->toHex(true);
|
||||
}
|
||||
if (empty($hex)) {
|
||||
$hex = '0';
|
||||
} else {
|
||||
$hex = preg_replace('/^0+(?!$)/', '', $hex);
|
||||
}
|
||||
return '0x' . $hex;
|
||||
}
|
||||
}
|
55
test/unit/QuantityFormatterTest.php
Normal file
55
test/unit/QuantityFormatterTest.php
Normal file
@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
namespace Test\Unit;
|
||||
|
||||
use Test\TestCase;
|
||||
use Web3\Formatters\QuantityFormatter;
|
||||
|
||||
class QuantityFormatterTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* formatter
|
||||
*
|
||||
* @var \Web3\Formatters\QuantityFormatter
|
||||
*/
|
||||
protected $formatter;
|
||||
|
||||
/**
|
||||
* setUp
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
$this->formatter = new QuantityFormatter;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user