<?php
require_once '../Money.php';
require_once '../Currency.php';
class TestMoney {
public function run( $callback ) {
$callback( [
'test_Money_ConstructZeroAmount_Succeeds',
'test_Money_ConstructLargeAmount_Succeeds',
'test_Money_ConstructNegativeAmount_Succeeds',
'test_Money_ConstructManyDecimals_Succeeds',
'test_Money_IsAmountWithinTolerance_ReturnsTrue',
'test_Money_IsAmountOutsideTolerance_ReturnsFalse'
] );
}
public function test_Money_ConstructZeroAmount_Succeeds(): bool {
$money = new Money( 0.0, Currency::CAD );
return $money->isAmount( 0.0 ) && $money->isCurrency( Currency::CAD );
}
public function test_Money_ConstructLargeAmount_Succeeds(): bool {
$money = new Money( 999999999.99, Currency::CAD );
return $money->isAmount( 999999999.99 );
}
public function test_Money_ConstructNegativeAmount_Succeeds(): bool {
$money = new Money( -250.75, Currency::EUR );
return $money->isAmount( -250.75 ) && $money->isCurrency( Currency::EUR );
}
public function test_Money_ConstructManyDecimals_Succeeds(): bool {
$money = new Money( 123.4567, Currency::AUD );
return $money->isAmount( 123.4567 ) && $money->isCurrency( Currency::AUD );
}
public function test_Money_IsAmountWithinTolerance_ReturnsTrue(): bool {
$money = new Money( 100.005, Currency::CAD );
return $money->isAmount( 100.00 );
}
public function test_Money_IsAmountOutsideTolerance_ReturnsFalse(): bool {
$money = new Money( 100.00, Currency::CAD );
return !$money->isAmount( 100.02 );
}
}