Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(724)

Unified Diff: third_party/JSON/JSON-2.59/t/08_pc_base.t

Issue 15736030: Add JSON.pm to third_party (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix permissions and shebangs Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/JSON/JSON-2.59/t/07_pc_esc.t ('k') | third_party/JSON/JSON-2.59/t/09_pc_extra_number.t » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/JSON/JSON-2.59/t/08_pc_base.t
diff --git a/third_party/JSON/JSON-2.59/t/08_pc_base.t b/third_party/JSON/JSON-2.59/t/08_pc_base.t
new file mode 100644
index 0000000000000000000000000000000000000000..ca060920c4be765d70dcc76f95ebd8a3aadbc24f
--- /dev/null
+++ b/third_party/JSON/JSON-2.59/t/08_pc_base.t
@@ -0,0 +1,99 @@
+use Test::More;
+
+# copied over from JSON::PC and modified to use JSON
+# copied over from JSON::XS and modified to use JSON
+
+use strict;
+BEGIN { plan tests => 20 };
+
+BEGIN { $ENV{PERL_JSON_BACKEND} = "JSON::backportPP"; }
+
+use JSON;
+
+my ($js,$obj);
+
+my $pc = new JSON;
+
+$js = q|{}|;
+
+$obj = $pc->decode($js);
+$js = $pc->encode($obj);
+is($js,'{}', '{}');
+
+$js = q|[]|;
+$obj = $pc->decode($js);
+$js = $pc->encode($obj);
+is($js,'[]', '[]');
+
+
+$js = q|{"foo":"bar"}|;
+$obj = $pc->decode($js);
+is($obj->{foo},'bar');
+$js = $pc->encode($obj);
+is($js,'{"foo":"bar"}', '{"foo":"bar"}');
+
+$js = q|{"foo":""}|;
+$obj = $pc->decode($js);
+$js = $pc->encode($obj);
+is($js,'{"foo":""}', '{"foo":""}');
+
+$js = q|{"foo":" "}|;
+$obj = $pc->decode($js);
+$js = $pc->encode($obj);
+is($js,'{"foo":" "}' ,'{"foo":" "}');
+
+$js = q|{"foo":"0"}|;
+$obj = $pc->decode($js);
+$js = $pc->encode($obj);
+is($js,'{"foo":"0"}',q|{"foo":"0"} - autoencode (default)|);
+
+
+$js = q|{"foo":"0 0"}|;
+$obj = $pc->decode($js);
+$js = $pc->encode($obj);
+is($js,'{"foo":"0 0"}','{"foo":"0 0"}');
+
+$js = q|[1,2,3]|;
+$obj = $pc->decode($js);
+is($obj->[1],2);
+$js = $pc->encode($obj);
+is($js,'[1,2,3]');
+
+$js = q|{"foo":{"bar":"hoge"}}|;
+$obj = $pc->decode($js);
+is($obj->{foo}->{bar},'hoge');
+$js = $pc->encode($obj);
+is($js,q|{"foo":{"bar":"hoge"}}|);
+
+$js = q|[{"foo":[1,2,3]},-0.12,{"a":"b"}]|;
+$obj = $pc->decode($js);
+$js = $pc->encode($obj);
+is($js,q|[{"foo":[1,2,3]},-0.12,{"a":"b"}]|);
+
+
+$obj = ["\x01"];
+is($js = $pc->encode($obj),'["\\u0001"]');
+$obj = $pc->decode($js);
+is($obj->[0],"\x01");
+
+$obj = ["\e"];
+is($js = $pc->encode($obj),'["\\u001b"]');
+$obj = $pc->decode($js);
+is($obj->[0],"\e");
+
+$js = '{"id":"}';
+eval q{ $pc->decode($js) };
+like($@, qr/unexpected end/i);
+
+$obj = { foo => sub { "bar" } };
+eval q{ $js = $pc->encode($obj) };
+like($@, qr/JSON can only/i, 'invalid value (coderef)');
+
+#$obj = { foo => bless {}, "Hoge" };
+#eval q{ $js = $pc->encode($obj) };
+#like($@, qr/JSON can only/i, 'invalid value (blessd object)');
+
+$obj = { foo => \$js };
+eval q{ $js = $pc->encode($obj) };
+like($@, qr/cannot encode reference/i, 'invalid value (ref)');
+
« no previous file with comments | « third_party/JSON/JSON-2.59/t/07_pc_esc.t ('k') | third_party/JSON/JSON-2.59/t/09_pc_extra_number.t » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698