Index: third_party/JSON/JSON-2.59/t/e13_overloaded_eq.t |
diff --git a/third_party/JSON/JSON-2.59/t/e13_overloaded_eq.t b/third_party/JSON/JSON-2.59/t/e13_overloaded_eq.t |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2956aac052139a3b78b955adda5a362ff5337ed1 |
--- /dev/null |
+++ b/third_party/JSON/JSON-2.59/t/e13_overloaded_eq.t |
@@ -0,0 +1,65 @@ |
+ |
+use strict; |
+use Test::More tests => 4; |
+ |
+BEGIN { |
+ $ENV{ PERL_JSON_BACKEND } = "JSON::backportPP"; |
+} |
+ |
+use JSON; |
+ |
+my $json = JSON->new->convert_blessed; |
+ |
+my $obj = OverloadedObject->new( 'foo' ); |
+ok( $obj eq 'foo' ); |
+is( $json->encode( [ $obj ] ), q{["foo"]} ); |
+ |
+# rt.cpan.org #64783 |
+my $foo = bless {}, 'Foo'; |
+my $bar = bless {}, 'Bar'; |
+ |
+eval q{ $json->encode( $foo ) }; |
+ok($@); |
+eval q{ $json->encode( $bar ) }; |
+ok(!$@); |
+ |
+ |
+package Foo; |
+ |
+use strict; |
+use overload ( |
+ 'eq' => sub { 0 }, |
+ '""' => sub { $_[0] }, |
+ fallback => 1, |
+); |
+ |
+sub TO_JSON { |
+ return $_[0]; |
+} |
+ |
+package Bar; |
+ |
+use strict; |
+use overload ( |
+ 'eq' => sub { 0 }, |
+ '""' => sub { $_[0] }, |
+ fallback => 1, |
+); |
+ |
+sub TO_JSON { |
+ return overload::StrVal($_[0]); |
+} |
+ |
+ |
+package OverloadedObject; |
+ |
+use overload 'eq' => sub { $_[0]->{v} eq $_[1] }, '""' => sub { $_[0]->{v} }, fallback => 1; |
+ |
+ |
+sub new { |
+ bless { v => $_[1] }, $_[0]; |
+} |
+ |
+ |
+sub TO_JSON { "$_[0]"; } |
+ |