Skip to content
This repository was archived by the owner on Dec 23, 2021. It is now read-only.

Commit d37680b

Browse files
committed
Add round tripping to tests. libbson doesn't do Javascript right
1 parent 49fe7b5 commit d37680b

10 files changed

+123
-23
lines changed

tests/json-serialize-binary.phpt

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,20 @@ $doc = [
77
];
88

99
echo MongoDB\BSON\toJSON( \MongoDB\BSON\fromPHP( $doc ) ), "\n";
10-
echo json_encode( $doc ), "\n";
10+
$d = json_encode( $doc );
11+
echo $d, "\n";
12+
13+
var_dump( \MongoDB\BSON\toPHP( \MongoDB\BSON\fromJSON( $d ) ) );
1114
?>
12-
--EXPECT--
15+
--EXPECTF--
1316
{ "foo" : { "$binary" : "Z2FyZ2xlYmxhc3Rlcg==", "$type" : "18" } }
1417
{"foo":{"$binary":"Z2FyZ2xlYmxhc3Rlcg==","$type":"18"}}
18+
object(stdClass)#%d (%d) {
19+
["foo"]=>
20+
object(MongoDB\BSON\Binary)#%d (%d) {
21+
["data"]=>
22+
string(13) "gargleblaster"
23+
["type"]=>
24+
int(24)
25+
}
26+
}

tests/json-serialize-decimal128.phpt

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,18 @@ $doc = [
77
];
88

99
echo MongoDB\BSON\toJSON( \MongoDB\BSON\fromPHP( $doc ) ), "\n";
10-
echo json_encode( $doc ), "\n";
10+
$d = json_encode( $doc );
11+
echo $d, "\n";
12+
13+
var_dump( \MongoDB\BSON\toPHP( \MongoDB\BSON\fromJSON( $d ) ) );
1114
?>
12-
--EXPECT--
15+
--EXPECTF--
1316
{ "foo" : { "$numberDecimal" : "12389719287312" } }
1417
{"foo":{"$numberDecimal":"12389719287312"}}
18+
object(stdClass)#%d (%d) {
19+
["foo"]=>
20+
object(MongoDB\BSON\Decimal128)#%d (%d) {
21+
["dec"]=>
22+
string(14) "12389719287312"
23+
}
24+
}

tests/json-serialize-javascript.phpt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,15 @@ $doc = [
77
];
88

99
echo MongoDB\BSON\toJSON( \MongoDB\BSON\fromPHP( $doc ) ), "\n";
10-
echo json_encode( $doc ), "\n";
10+
$d = json_encode( $doc );
11+
echo $d, "\n";
12+
13+
var_dump( \MongoDB\BSON\toPHP( \MongoDB\BSON\fromJSON( $d ) ) );
1114
?>
12-
--EXPECT--
15+
--EXPECTF--
1316
{ "foo" : "function foo(bar) { return bar; }" }
1417
{"foo":"function foo(bar) { return bar; }"}
18+
object(stdClass)#%d (%d) {
19+
["foo"]=>
20+
string(33) "function foo(bar) { return bar; }"
21+
}

tests/json-serialize-maxkey.phpt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,16 @@ $doc = [
77
];
88

99
echo MongoDB\BSON\toJSON( \MongoDB\BSON\fromPHP( $doc ) ), "\n";
10-
echo json_encode( $doc ), "\n";
10+
$d = json_encode( $doc );
11+
echo $d, "\n";
12+
13+
var_dump( \MongoDB\BSON\toPHP( \MongoDB\BSON\fromJSON( $d ) ) );
1114
?>
12-
--EXPECT--
15+
--EXPECTF--
1316
{ "foo" : { "$maxKey" : 1 } }
1417
{"foo":{"$maxKey":1}}
18+
object(stdClass)#%d (%d) {
19+
["foo"]=>
20+
object(MongoDB\BSON\MaxKey)#%d (%d) {
21+
}
22+
}

tests/json-serialize-minkey.phpt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,16 @@ $doc = [
77
];
88

99
echo MongoDB\BSON\toJSON( \MongoDB\BSON\fromPHP( $doc ) ), "\n";
10-
echo json_encode( $doc ), "\n";
10+
$d = json_encode( $doc );
11+
echo $d, "\n";
12+
13+
var_dump( \MongoDB\BSON\toPHP( \MongoDB\BSON\fromJSON( $d ) ) );
1114
?>
12-
--EXPECT--
15+
--EXPECTF--
1316
{ "foo" : { "$minKey" : 1 } }
1417
{"foo":{"$minKey":1}}
18+
object(stdClass)#%d (%d) {
19+
["foo"]=>
20+
object(MongoDB\BSON\MinKey)#%d (%d) {
21+
}
22+
}

tests/json-serialize-objectid.phpt

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,18 @@ $doc = [
77
];
88

99
echo MongoDB\BSON\toJSON( \MongoDB\BSON\fromPHP( $doc ) ), "\n";
10-
echo json_encode( $doc ), "\n";
10+
$d = json_encode( $doc );
11+
echo $d, "\n";
12+
13+
var_dump( \MongoDB\BSON\toPHP( \MongoDB\BSON\fromJSON( $d ) ) );
1114
?>
1215
--EXPECTF--
1316
{ "foo" : { "$oid" : "%s" } }
1417
{"foo":{"$oid":"%s"}}
15-
18+
object(stdClass)#%d (%d) {
19+
["foo"]=>
20+
object(MongoDB\BSON\ObjectID)#%d (%d) {
21+
["oid"]=>
22+
string(24) "%s"
23+
}
24+
}

tests/json-serialize-regex-001.phpt

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,20 @@ $doc = [
77
];
88

99
echo MongoDB\BSON\toJSON( \MongoDB\BSON\fromPHP( $doc ) ), "\n";
10-
echo json_encode( $doc ), "\n";
10+
$d = json_encode( $doc );
11+
echo $d, "\n";
12+
13+
var_dump( \MongoDB\BSON\toPHP( \MongoDB\BSON\fromJSON( $d ) ) );
1114
?>
12-
--EXPECT--
15+
--EXPECTF--
1316
{ "foo" : { "$regex" : "/foo/", "$options" : "i" } }
1417
{"foo":{"$regex":"\/foo\/","$options":"i"}}
18+
object(stdClass)#%d (%d) {
19+
["foo"]=>
20+
object(MongoDB\BSON\Regex)#%d (%d) {
21+
["pattern"]=>
22+
string(%d) "/foo/"
23+
["flags"]=>
24+
string(%d) "i"
25+
}
26+
}

tests/json-serialize-regex-002.phpt

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,20 @@ $doc = [
77
];
88

99
echo MongoDB\BSON\toJSON( \MongoDB\BSON\fromPHP( $doc ) ), "\n";
10-
echo json_encode( $doc ), "\n";
10+
$d = json_encode( $doc );
11+
echo $d, "\n";
12+
13+
var_dump( \MongoDB\BSON\toPHP( \MongoDB\BSON\fromJSON( $d ) ) );
1114
?>
12-
--EXPECT--
15+
--EXPECTF--
1316
{ "foo" : { "$regex" : "/foo/", "$options" : "" } }
1417
{"foo":{"$regex":"\/foo\/","$options":""}}
18+
object(stdClass)#%d (%d) {
19+
["foo"]=>
20+
object(MongoDB\BSON\Regex)#%d (%d) {
21+
["pattern"]=>
22+
string(%d) "/foo/"
23+
["flags"]=>
24+
string(%d) ""
25+
}
26+
}

tests/json-serialize-timestamp.phpt

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,20 @@ $doc = [
77
];
88

99
echo MongoDB\BSON\toJSON( \MongoDB\BSON\fromPHP( $doc ) ), "\n";
10-
echo json_encode( $doc ), "\n";
10+
$d = json_encode( $doc );
11+
echo $d, "\n";
12+
13+
var_dump( \MongoDB\BSON\toPHP( \MongoDB\BSON\fromJSON( $d ) ) );
1114
?>
12-
--EXPECT--
15+
--EXPECTF--
1316
{ "foo" : { "$timestamp" : { "t" : 5678, "i" : 1234 } } }
1417
{"foo":{"$timestamp":{"t":5678,"i":1234}}}
18+
object(stdClass)#%d (%d) {
19+
["foo"]=>
20+
object(MongoDB\BSON\Timestamp)#%d (%d) {
21+
["increment"]=>
22+
string(%d) "1234"
23+
["timestamp"]=>
24+
string(%d) "5678"
25+
}
26+
}

tests/json-serialize-utcdatetime.phpt

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,22 @@ JsonSerializable: UTCDateTime
33
--FILE--
44
<?php
55
$doc = [
6-
'foo' => new MongoDB\BSON\UTCDateTime( new \DateTime( '2016-10-11 13:34:26' ) )
6+
'foo' => new MongoDB\BSON\UTCDateTime( new \DateTime( '2016-10-11 13:34:26 UTC' ) )
77
];
88

99
echo MongoDB\BSON\toJSON( \MongoDB\BSON\fromPHP( $doc ) ), "\n";
10-
echo json_encode( $doc ), "\n";
10+
$d = json_encode( $doc );
11+
echo $d, "\n";
12+
13+
var_dump( \MongoDB\BSON\toPHP( \MongoDB\BSON\fromJSON( $d ) ) );
1114
?>
12-
--EXPECT--
13-
{ "foo" : { "$date" : 1476189266000 } }
14-
{"foo":{"$date":1476189266000}}
15+
--EXPECTF--
16+
{ "foo" : { "$date" : 1476192866000 } }
17+
{"foo":{"$date":1476192866000}}
18+
object(stdClass)#%d (%d) {
19+
["foo"]=>
20+
object(MongoDB\BSON\UTCDateTime)#%d (%d) {
21+
["milliseconds"]=>
22+
string(13) "1476192866000"
23+
}
24+
}

0 commit comments

Comments
 (0)