From 9165bdc13458c2da1a7a65bdf812167875957c95 Mon Sep 17 00:00:00 2001 From: Jeremy Mikola Date: Fri, 22 Nov 2024 10:55:37 -0500 Subject: [PATCH] PHPC-2471: Sync BSON corpus tests for Y10K date parsing (#1742) Synced with mongodb/specifications@876e790ec70e9cab3035c543e8b93fb8fcdf1c2d Also includes some tests for PHPC-2474 (binary vector subtype). --- tests/bson-corpus/binary-valid-015.phpt | 31 +++++++++++++++++++++++ tests/bson-corpus/binary-valid-016.phpt | 31 +++++++++++++++++++++++ tests/bson-corpus/binary-valid-017.phpt | 31 +++++++++++++++++++++++ tests/bson-corpus/binary-valid-018.phpt | 31 +++++++++++++++++++++++ tests/bson-corpus/binary-valid-019.phpt | 31 +++++++++++++++++++++++ tests/bson-corpus/binary-valid-020.phpt | 31 +++++++++++++++++++++++ tests/bson-corpus/datetime-valid-004.phpt | 9 +++++++ 7 files changed, 195 insertions(+) create mode 100644 tests/bson-corpus/binary-valid-015.phpt create mode 100644 tests/bson-corpus/binary-valid-016.phpt create mode 100644 tests/bson-corpus/binary-valid-017.phpt create mode 100644 tests/bson-corpus/binary-valid-018.phpt create mode 100644 tests/bson-corpus/binary-valid-019.phpt create mode 100644 tests/bson-corpus/binary-valid-020.phpt diff --git a/tests/bson-corpus/binary-valid-015.phpt b/tests/bson-corpus/binary-valid-015.phpt new file mode 100644 index 000000000..31e4e37a4 --- /dev/null +++ b/tests/bson-corpus/binary-valid-015.phpt @@ -0,0 +1,31 @@ +--TEST-- +Binary type: subtype 0x09 Vector FLOAT32 +--DESCRIPTION-- +Generated by scripts/convert-bson-corpus-tests.php + +DO NOT EDIT THIS FILE +--FILE-- + BSON object -> Canonical BSON +echo bin2hex((string) MongoDB\BSON\Document::fromBSON($canonicalBson)), "\n"; + +// Canonical BSON -> BSON object -> Canonical extJSON +echo json_canonicalize(MongoDB\BSON\Document::fromBSON($canonicalBson)->toCanonicalExtendedJSON()), "\n"; + +// Canonical extJSON -> BSON object -> Canonical BSON +echo bin2hex((string) MongoDB\BSON\Document::fromJSON($canonicalExtJson)), "\n"; + +?> +===DONE=== + +--EXPECT-- +170000000578000a0000000927000000fe420000e04000 +{"x":{"$binary":{"base64":"JwAAAP5CAADgQA==","subType":"09"}}} +170000000578000a0000000927000000fe420000e04000 +===DONE=== \ No newline at end of file diff --git a/tests/bson-corpus/binary-valid-016.phpt b/tests/bson-corpus/binary-valid-016.phpt new file mode 100644 index 000000000..d4474aec8 --- /dev/null +++ b/tests/bson-corpus/binary-valid-016.phpt @@ -0,0 +1,31 @@ +--TEST-- +Binary type: subtype 0x09 Vector INT8 +--DESCRIPTION-- +Generated by scripts/convert-bson-corpus-tests.php + +DO NOT EDIT THIS FILE +--FILE-- + BSON object -> Canonical BSON +echo bin2hex((string) MongoDB\BSON\Document::fromBSON($canonicalBson)), "\n"; + +// Canonical BSON -> BSON object -> Canonical extJSON +echo json_canonicalize(MongoDB\BSON\Document::fromBSON($canonicalBson)->toCanonicalExtendedJSON()), "\n"; + +// Canonical extJSON -> BSON object -> Canonical BSON +echo bin2hex((string) MongoDB\BSON\Document::fromJSON($canonicalExtJson)), "\n"; + +?> +===DONE=== + +--EXPECT-- +11000000057800040000000903007f0700 +{"x":{"$binary":{"base64":"AwB\/Bw==","subType":"09"}}} +11000000057800040000000903007f0700 +===DONE=== \ No newline at end of file diff --git a/tests/bson-corpus/binary-valid-017.phpt b/tests/bson-corpus/binary-valid-017.phpt new file mode 100644 index 000000000..a6d5a67c2 --- /dev/null +++ b/tests/bson-corpus/binary-valid-017.phpt @@ -0,0 +1,31 @@ +--TEST-- +Binary type: subtype 0x09 Vector PACKED_BIT +--DESCRIPTION-- +Generated by scripts/convert-bson-corpus-tests.php + +DO NOT EDIT THIS FILE +--FILE-- + BSON object -> Canonical BSON +echo bin2hex((string) MongoDB\BSON\Document::fromBSON($canonicalBson)), "\n"; + +// Canonical BSON -> BSON object -> Canonical extJSON +echo json_canonicalize(MongoDB\BSON\Document::fromBSON($canonicalBson)->toCanonicalExtendedJSON()), "\n"; + +// Canonical extJSON -> BSON object -> Canonical BSON +echo bin2hex((string) MongoDB\BSON\Document::fromJSON($canonicalExtJson)), "\n"; + +?> +===DONE=== + +--EXPECT-- +11000000057800040000000910007f0700 +{"x":{"$binary":{"base64":"EAB\/Bw==","subType":"09"}}} +11000000057800040000000910007f0700 +===DONE=== \ No newline at end of file diff --git a/tests/bson-corpus/binary-valid-018.phpt b/tests/bson-corpus/binary-valid-018.phpt new file mode 100644 index 000000000..e0ac520f2 --- /dev/null +++ b/tests/bson-corpus/binary-valid-018.phpt @@ -0,0 +1,31 @@ +--TEST-- +Binary type: subtype 0x09 Vector (Zero-length) FLOAT32 +--DESCRIPTION-- +Generated by scripts/convert-bson-corpus-tests.php + +DO NOT EDIT THIS FILE +--FILE-- + BSON object -> Canonical BSON +echo bin2hex((string) MongoDB\BSON\Document::fromBSON($canonicalBson)), "\n"; + +// Canonical BSON -> BSON object -> Canonical extJSON +echo json_canonicalize(MongoDB\BSON\Document::fromBSON($canonicalBson)->toCanonicalExtendedJSON()), "\n"; + +// Canonical extJSON -> BSON object -> Canonical BSON +echo bin2hex((string) MongoDB\BSON\Document::fromJSON($canonicalExtJson)), "\n"; + +?> +===DONE=== + +--EXPECT-- +0f0000000578000200000009270000 +{"x":{"$binary":{"base64":"JwA=","subType":"09"}}} +0f0000000578000200000009270000 +===DONE=== \ No newline at end of file diff --git a/tests/bson-corpus/binary-valid-019.phpt b/tests/bson-corpus/binary-valid-019.phpt new file mode 100644 index 000000000..49cef53c7 --- /dev/null +++ b/tests/bson-corpus/binary-valid-019.phpt @@ -0,0 +1,31 @@ +--TEST-- +Binary type: subtype 0x09 Vector (Zero-length) INT8 +--DESCRIPTION-- +Generated by scripts/convert-bson-corpus-tests.php + +DO NOT EDIT THIS FILE +--FILE-- + BSON object -> Canonical BSON +echo bin2hex((string) MongoDB\BSON\Document::fromBSON($canonicalBson)), "\n"; + +// Canonical BSON -> BSON object -> Canonical extJSON +echo json_canonicalize(MongoDB\BSON\Document::fromBSON($canonicalBson)->toCanonicalExtendedJSON()), "\n"; + +// Canonical extJSON -> BSON object -> Canonical BSON +echo bin2hex((string) MongoDB\BSON\Document::fromJSON($canonicalExtJson)), "\n"; + +?> +===DONE=== + +--EXPECT-- +0f0000000578000200000009030000 +{"x":{"$binary":{"base64":"AwA=","subType":"09"}}} +0f0000000578000200000009030000 +===DONE=== \ No newline at end of file diff --git a/tests/bson-corpus/binary-valid-020.phpt b/tests/bson-corpus/binary-valid-020.phpt new file mode 100644 index 000000000..2480e0341 --- /dev/null +++ b/tests/bson-corpus/binary-valid-020.phpt @@ -0,0 +1,31 @@ +--TEST-- +Binary type: subtype 0x09 Vector (Zero-length) PACKED_BIT +--DESCRIPTION-- +Generated by scripts/convert-bson-corpus-tests.php + +DO NOT EDIT THIS FILE +--FILE-- + BSON object -> Canonical BSON +echo bin2hex((string) MongoDB\BSON\Document::fromBSON($canonicalBson)), "\n"; + +// Canonical BSON -> BSON object -> Canonical extJSON +echo json_canonicalize(MongoDB\BSON\Document::fromBSON($canonicalBson)->toCanonicalExtendedJSON()), "\n"; + +// Canonical extJSON -> BSON object -> Canonical BSON +echo bin2hex((string) MongoDB\BSON\Document::fromJSON($canonicalExtJson)), "\n"; + +?> +===DONE=== + +--EXPECT-- +0f0000000578000200000009100000 +{"x":{"$binary":{"base64":"EAA=","subType":"09"}}} +0f0000000578000200000009100000 +===DONE=== \ No newline at end of file diff --git a/tests/bson-corpus/datetime-valid-004.phpt b/tests/bson-corpus/datetime-valid-004.phpt index c2ab19107..b9b467c9a 100644 --- a/tests/bson-corpus/datetime-valid-004.phpt +++ b/tests/bson-corpus/datetime-valid-004.phpt @@ -11,6 +11,7 @@ require_once __DIR__ . '/../utils/basic.inc'; $canonicalBson = hex2bin('1000000009610000DC1FD277E6000000'); $canonicalExtJson = '{"a":{"$date":{"$numberLong":"253402300800000"}}}'; +$relaxedExtJson = '{"a":{"$date":{"$numberLong":"253402300800000"}}}'; // Canonical BSON -> BSON object -> Canonical BSON echo bin2hex((string) MongoDB\BSON\Document::fromBSON($canonicalBson)), "\n"; @@ -18,14 +19,22 @@ echo bin2hex((string) MongoDB\BSON\Document::fromBSON($canonicalBson)), "\n"; // Canonical BSON -> BSON object -> Canonical extJSON echo json_canonicalize(MongoDB\BSON\Document::fromBSON($canonicalBson)->toCanonicalExtendedJSON()), "\n"; +// Canonical BSON -> BSON object -> Relaxed extJSON +echo json_canonicalize(MongoDB\BSON\Document::fromBSON($canonicalBson)->toRelaxedExtendedJSON()), "\n"; + // Canonical extJSON -> BSON object -> Canonical BSON echo bin2hex((string) MongoDB\BSON\Document::fromJSON($canonicalExtJson)), "\n"; +// Relaxed extJSON -> BSON object -> Relaxed extJSON +echo json_canonicalize(MongoDB\BSON\Document::fromJSON($relaxedExtJson)->toRelaxedExtendedJSON()), "\n"; + ?> ===DONE=== --EXPECT-- 1000000009610000dc1fd277e6000000 {"a":{"$date":{"$numberLong":"253402300800000"}}} +{"a":{"$date":{"$numberLong":"253402300800000"}}} 1000000009610000dc1fd277e6000000 +{"a":{"$date":{"$numberLong":"253402300800000"}}} ===DONE=== \ No newline at end of file