| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278 |
- <?php
- namespace Tools\TestCase\Utility;
- use Tools\Utility\Number;
- use Tools\TestSuite\TestCase;
- use Cake\Core\Configure;
- use Cake\I18n\I18n;
- class NumberTest extends TestCase {
- public $Number = null;
- public function setUp() {
- parent::setUp();
- Number::defaultCurrency(false);
- }
- /**
- * NumberTest::testAverage()
- *
- * @return void
- */
- public function testAverage() {
- $array = array();
- $is = Number::average($array);
- $expected = 0.0;
- $this->assertSame($expected, $is);
- $array = array(3, 8, 4);
- $is = Number::average($array);
- $expected = 5.0;
- $this->assertSame($expected, $is);
- $array = array(0.0, 3.8);
- $is = Number::average($array);
- $expected = 2.0;
- $this->assertSame($expected, $is);
- $array = array(0.0, 3.7);
- $is = Number::average($array, 1);
- $expected = 1.9;
- $this->assertSame($expected, $is);
- $array = array(0.0, 3.7);
- $is = Number::average($array, 2);
- $expected = 1.85;
- $this->assertSame($expected, $is);
- }
- /**
- * NumberTest::testMoney()
- *
- * @return void
- */
- public function testMoney() {
- Number::defaultCurrency('EUR');
- $is = Number::money(22.11, ['locale' => 'DE']);
- $expected = '22,11 €';
- $this->assertSame($expected, $is);
- $is = Number::money(-22.11, ['locale' => 'DE']);
- //$expected = '-22,11 €';
- $expected = '-22,11 €';
- //file_put_contents(TMP . 'x.txt', $is);
- $this->assertSame($expected, $is);
- $is = Number::money(0, ['locale' => 'DE']);
- $expected = '0,00 €';
- $this->assertSame($expected, $is);
- }
- /**
- * NumberTest::testCurrency()
- *
- * @return void
- */
- public function testCurrency() {
- Number::defaultCurrency('EUR');
- $is = Number::currency(22.11);
- $expected = '22,11 €';
- $this->assertSame($expected, $is);
- $is = Number::currency(22.11, null, ['useIntlCode' => true]);
- $expected = '22,11 EUR';
- $this->assertSame($expected, $is);
- $is = Number::currency(-22.11);
- $expected = '-22,11 €';
- $this->assertSame($expected, $is);
- $is = Number::currency(-22.11, null, ['signed' => true]);
- $expected = '-22,11 €';
- $this->assertSame($expected, $is);
- $is = Number::currency(22.11, null, ['signed' => true]);
- $expected = '+22,11 €';
- $this->assertSame($expected, $is);
- $result = Number::currency('4.111', 'GBP', ['locale' => 'EN', 'useIntlCode' => true]);
- $expected = 'GBP 4.11';
- $this->assertEquals($expected, $result);
- }
- /**
- * NumberTest::testFormat()
- *
- * @return void
- */
- public function testFormat() {
- $is = Number::format(22.11);
- $expected = '22,11';
- $this->assertSame($expected, $is);
- $is = Number::format(22933773);
- $expected = '22.933.773';
- $this->assertSame($expected, $is);
- $is = Number::format(22933773, ['places' => 2]);
- $expected = '22.933.773,00';
- $this->assertSame($expected, $is);
- $is = Number::format(-0.895, ['places' => 3]);
- $expected = '-0,895';
- $this->assertSame($expected, $is);
- }
- /**
- * @return void
- */
- public function testToPercentage() {
- $is = Number::toPercentage(22.11, 2, array('decimals' => '.'));
- $expected = '22,11%';
- $this->assertSame($expected, $is);
- $is = Number::toPercentage(22.11, 2, array('locale' => 'en'));
- $expected = '22.11%';
- $this->assertSame($expected, $is);
- $is = Number::toPercentage(22.11, 0, array('decimals' => '.'));
- $expected = '22%';
- $this->assertSame($expected, $is);
- $is = Number::toPercentage(0.2311, 0, array('multiply' => true, 'decimals' => '.'));
- $expected = '23%';
- $this->assertSame($expected, $is);
- }
- /**
- * @return void
- */
- public function testRoundTo() {
- //increment = 10
- $values = array(
- '22' => 20,
- '15' => 20,
- '3.4' => 0,
- '6' => 10,
- '-3.12' => 0,
- '-10' => -10
- );
- foreach ($values as $was => $expected) {
- $is = Number::roundTo($was, 10);
- $this->assertSame($expected, $is, null, $was);
- }
- //increment = 0.1
- $values2 = array(
- '22' => 22.0,
- '15.234' => 15.2,
- '3.4' => 3.4,
- '6.131' => 6.1,
- '-3.17' => -3.2,
- '-10.99' => -11.0
- );
- foreach ($values2 as $was => $expected) {
- $is = Number::roundTo($was, 0.1);
- $this->assertSame($expected, $is, null, $was);
- }
- }
- /**
- * @return void
- */
- public function testRoundUpTo() {
- //increment = 10
- $values = array(
- '22.765' => 30.0,
- '15.22' => 20.0,
- '3.4' => 10.0,
- '6' => 10.0,
- '-3.12' => -0.0,
- '-10' => -10.0
- );
- foreach ($values as $was => $expected) {
- $is = Number::roundUpTo($was, 10);
- $this->assertSame($expected, $is, null, $was);
- }
- //increment = 5
- $values = array(
- '22' => 25.0,
- '15.234' => 20.0,
- '3.4' => 5.0,
- '6.131' => 10.0,
- '-3.17' => -0.0,
- '-10.99' => -10.0
- );
- foreach ($values as $was => $expected) {
- $is = Number::roundUpTo($was, 5);
- $this->assertSame($expected, $is, null, $was);
- }
- }
- /**
- * @return void
- */
- public function testRoundDownTo() {
- //increment = 10
- $values = array(
- '22.765' => 20.0,
- '15.22' => 10.0,
- '3.4' => 0.0,
- '6' => 0.0,
- '-3.12' => -10.0,
- '-10' => -10.0
- );
- foreach ($values as $was => $expected) {
- $is = Number::roundDownTo($was, 10);
- $this->assertSame($expected, $is, null, $was);
- }
- //increment = 3
- $values = array(
- '22' => 21.0,
- '15.234' => 15.0,
- '3.4' => 3.0,
- '6.131' => 6.0,
- '-3.17' => -6.0,
- '-10.99' => -12.0
- );
- foreach ($values as $was => $expected) {
- $is = Number::roundDownTo($was, 3);
- $this->assertSame($expected, $is, null, $was);
- }
- }
- /**
- */
- public function testGetDecimalPlaces() {
- $values = array(
- '100' => -2,
- '0.0001' => 4,
- '10' => -1,
- '0.1' => 1,
- '1' => 0,
- '0.001' => 3
- );
- foreach ($values as $was => $expected) {
- $is = Number::getDecimalPlaces($was, 10);
- $this->assertSame($expected, $is); //, null, $was
- }
- }
- /**
- * NumberTest::testCurrencyUnknown()
- *
- * @return void
- */
- public function testCurrencyUnknown() {
- $result = Number::currency('4.111', 'XYZ', ['locale' => 'DE']);
- $expected = '4,11 XYZ';
- file_put_contents(TMP . 'x.txt', $result);
- $this->assertEquals($expected, $result);
- }
- }
|