<?php
use \Punic\Number;
class NumberTest extends PHPUnit_Framework_TestCase
{
public function providerIsNumeric()
{
return array(
array(true, '1,234.56', 'en'),
array(false, '1,234.56', 'it'),
);
}
/**
* @dataProvider providerIsNumeric
*/
public function testIsNumeric($result, $value, $locale)
{
$this->assertSame(
$result,
Number::isNumeric($value, $locale)
);
}
public function providerIsInteger()
{
return array(
array(true, '1,234', 'en'),
array(false, '1,234', 'it'),
array(false, '1,234.56', 'en'),
array(true, '1,234.00', 'en'),
);
}
/**
* @dataProvider providerIsInteger
*/
public function testIsInteger($result, $value, $locale)
{
$this->assertSame(
$result,
Number::isInteger($value, $locale)
);
}
public function providerFormat()
{
return array(
array('1,234.567', 1234.567, null, 'en'),
array('1,235', 1234.567, 0, 'en'),
array('1,200', 1234.567, -2, 'en'),
array('1,234.57', 1234.567, 2, 'en'),
array('1.234,57', 1234.567, 2, 'it'),
array('-1,234.57', -1234.567, 2, 'en'),
array('-1,234.57', '-1234.567', 2, 'en'),
array('1,234.57', '1234.567', 2, 'en'),
array('1,234.00', '1234', 2, 'en'),
array('', '', null, 'en'),
array('', false, null, 'en'),
array('', null, null, 'en'),
array('', array(), null, 'en'),
array('', true, null, 'en'),
array('', '', null, 'en'),
array('0', '0', null, 'en'),
array('0', '0.', null, 'en'),
array('0.0', '.0', null, 'en'),
array('0.0', '0.0', null, 'en'),
array('', '.', null, 'en'),
);
}
/**
* @dataProvider providerFormat
*/
public function testFormat($result, $value, $precision, $locale)
{
$this->assertSame(
$result,
Number::format($value, $precision, $locale)
);
}
public function providerUnformat()
{
return array(
array(1234.567, '1,234.567', 'en'),
array(1235, '1,235', 'en'),
array((float) 1235, '1,235.', 'en'),
array((float) 1235, '1,235.0', 'en'),
array(1234.57, '1.234,57', 'it'),
array(-1234.57, '-1,234.57', 'en'),
array(1234, 1234, 'en'),
);
}
/**
* @dataProvider providerUnformat
*/
public function testUnformat($result, $value, $locale)
{
$this->assertSame(
$result,
Number::unformat($value, $locale)
);
}
}
|