#!/bin/perl -w
# $Id: 20_analyse.t 189 2006-12-05 02:41:46Z fil $
use strict;
use Test::More ( tests=>10 );
use Data::Tabular::Dumper;
pass( 'loaded' );
my %params=(XML=>["t/test-20.xml", {eol=>"\n", binary=>1}]);
my $allowed=Data::Tabular::Dumper->available();
my $dumper = Data::Tabular::Dumper->open( XML=>$params{XML} );
## 2-dimentional
#############################################
my $dataLoL = [
[1..3],
[4..5],
];
my $state = $dumper->analyse( $dataLoL );
is_deeply( $state, {
depth => 1,
maxdepth=>2,
data => [
{ depth=>2,
data=>[1..3],
maxdepth=>2,
},
{ depth=>2,
data=>[4..5],
maxdepth=>2,
}
]
}, "LoL" );
#############################################
my $dataHoL = {
honk => [ qw( dealing card games ) ],
bonk => [ qw( no one keeping score )]
};
$state = $dumper->analyse( $dataHoL );
is_deeply( $state, {
depth => 1,
maxdepth=>2,
data => [
{ depth=>2,
data=>[ qw( bonk no one keeping score ) ],
maxdepth=>2,
},
{ depth=>2,
data=>[ qw( honk dealing card games ) ],
maxdepth=>2,
}
]
}, "HoL" );
#############################################
my $dataLoH = [
{ honk => 42, bonk=>17 },
{ honk => 12, blurf=>36 }
];
$state = $dumper->analyse( $dataLoH );
is_deeply( $state, {
depth => 1,
fields => [qw( blurf bonk honk )],
maxdepth=>2,
data => [
{ depth=>2,
data=>[ undef(), 17, 42 ],
# maxdepth=>2,
},
{ depth=>2,
data=>[ 36, undef(), 12 ],
# maxdepth=>2,
}
]
}, "LoH" );
#############################################
my $dataHoH = {
monday => { honk => 42, bonk=>17 },
wednesday => { honk => 12, blurf=>36 }
};
$state = $dumper->analyse( $dataHoH );
is_deeply( $state, {
depth => 1,
fields => ['', qw( blurf bonk honk )],
maxdepth=>2,
data => [
{ depth=>2,
data=>[ 'monday', undef(), 17, 42 ],
# maxdepth=>2,
},
{ depth=>2,
data=>[ 'wednesday', 36, undef(), 12 ],
# maxdepth=>2,
}
]
}, "HoH" );
#############################################
## 3-dimentional
my $dataLoLoL = [
[ [15..20], [4..5] ],
[ [11..13], [4..5] ]
];
$state = $dumper->analyse( $dataLoLoL );
is_deeply( $state, {
depth => 1,
maxdepth => 4,
pages => [
{ depth=>2,
maxdepth => 3,
data=>[ { depth=>3, data=> [15..20], maxdepth => 3 },
{ depth=>3, data=> [4..5], maxdepth => 3 } ]
},
{ depth=>2,
maxdepth => 3,
data=>[ { depth=>3, data=> [11..13], maxdepth => 3 },
{ depth=>3, data=> [4..5], maxdepth => 3 } ]
}
]
}, "LoLoL") or die "LoLoL=", Dumper $state;
#############################################
my $dataHoLoL = {
honk => [ [15..20], [4..5] ],
bonk => [ [11..13], [4..5] ]
};
$state = $dumper->analyse( $dataHoLoL );
is_deeply( $state, {
depth => 1,
maxdepth=>4,
pages => [
{ depth=>2,
name=>'bonk',
maxdepth=>3,
data=>[ { depth=>3, data=> [11..13], maxdepth=>3 },
{ depth=>3, data=> [4..5], maxdepth=>3 } ]
},
{ name=>'honk',
depth=>2,
maxdepth=>3,
data=>[ { depth=>3, data=> [15..20], maxdepth=>3 },
{ depth=>3, data=> [4..5], maxdepth=>3 } ]
},
]
}, "HoLoL");
#############################################
my $dataHoLoH = {
honk => [ { biff=>17, boff=>18 }, {qw(who has all the mst3ks man)} ],
bonk => [ { billy=>1, bobby=>42 } ]
};
$state = $dumper->analyse( $dataHoLoH );
is_deeply( $state, {
depth => 1,
maxdepth => 4,
pages => [
{ data => [ { data => [1,42], depth => 3 } ],
depth => 2,
fields => [ qw( billy bobby ) ],
maxdepth => 3,
name => 'bonk'
},
{ data => [ { data => [ undef(), 17, 18, undef(), undef() ],
depth => 3 },
{ data => [ 'the', undef(), undef(), 'man', 'has' ],
depth => 3 },
],
depth => 2,
fields => [ qw( all biff boff mst3ks who ) ],
maxdepth => 3,
name => 'honk'
}
]
}, "HoLoH" );
#############################################
my $dataHoHoH = {
honk => { one=>{ biff=>17, boff=>18 },
two=>{qw(who has all the mst3ks man)}
},
bonk => { one=>{ billy=>1, bobby=>42 },
two=>{ zin=>1, bin=>1 } }
};
$state = $dumper->analyse( $dataHoHoH );
is_deeply( $state, {
depth => 1,
maxdepth => 4,
pages => [ {
data => [ { data => [ 'one', 1, undef(), 42, undef() ],
depth => 3 },
{ data => [ 'two', undef(), 1, undef(), 1 ],
depth => 3 } ],
depth => 2,
fields => [ '', qw( billy bin bobby zin ) ],
maxdepth => 3,
name => 'bonk'
},
{ data => [ { data=>[ 'one', undef(), 17, 18, undef(), undef() ],
depth => 3},
{ data=>[ 'two', 'the', undef(), undef(), qw( man has ) ],
depth => 3 }
],
depth => 2,
fields => [ '', qw( all biff boff mst3ks who ) ],
maxdepth => 3,
name => 'honk'
}
]
}, "HoHoH" );
#############################################
my $dataLoLoH = [
[ { biff=>17, boff=>18 }, {qw(who has all the mst3ks man)},
{ biff=>42, boff=>42 }, {qw(who 42 all 42 mst3ks 42)}
],
[ { billy=>1, bobby=>42 }, { zin=>1, bin=>1 } ]
];
$state = $dumper->analyse( $dataLoLoH );
is_deeply( $state, {
depth=>1,
maxdepth=>4,
pages => [
{ data => [ { depth => 3,
data=>[ undef(), 17, 18, undef(), undef()] },
{ depth => 3,
data=>[ 'the', undef(), undef(), qw( man has ) ] },
{ depth => 3,
data=>[ undef(), 42, 42, undef(), undef() ] },
{ depth => 3,
data=>[ 42, undef(), undef(), 42, 42 ] },
],
depth=>2, fields=>[ qw( all biff boff mst3ks who ) ],
maxdepth=>3
},
{
data => [ { data => [ 1, undef(), 42, undef() ], depth => 3 },
{ data => [ undef(), 1, undef(), 1 ], depth => 3 },
],
depth => 2,
fields => [ qw( billy bin bobby zin ) ],
maxdepth => 3
}
]
}, "LoLoH" );
#############################################
my $dataHoHoL = {
one => { biff=>[1..5], boff=>[17..20] },
two => { biff=>[17..25], bill=>[1..2] },
};
$state = $dumper->analyse( $dataHoHoL );
$dumper->close;
unlink( $params{XML}[0] ) or die "Unable to unlink $params{XML}[0]: $!";
__END__
$Log$
Revision 1.1 2006/03/24 03:53:11 fil
Initial revision