Quantity formatter test.

This commit is contained in:
sc0Vu 2018-01-24 12:25:01 +08:00
parent b1318bb0d2
commit e130d45068
2 changed files with 71 additions and 2 deletions

View File

@ -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;
}
}

View 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));
}
}