use Test::More;
use strict;
BEGIN { plan tests => 8 };
use JSON;
#########################
my ($js,$obj);
{
local $JSON::KeySort = 'My::Package::sort_test';
$obj = {a=>1, b=>2, c=>3, d=>4, e=>5, f=>6, g=>7, h=>8, i=>9};
$js = objToJson($obj);
is($js, q|{"a":1,"b":2,"c":3,"d":4,"e":5,"f":6,"g":7,"h":8,"i":9}|);
$JSON::KeySort = 'My::Package::sort_test2';
$js = objToJson($obj);
is($js, q|{"i":9,"h":8,"g":7,"f":6,"e":5,"d":4,"c":3,"b":2,"a":1}|);
}
my $json = new JSON;
$json->keysort(\&My::Package::sort_test);
$js = $json->objToJson($obj);
is($js, q|{"a":1,"b":2,"c":3,"d":4,"e":5,"f":6,"g":7,"h":8,"i":9}|);
$json->keysort(\&My::Package::sort_test2);
$js = $json->objToJson($obj);
is($js, q|{"i":9,"h":8,"g":7,"f":6,"e":5,"d":4,"c":3,"b":2,"a":1}|);
$json = new JSON(keysort => \&My::Package::sort_test);
$json->pretty(1);
$js = $json->objToJson($obj);
is($js, q|{
"a" : 1,
"b" : 2,
"c" : 3,
"d" : 4,
"e" : 5,
"f" : 6,
"g" : 7,
"h" : 8,
"i" : 9
}|);
$js = $json->objToJson($obj, {keysort => \&My::Package::sort_test2});
is($js, q|{
"i" : 9,
"h" : 8,
"g" : 7,
"f" : 6,
"e" : 5,
"d" : 4,
"c" : 3,
"b" : 2,
"a" : 1
}|);
{
local $JSON::KeySort = 1;
$js = objToJson($obj);
is($js, q|{"a":1,"b":2,"c":3,"d":4,"e":5,"f":6,"g":7,"h":8,"i":9}|);
}
$js = objToJson($obj, {keysort => 1});
is($js, q|{"a":1,"b":2,"c":3,"d":4,"e":5,"f":6,"g":7,"h":8,"i":9}|);
package My::Package;
sub sort_test {
$JSON::Converter::a cmp $JSON::Converter::b;
}
sub sort_test2 {
$JSON::Converter::b cmp $JSON::Converter::a;
}