1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
#!perl
use strict;
use warnings;
use Sereal::Decoder qw(decode_sereal);
use Sereal::Decoder::Constants qw(:all);
use File::Spec;
use Devel::Peek;
use lib File::Spec->catdir(qw(t lib));
BEGIN {
lib->import('lib')
if !-d 't';
}
use Sereal::TestSet qw(:all);
use Data::Dumper; # this thing seems to change the meaning of true?!
# These tests are extraordinarily basic, badly-done and really just
# for basic sanity testing during development.
use Test::More;
run_tests("plain");
done_testing();
note("All done folks!");
sub run_tests {
my ( $extra_name, $opt_hash )= @_;
my $dec= Sereal::Decoder->new( $opt_hash ? $opt_hash : () );
setup_tests(2);
foreach my $bt (@BasicTests) {
my ( $in, $exp, $name )= @$bt;
next if $ENV{SEREAL_TEST} and $ENV{SEREAL_TEST} ne $name;
$exp= $exp->($opt_hash) if ref($exp) eq 'CODE';
$exp= Header() . $exp;
my ( $out, $out2, $out3 );
my $ok= eval { decode_sereal( $exp, $opt_hash ? $opt_hash : undef, $out ); 1 };
my $err= $@ || 'Zombie error';
ok( $ok, "($extra_name) did not die: $name" )
or do {
diag $err;
diag "input=", Data::Dumper::qquote($exp);
next;
};
ok( defined($out) == defined($in), "($extra_name) defined: $name" );
is_deeply( $out, $in, "($extra_name) is_deeply: $name" );
my $ok2= eval { $out2= $dec->decode( $exp, $out ); 1 };
my $err2= $@ || 'Zombie error';
ok( $ok2, "($extra_name, OO) did not die: $name" )
or do {
diag $err2;
diag "input=", Data::Dumper::qquote($exp);
next;
};
ok( defined($out2) == defined($in), "($extra_name, OO) defined: $name" );
is_deeply( $out2, $in, "($extra_name, OO) is_deeply: $name" );
SKIP: {
skip "Weak thing alias test cannot work without pass-down", 1
if $name eq 'weak thing (aliased root)';
my $ok3= eval { $out3= decode_sereal($exp); 1 };
my $err3= $@ || 'Zombie error';
ok( $ok, "($extra_name, non-pass-down) did not die: $name" )
or do {
diag $err3;
diag "input=", Data::Dumper::qquote($exp);
next;
};
ok( defined($out3) == defined($in), "($extra_name, non-pass-down) defined: $name" );
is_deeply( $out3, $in, "($extra_name, non-pass-down) is_deeply: $name" );
}
}
}
|