!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache. PHP/8.1.30 

uname -a: Linux server1.tuhinhossain.com 5.15.0-163-generic #173-Ubuntu SMP Tue Oct 14 17:51:00 UTC
2025 x86_64
 

uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root)  

Safe-mode: OFF (not secure)

/home/picotech/domains/wataxi.picotech.app/public_html/vendor/akaunting/money/tests/   drwxr-xr-x
Free 23.49 GB of 117.98 GB (19.91%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     MoneyTest.php (10.32 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

use Akaunting\Money\Currency;
use 
Akaunting\Money\Money;
use 
PHPUnit\Framework\TestCase;

class 
MoneyTest extends TestCase
{
    public function 
testFactoryMethods()
    {
        
$this->assertEquals(Money::USD(25), Money::USD(10)->add(Money::USD(15)));
        
$this->assertEquals(Money::TRY(25), Money::TRY(10)->add(Money::TRY(15)));
    }

    public function 
testBigValue()
    {
        
$this->assertEquals((string) new Money(123456789.321, new Currency('USD'), true), '$123,456,789.32');
    }

    public function 
testValueString()
    {
        
$this->assertEquals(new Money('1', new Currency('USD')), new Money(1, new Currency('USD')));
        
$this->assertEquals(new Money('1.1', new Currency('USD')), new Money(1.1, new Currency('USD')));
    }

    public function 
testValueFunction()
    {
        
$this->assertEquals(new Money(function () {
            return 
1;
        }, new 
Currency('USD')), new Money(1, new Currency('USD')));
    }

    public function 
testStringThrowsException()
    {
        
$this->expectException(UnexpectedValueException::class);

        new 
Money('foo', new Currency('USD'));
    }

    public function 
testLocale()
    {
        
Money::setLocale(null);
        
$this->assertEquals('en_GB'Money::getLocale());
        
Money::setLocale('en_US');
        
$this->assertEquals('en_US'Money::getLocale());
    }

    public function 
testInvalidOperandThrowsException()
    {
        
$this->expectException(InvalidArgumentException::class);

        
$m = new Money(100, new Currency('USD'));
        
$m->convert(new Currency('USD'), 'foo');
    }

    public function 
testInvalidRoundingModeThrowsException()
    {
        
$this->expectException(OutOfBoundsException::class);

        
$m = new Money(100, new Currency('USD'));
        
$m->convert(new Currency('USD'), 1'foo');
    }

    public function 
testConvertUnit()
    {
        
$m1 = new Money(100, new Currency('USD'), true);
        
$m2 = new Money(100, new Currency('USD'));

        
$this->assertEquals(10000$m1->getAmount());
        
$this->assertNotEquals($m1$m2);
    }

    public function 
testGetters()
    {
        
$m = new Money(100, new Currency('USD'));
        
$this->assertEquals(100$m->getAmount());
        
$this->assertEquals(1$m->getValue());
        
$this->assertEquals(new Currency('USD'), $m->getCurrency());
        
$this->assertNotEmpty($m->toArray());
        
$this->assertJson($m->toJson());
        
$this->assertNotEmpty($m->jsonSerialize());
    }

    public function 
testSameCurrency()
    {
        
$m = new Money(100, new Currency('USD'));
        
$this->assertTrue($m->isSameCurrency(new Money(100, new Currency('USD'))));
        
$this->assertFalse($m->isSameCurrency(new Money(100, new Currency('TRY'))));
    }

    public function 
testComparison()
    {
        
$m1 = new Money(50, new Currency('USD'));
        
$m2 = new Money(100, new Currency('USD'));
        
$m3 = new Money(200, new Currency('USD'));

        
$this->assertEquals(-1$m2->compare($m3));
        
$this->assertEquals(1$m2->compare($m1));
        
$this->assertEquals(0$m2->compare($m2));

        
$this->assertTrue($m2->equals($m2));
        
$this->assertFalse($m3->equals($m2));

        
$this->assertTrue($m3->greaterThan($m2));
        
$this->assertFalse($m2->greaterThan($m3));

        
$this->assertTrue($m2->greaterThanOrEqual($m2));
        
$this->assertFalse($m2->greaterThanOrEqual($m3));

        
$this->assertTrue($m2->lessThan($m3));
        
$this->assertFalse($m3->lessThan($m2));

        
$this->assertTrue($m2->lessThanOrEqual($m2));
        
$this->assertFalse($m3->lessThanOrEqual($m2));
    }

    public function 
testDifferentCurrenciesCannotBeCompared()
    {
        
$this->expectException(InvalidArgumentException::class);

        
$m1 = new Money(100, new Currency('USD'));
        
$m2 = new Money(100, new Currency('TRY'));

        
$m1->compare($m2);
    }

    public function 
testConversion()
    {
        
$m1 = new Money(100, new Currency('USD'));
        
$m2 = new Money(350, new Currency('TRY'));

        
$this->assertEquals($m1->convert(new Currency('TRY'), 3.5), $m2);
    }

    public function 
testAddition()
    {
        
$m1 = new Money(1100.101, new Currency('USD'));
        
$m2 = new Money(1100.021, new Currency('USD'));
        
$sum $m1->add($m2);

        
$this->assertEquals(new Money(2200.122, new Currency('USD')), $sum);
        
$this->assertNotEquals($sum$m1);
        
$this->assertNotEquals($sum$m2);
    }

    public function 
testDifferentCurrenciesCannotBeAdded()
    {
        
$this->expectException(InvalidArgumentException::class);

        
$m1 = new Money(100, new Currency('USD'));
        
$m2 = new Money(100, new Currency('TRY'));

        
$m1->add($m2);
    }

    public function 
testSubtraction()
    {
        
$m1 = new Money(100.10, new Currency('USD'));
        
$m2 = new Money(100.02, new Currency('USD'));
        
$diff $m1->subtract($m2);

        
$this->assertEquals(new Money(0.08, new Currency('USD')), $diff);
        
$this->assertNotSame($diff$m1);
        
$this->assertNotSame($diff$m2);
    }

    public function 
testDifferentCurrenciesCannotBeSubtracted()
    {
        
$this->expectException(InvalidArgumentException::class);

        
$m1 = new Money(100, new Currency('USD'));
        
$m2 = new Money(100, new Currency('TRY'));

        
$m1->subtract($m2);
    }

    public function 
testMultiplication()
    {
        
$m1 = new Money(15, new Currency('USD'));
        
$m2 = new Money(1, new Currency('USD'));

        
$this->assertEquals($m1$m2->multiply(15));
        
$this->assertNotEquals($m1$m2->multiply(10));
    }

    public function 
testDivision()
    {
        
$m1 = new Money(2, new Currency('USD'));
        
$m2 = new Money(10, new Currency('USD'));

        
$this->assertEquals($m1$m2->divide(5));
        
$this->assertNotEquals($m1$m2->divide(2));
    }

    public function 
testInvalidDivisor()
    {
        
$this->expectException(InvalidArgumentException::class);

        
$m = new Money(100, new Currency('USD'));
        
$m->divide(0);
    }

    public function 
testAllocation()
    {
        
$m1 = new Money(100, new Currency('USD'));

        list(
$part1$part2$part3) = $m1->allocate([111]);
        
$this->assertEquals(new Money(34, new Currency('USD')), $part1);
        
$this->assertEquals(new Money(33, new Currency('USD')), $part2);
        
$this->assertEquals(new Money(33, new Currency('USD')), $part3);

        
$m2 = new Money(101, new Currency('USD'));

        list(
$part1$part2$part3) = $m2->allocate([111]);
        
$this->assertEquals(new Money(34, new Currency('USD')), $part1);
        
$this->assertEquals(new Money(34, new Currency('USD')), $part2);
        
$this->assertEquals(new Money(33, new Currency('USD')), $part3);
    }

    public function 
testAllocationOrderIsImportant()
    {
        
$m = new Money(5, new Currency('USD'));

        list(
$part1$part2) = $m->allocate([37]);
        
$this->assertEquals(new Money(2, new Currency('USD')), $part1);
        
$this->assertEquals(new Money(3, new Currency('USD')), $part2);

        list(
$part1$part2) = $m->allocate([73]);
        
$this->assertEquals(new Money(4, new Currency('USD')), $part1);
        
$this->assertEquals(new Money(1, new Currency('USD')), $part2);
    }

    public function 
testComparators()
    {
        
$m1 = new Money(0, new Currency('USD'));
        
$m2 = new Money(-1, new Currency('USD'));
        
$m3 = new Money(1, new Currency('USD'));
        
$m4 = new Money(1, new Currency('USD'));
        
$m5 = new Money(1, new Currency('USD'));
        
$m6 = new Money(-1, new Currency('USD'));

        
$this->assertTrue($m1->isZero());
        
$this->assertTrue($m2->isNegative());
        
$this->assertTrue($m3->isPositive());
        
$this->assertFalse($m4->isZero());
        
$this->assertFalse($m5->isNegative());
        
$this->assertFalse($m6->isPositive());
    }

    public function 
testWithoutZeroes()
    {
        
$m1 = new Money(100, new Currency('USD'), true);
        
$m2 = new Money(100.50, new Currency('USD'), true);

        
$this->assertEquals('$100.00'$m1->format());
        
$this->assertEquals('$100'$m1->formatWithoutZeroes());

        
$this->assertEquals('$100.50'$m2->format());
        
$this->assertEquals('$100.50'$m2->formatWithoutZeroes());
    }

    
/**
     * @dataProvider providesFormatLocale
     */
    
public function testFormatLocale($expected$cur$amount$locale$message)
    {
        
$this->assertEquals($expectedMoney::$cur($amount)->formatLocale($locale), $message);
    }

    public function 
providesFormatLocale()
    {
        return [
            [
'₺1.548,48''TRY'154848.25895'tr_TR''Example: ' __LINE__],
            [
'$1,548.48''USD'154848.25895'en_US''Example: ' __LINE__],
        ];
    }

    public function 
testCallbackFormatLocale()
    {
        
$m = new Money(1, new Currency('USD'));

        
$actual $m->formatLocale(null, function (NumberFormatter $formatter) {
            
$formatter->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS0);
        });

        
$formatter = new NumberFormatter($m::getLocale(), NumberFormatter::CURRENCY);
        
$formatter->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS0);
        
$expected $formatter->formatCurrency('0.01''USD');

        
$this->assertEquals($expected$actual);
    }

    public function 
testFormatSimple()
    {
        
$m1 = new Money(1, new Currency('USD'));
        
$m2 = new Money(10, new Currency('USD'));
        
$m3 = new Money(100, new Currency('USD'));
        
$m4 = new Money(1000, new Currency('USD'));
        
$m5 = new Money(10000, new Currency('USD'));
        
$m6 = new Money(100000, new Currency('USD'));

        
$this->assertEquals('0.01'$m1->formatSimple());
        
$this->assertEquals('0.10'$m2->formatSimple());
        
$this->assertEquals('1.00'$m3->formatSimple());
        
$this->assertEquals('10.00'$m4->formatSimple());
        
$this->assertEquals('100.00'$m5->formatSimple());
        
$this->assertEquals('1,000.00'$m6->formatSimple());
    }

    
/**
     * @dataProvider providesFormat
     */
    
public function testFormat($expected$cur$amount$message)
    {
        
$this->assertEquals($expected, (string) Money::$cur($amount), $message);
    }

    public function 
providesFormat()
    {
        return [
            [
'₺1.548,48''TRY'154848.25895'Example: ' __LINE__],
            [
'$1,548.48''USD'154848.25895'Example: ' __LINE__],
        ];
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0049 ]--