Skip to content

Commit 5fb004c

Browse files
authored
PHPC-2259: Sync BSON corpus tests for Decimal128 values with large exponents (#1446)
Synced with mongodb/specifications@c09f979
1 parent b7da376 commit 5fb004c

File tree

4 files changed

+208
-0
lines changed

4 files changed

+208
-0
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
--TEST--
2+
Decimal128: Clamped zeros with a large positive exponent
3+
--DESCRIPTION--
4+
Generated by scripts/convert-bson-corpus-tests.php
5+
6+
DO NOT EDIT THIS FILE
7+
--FILE--
8+
<?php
9+
10+
require_once __DIR__ . '/../utils/basic.inc';
11+
12+
$canonicalBson = hex2bin('180000001364000000000000000000000000000000FE5F00');
13+
$canonicalExtJson = '{"d" : {"$numberDecimal" : "0E+6111"}}';
14+
$degenerateExtJson = '{"d" : {"$numberDecimal" : "0E+2147483647"}}';
15+
16+
// Canonical BSON -> Native -> Canonical BSON
17+
echo bin2hex(fromPHP(toPHP($canonicalBson))), "\n";
18+
19+
// Canonical BSON -> BSON object -> Canonical BSON
20+
echo bin2hex((string) MongoDB\BSON\Document::fromBSON($canonicalBson)), "\n";
21+
22+
// Canonical BSON -> Canonical extJSON
23+
echo json_canonicalize(toCanonicalExtendedJSON($canonicalBson)), "\n";
24+
25+
// Canonical BSON -> BSON object -> Canonical extJSON
26+
echo json_canonicalize(MongoDB\BSON\Document::fromBSON($canonicalBson)->toCanonicalExtendedJSON()), "\n";
27+
28+
// Canonical extJSON -> Canonical BSON
29+
echo bin2hex(fromJSON($canonicalExtJson)), "\n";
30+
31+
// Canonical extJSON -> BSON object -> Canonical BSON
32+
echo bin2hex((string) MongoDB\BSON\Document::fromJSON($canonicalExtJson)), "\n";
33+
34+
// Degenerate extJSON -> Canonical BSON
35+
echo bin2hex(fromJSON($degenerateExtJson)), "\n";
36+
37+
// Degenerate extJSON -> BSON object -> Canonical BSON
38+
echo bin2hex((string) MongoDB\BSON\Document::fromJSON($degenerateExtJson)), "\n";
39+
40+
?>
41+
===DONE===
42+
<?php exit(0); ?>
43+
--EXPECT--
44+
180000001364000000000000000000000000000000fe5f00
45+
180000001364000000000000000000000000000000fe5f00
46+
{"d":{"$numberDecimal":"0E+6111"}}
47+
{"d":{"$numberDecimal":"0E+6111"}}
48+
180000001364000000000000000000000000000000fe5f00
49+
180000001364000000000000000000000000000000fe5f00
50+
180000001364000000000000000000000000000000fe5f00
51+
180000001364000000000000000000000000000000fe5f00
52+
===DONE===
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
--TEST--
2+
Decimal128: Clamped zeros with a large negative exponent
3+
--DESCRIPTION--
4+
Generated by scripts/convert-bson-corpus-tests.php
5+
6+
DO NOT EDIT THIS FILE
7+
--FILE--
8+
<?php
9+
10+
require_once __DIR__ . '/../utils/basic.inc';
11+
12+
$canonicalBson = hex2bin('180000001364000000000000000000000000000000000000');
13+
$canonicalExtJson = '{"d" : {"$numberDecimal" : "0E-6176"}}';
14+
$degenerateExtJson = '{"d" : {"$numberDecimal" : "0E-2147483647"}}';
15+
16+
// Canonical BSON -> Native -> Canonical BSON
17+
echo bin2hex(fromPHP(toPHP($canonicalBson))), "\n";
18+
19+
// Canonical BSON -> BSON object -> Canonical BSON
20+
echo bin2hex((string) MongoDB\BSON\Document::fromBSON($canonicalBson)), "\n";
21+
22+
// Canonical BSON -> Canonical extJSON
23+
echo json_canonicalize(toCanonicalExtendedJSON($canonicalBson)), "\n";
24+
25+
// Canonical BSON -> BSON object -> Canonical extJSON
26+
echo json_canonicalize(MongoDB\BSON\Document::fromBSON($canonicalBson)->toCanonicalExtendedJSON()), "\n";
27+
28+
// Canonical extJSON -> Canonical BSON
29+
echo bin2hex(fromJSON($canonicalExtJson)), "\n";
30+
31+
// Canonical extJSON -> BSON object -> Canonical BSON
32+
echo bin2hex((string) MongoDB\BSON\Document::fromJSON($canonicalExtJson)), "\n";
33+
34+
// Degenerate extJSON -> Canonical BSON
35+
echo bin2hex(fromJSON($degenerateExtJson)), "\n";
36+
37+
// Degenerate extJSON -> BSON object -> Canonical BSON
38+
echo bin2hex((string) MongoDB\BSON\Document::fromJSON($degenerateExtJson)), "\n";
39+
40+
?>
41+
===DONE===
42+
<?php exit(0); ?>
43+
--EXPECT--
44+
180000001364000000000000000000000000000000000000
45+
180000001364000000000000000000000000000000000000
46+
{"d":{"$numberDecimal":"0E-6176"}}
47+
{"d":{"$numberDecimal":"0E-6176"}}
48+
180000001364000000000000000000000000000000000000
49+
180000001364000000000000000000000000000000000000
50+
180000001364000000000000000000000000000000000000
51+
180000001364000000000000000000000000000000000000
52+
===DONE===
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
--TEST--
2+
Decimal128: Clamped negative zeros with a large positive exponent
3+
--DESCRIPTION--
4+
Generated by scripts/convert-bson-corpus-tests.php
5+
6+
DO NOT EDIT THIS FILE
7+
--FILE--
8+
<?php
9+
10+
require_once __DIR__ . '/../utils/basic.inc';
11+
12+
$canonicalBson = hex2bin('180000001364000000000000000000000000000000FEDF00');
13+
$canonicalExtJson = '{"d" : {"$numberDecimal" : "-0E+6111"}}';
14+
$degenerateExtJson = '{"d" : {"$numberDecimal" : "-0E+2147483647"}}';
15+
16+
// Canonical BSON -> Native -> Canonical BSON
17+
echo bin2hex(fromPHP(toPHP($canonicalBson))), "\n";
18+
19+
// Canonical BSON -> BSON object -> Canonical BSON
20+
echo bin2hex((string) MongoDB\BSON\Document::fromBSON($canonicalBson)), "\n";
21+
22+
// Canonical BSON -> Canonical extJSON
23+
echo json_canonicalize(toCanonicalExtendedJSON($canonicalBson)), "\n";
24+
25+
// Canonical BSON -> BSON object -> Canonical extJSON
26+
echo json_canonicalize(MongoDB\BSON\Document::fromBSON($canonicalBson)->toCanonicalExtendedJSON()), "\n";
27+
28+
// Canonical extJSON -> Canonical BSON
29+
echo bin2hex(fromJSON($canonicalExtJson)), "\n";
30+
31+
// Canonical extJSON -> BSON object -> Canonical BSON
32+
echo bin2hex((string) MongoDB\BSON\Document::fromJSON($canonicalExtJson)), "\n";
33+
34+
// Degenerate extJSON -> Canonical BSON
35+
echo bin2hex(fromJSON($degenerateExtJson)), "\n";
36+
37+
// Degenerate extJSON -> BSON object -> Canonical BSON
38+
echo bin2hex((string) MongoDB\BSON\Document::fromJSON($degenerateExtJson)), "\n";
39+
40+
?>
41+
===DONE===
42+
<?php exit(0); ?>
43+
--EXPECT--
44+
180000001364000000000000000000000000000000fedf00
45+
180000001364000000000000000000000000000000fedf00
46+
{"d":{"$numberDecimal":"-0E+6111"}}
47+
{"d":{"$numberDecimal":"-0E+6111"}}
48+
180000001364000000000000000000000000000000fedf00
49+
180000001364000000000000000000000000000000fedf00
50+
180000001364000000000000000000000000000000fedf00
51+
180000001364000000000000000000000000000000fedf00
52+
===DONE===
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
--TEST--
2+
Decimal128: Clamped negative zeros with a large negative exponent
3+
--DESCRIPTION--
4+
Generated by scripts/convert-bson-corpus-tests.php
5+
6+
DO NOT EDIT THIS FILE
7+
--FILE--
8+
<?php
9+
10+
require_once __DIR__ . '/../utils/basic.inc';
11+
12+
$canonicalBson = hex2bin('180000001364000000000000000000000000000000008000');
13+
$canonicalExtJson = '{"d" : {"$numberDecimal" : "-0E-6176"}}';
14+
$degenerateExtJson = '{"d" : {"$numberDecimal" : "-0E-2147483647"}}';
15+
16+
// Canonical BSON -> Native -> Canonical BSON
17+
echo bin2hex(fromPHP(toPHP($canonicalBson))), "\n";
18+
19+
// Canonical BSON -> BSON object -> Canonical BSON
20+
echo bin2hex((string) MongoDB\BSON\Document::fromBSON($canonicalBson)), "\n";
21+
22+
// Canonical BSON -> Canonical extJSON
23+
echo json_canonicalize(toCanonicalExtendedJSON($canonicalBson)), "\n";
24+
25+
// Canonical BSON -> BSON object -> Canonical extJSON
26+
echo json_canonicalize(MongoDB\BSON\Document::fromBSON($canonicalBson)->toCanonicalExtendedJSON()), "\n";
27+
28+
// Canonical extJSON -> Canonical BSON
29+
echo bin2hex(fromJSON($canonicalExtJson)), "\n";
30+
31+
// Canonical extJSON -> BSON object -> Canonical BSON
32+
echo bin2hex((string) MongoDB\BSON\Document::fromJSON($canonicalExtJson)), "\n";
33+
34+
// Degenerate extJSON -> Canonical BSON
35+
echo bin2hex(fromJSON($degenerateExtJson)), "\n";
36+
37+
// Degenerate extJSON -> BSON object -> Canonical BSON
38+
echo bin2hex((string) MongoDB\BSON\Document::fromJSON($degenerateExtJson)), "\n";
39+
40+
?>
41+
===DONE===
42+
<?php exit(0); ?>
43+
--EXPECT--
44+
180000001364000000000000000000000000000000008000
45+
180000001364000000000000000000000000000000008000
46+
{"d":{"$numberDecimal":"-0E-6176"}}
47+
{"d":{"$numberDecimal":"-0E-6176"}}
48+
180000001364000000000000000000000000000000008000
49+
180000001364000000000000000000000000000000008000
50+
180000001364000000000000000000000000000000008000
51+
180000001364000000000000000000000000000000008000
52+
===DONE===

0 commit comments

Comments
 (0)