42 lines
1.3 KiB
Perl
42 lines
1.3 KiB
Perl
|
use strict;
|
||
|
use warnings;
|
||
|
no warnings 'once';
|
||
|
use Test::More;
|
||
|
use JSON::Tiny 'decode_json';
|
||
|
|
||
|
my $rv = decode_json '{ "a":false, "b":true }';
|
||
|
|
||
|
ok $rv->{a}->isa('JSON::Tiny::_Bool'),
|
||
|
'Decoding a "false" Boolean yields JSON::Tiny::_Bool object.';
|
||
|
ok $rv->{b}->isa('JSON::Tiny::_Bool'),
|
||
|
'Decoding "true" Boolean yields JSON::Tiny::_Bool object.';
|
||
|
is ref $rv->{a}, 'JSON::Tiny::_Bool', 'ref detects JSON::Tiny::_Bool';
|
||
|
is ref $rv->{b}, 'JSON::Tiny::_Bool',
|
||
|
'ref detects JSON::Tiny::_Bool type (true)';
|
||
|
|
||
|
{
|
||
|
local ( $JSON::Tiny::FALSE, $JSON::Tiny::TRUE ) = ( 0, 1 );
|
||
|
$rv = decode_json '{"a":false, "b":true}';
|
||
|
|
||
|
is $rv->{a}, 0, 'Overridden Boolean false yields 0';
|
||
|
is $rv->{b}, 1, 'Overridden Boolean true yields 1';
|
||
|
is ref $rv->{a}, '', 'Overriding Boolean false assumes correct type.';
|
||
|
is ref $rv->{b}, '', 'Overriding Boolean true assumes correct type.';
|
||
|
}
|
||
|
|
||
|
$rv = decode_json '{"a":false, "b":true}';
|
||
|
|
||
|
is ref $rv->{b}, 'JSON::Tiny::_Bool',
|
||
|
'JSON::Tiny::_Bool back after localized change to $JSON::Tiny::FALSE ' .
|
||
|
'falls from scope.';
|
||
|
is ref $rv->{a}, 'JSON::Tiny::_Bool',
|
||
|
'JSON::Tiny::_Bool back after localized change to $JSON::Tiny::TRUE ' .
|
||
|
'falls from scope.';
|
||
|
|
||
|
$rv = JSON::Tiny::encode_json { a=>\0, b=>\1 };
|
||
|
|
||
|
like $rv, qr/"b":true/, 'Reference to \\1 yields true.';
|
||
|
like $rv, qr/"a":false/, 'Reference to \\0 yields false.';
|
||
|
|
||
|
done_testing();
|