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']); } }