c81c3ab80727e2baa4ff1c08b87d133d23399cb8
[awesomized/ext-ion] / tests / ~integration / no_decimals.phpt
1 --TEST--
2 integration: custom serializer which does not write decimals but native floats only
3 --EXTENSIONS--
4 ion
5 --FILE--
6 TEST
7 <?php
8
9 class NoDecimals extends ion\Serializer\Serializer {
10 public function serialize(mixed $data, \ion\Writer\Options|\ion\Writer|array|null $writer = null): mixed {
11 return parent::serialize($data, new class extends \ion\Writer\Buffer\Writer {
12 public function writeDecimal(\ion\Decimal|string $value): void {
13 if ($value instanceof \ion\Decimal) {
14 $value = (string)$value;
15 }
16 $this->writeFloat((float) $value);
17 }
18 });
19 }
20 }
21
22
23 $data = [1.123, new ion\Decimal("1.123"), 123, new ion\Decimal(123)];
24 echo ion\serialize($data), "\n";
25 echo ion\serialize($data, new NoDecimals), "\n";
26 ?>
27 DONE
28 --EXPECTREGEX--
29 TEST
30 \[1\.12\d+e\+0,1\.123,123,123d0\]
31 \[(1\.12\d+e\+0),\1,123,123e\+0\]
32 DONE