| 123456789101112131415161718192021222324252627282930 |
- <?php
- namespace Tests\Unit;
- use App\Services\ThirdGameBalanceService;
- use PHPUnit\Framework\TestCase;
- class SharingThirdGameOrderPrecisionTest extends TestCase
- {
- public function test_provider_decimal_strings_reach_order_persistence_without_float_conversion(): void
- {
- $method = new \ReflectionMethod(ThirdGameBalanceService::class, 'formatOrder');
- $method->setAccessible(true);
- $order = $method->invoke(new ThirdGameBalanceService(), [
- 'betAmount' => '99999999999999.1234567891', 'validAmount' => '0.0000000001', 'settledAmount' => '-0.1234567891',
- ]);
- $this->assertSame('99999999999999.1234567891', $order['bet_amount']);
- $this->assertSame('0.0000000001', $order['valid_amount']);
- $this->assertSame('-0.1234567891', $order['settled_amount']);
- }
- public function test_numeric_json_values_keep_their_original_type_and_invalid_strings_fail_closed(): void
- {
- $method = new \ReflectionMethod(ThirdGameBalanceService::class, 'formatOrder');
- $method->setAccessible(true);
- $order = $method->invoke(new ThirdGameBalanceService(), ['betAmount' => 100, 'validAmount' => 12.5, 'settledAmount' => '1e8']);
- $this->assertSame(100, $order['bet_amount']); $this->assertSame(12.5, $order['valid_amount']);
- $this->assertNull($order['settled_amount']);
- }
- }
|