Data-TOON
view release on metacpan or search on metacpan
t/07_root_forms.t view on Meta::CPAN
my $encoded = Data::TOON->encode($data);
is($encoded, '42', 'encode root primitive number');
}
# Test 9: Encoding root primitive - string
{
my $data = 'hello';
my $encoded = Data::TOON->encode($data);
is($encoded, 'hello', 'encode root primitive string');
}
# Test 10: Encoding root primitive - numeric 1 (appears as 1, not true in Perl)
{
my $data = 1;
my $encoded = Data::TOON->encode($data);
# In Perl, 1 is numeric, so it encodes as '1' not 'true'
is($encoded, '1', 'encode root primitive numeric 1');
}
# Test 11: Encoding root array
{
my $data = [1, 2, 3];
my $encoded = Data::TOON->encode($data);
like($encoded, qr/\[3\]/, 'encode root array');
}
# Test 12: Canonical number form - remove trailing zeros
{
my $toon_text = 'data: 1.5000';
my $data = Data::TOON->decode($toon_text);
# After normalization should be 1.5
is($data->{data}, 1.5, 'canonical: remove trailing zeros');
}
# Test 13: Canonical number form - -0 becomes 0
{
my $toon_text = 'data: -0';
my $data = Data::TOON->decode($toon_text);
is($data->{data}, 0, 'canonical: -0 becomes 0');
}
# Test 14: Canonical number form - no leading zeros
{
my $toon_text = 'data: 01';
my $data = eval { Data::TOON->decode($toon_text) };
# Should either error or treat as string
ok($@ || $data->{data} eq '01', 'canonical: leading zeros rejected or as string');
}
# Test 15: Canonical number form - scientific notation
{
my $toon_text = 'data: 1e3';
my $data = Data::TOON->decode($toon_text);
is($data->{data}, 1000, 'canonical: scientific notation');
}
# Test 16: Round-trip root primitive
{
for my $value (42, 3.14, 'hello', 1, 0) {
my $encoded = Data::TOON->encode($value);
my $decoded = Data::TOON->decode($encoded);
is($decoded, $value, "round-trip: $value");
}
}
# Test 17: Round-trip root array
{
my $data = [1, 2, 3];
my $encoded = Data::TOON->encode($data);
my $decoded = Data::TOON->decode($encoded);
is_deeply($decoded, $data, 'round-trip root array');
}
done_testing;
( run in 0.655 second using v1.01-cache-2.11-cpan-437f7b0c052 )