%PDF- %PDF-
| Direktori : /var/www/pjc/vendor/cknow/laravel-money/tests/ |
| Current File : /var/www/pjc/vendor/cknow/laravel-money/tests/MoneyParserTraitTest.php |
<?php
namespace Cknow\Money\Tests;
use Cknow\Money\Money;
use InvalidArgumentException;
use Money\Currency;
use Money\Exception\ParserException;
use Money\Parser\BitcoinMoneyParser;
use Money\Parser\DecimalMoneyParser;
use Money\Parser\IntlMoneyParser;
use NumberFormatter;
use stdClass;
class MoneyParserTraitTest extends TestCase
{
public function testParse()
{
static::assertEquals(Money::parse(10.00, 'USD'), Money::USD(1000));
static::assertEquals(Money::parse(0.10, 'USD'), Money::USD(10));
static::assertEquals(Money::parse('0.10', 'USD'), Money::USD(10));
static::assertEquals(Money::parse(1.10, 'USD'), Money::USD(110));
static::assertEquals(Money::parse('1.10', 'USD'), Money::USD(110));
static::assertEquals(Money::parse(1.00, 'USD'), Money::USD(100));
static::assertEquals(Money::parse('1.00', 'USD'), Money::USD(100));
static::assertEquals(Money::parse(100.00, 'USD'), Money::USD(10000));
static::assertEquals(Money::parse('100.00', 'USD'), Money::USD(10000));
static::assertEquals(Money::parse('$1.00'), Money::USD(100));
static::assertEquals(Money::parse('$1.00', 'USD'), Money::USD(100));
static::assertEquals(Money::parse(1, 'USD'), Money::USD(1));
static::assertEquals(Money::parse(1.10, 'USD'), Money::USD(110));
static::assertEquals(Money::parse(100, 'USD'), Money::USD(100));
static::assertEquals(Money::parse('100', 'USD'), Money::USD(100));
static::assertEquals(Money::parse('1', 'USD'), Money::USD(1));
static::assertEquals(Money::parse(Money::USD(100)), Money::USD(100));
static::assertEquals(Money::parse(new \Money\Money(100, new Currency('USD'))), Money::USD(100));
}
public function testParseByAggregate()
{
$parsers = [
new BitcoinMoneyParser(2),
new DecimalMoneyParser(Money::getCurrencies()),
new IntlMoneyParser(
new NumberFormatter(Money::getLocale(), NumberFormatter::CURRENCY),
Money::getCurrencies()
),
];
static::assertEquals(Money::parseByAggregate('1.00', 'EUR', $parsers), Money::EUR(100));
static::assertEquals(Money::parseByAggregate('$1.00', 'EUR', $parsers), Money::EUR(100));
}
public function testParseByBitcoin()
{
static::assertEquals(Money::parseByBitcoin("\xC9\x831000.00"), Money::XBT(100000));
static::assertEquals(Money::parseByBitcoin("-\xC9\x831"), Money::XBT(-100));
static::assertEquals(Money::parseByBitcoin("\xC9\x831000.00", null, 4), Money::XBT(10000000));
}
public function testParseByDecimal()
{
static::assertEquals(Money::parseByDecimal('1.00', 'EUR'), Money::EUR(100));
static::assertEquals(Money::parseByDecimal('1.00', 'USD', Money::getCurrencies()), Money::USD(100));
}
public function testParseIntl()
{
static::assertEquals(Money::parseByIntl('$1.00'), Money::USD(100));
static::assertEquals(Money::parseByIntl('$1.00', 'EUR'), Money::EUR(100));
static::assertEquals(Money::parseByIntl('$1.00', 'USD', 'en_US'), Money::USD(100));
static::assertEquals(Money::parseByIntl('$1.00', 'USD', 'en_US', Money::getCurrencies()), Money::USD(100));
}
public function testParseIntlLocalizedDecimal()
{
static::assertEquals(Money::parseByIntlLocalizedDecimal('1.00', 'USD'), Money::USD(100));
static::assertEquals(Money::parseByIntlLocalizedDecimal('1.00', 'EUR'), Money::EUR(100));
static::assertEquals(Money::parseByIntlLocalizedDecimal('1.00', 'USD', 'en_US'), Money::USD(100));
static::assertEquals(
Money::parseByIntlLocalizedDecimal('1.00', 'USD', 'en_US', Money::getCurrencies()),
Money::USD(100)
);
}
public function testParseByParser()
{
$parser = new DecimalMoneyParser(Money::getCurrencies());
static::assertEquals(Money::parseByParser($parser, '1.00', 'USD'), Money::USD(100));
static::assertEquals(Money::parseByParser($parser, '1.00', new Currency('EUR')), Money::EUR(100));
}
public function testParseInvalidMoneyValue()
{
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('Invalid value {}');
Money::parse(new stdClass());
}
public function testParseInvalidMoney()
{
$this->expectException(ParserException::class);
$this->expectExceptionMessage('Unable to parse abc');
Money::parse('abc');
}
}