use Test::More; use PDL; BEGIN { eval "use PDL::Slatec;"; if ( !$@ ) { eval "use PDL::Graphics::Limits;"; plan tests => 6; } else { plan skip_all => 'PDL::Slatec not available'; } }; $x1 = pdl( 1, 2, 3 ); $x2 = pdl( 2, 3, 4 ); $xn = pdl( 0.5, 0.5, 0.5 ); $xp = $xn / 2; $y1 = pdl( 10, 3, 4 ); $y2 = pdl( 0, 2, 4 ); @udsets = ( [ [ $x1, $xn ], $y1 ], [ $x2, $y2 ] ); @range = limits( @udsets, { Bounds => 'MinMax', Clean => 'None' } ); ok( eq_array( \@range, [ 0.5, 4, 0, 10 ] ), 'array: xerr symmetric, y none' ); @udsets = ( [ [ $x1, $xn ], $y1 ], [ [ $x2, undef, $xp ], $y2 ] ); @range = limits( @udsets, { Bounds => 'MinMax', Clean => 'None' } ); ok( eq_array( \@range, [ 0.5, 4.25, 0, 10 ] ), 'array: xerr asymmetric, y none' ); @udsets = ( [ [ $x1, $xn, $xp ], $y1 ], [ $x2, $y2 ] ); @range = limits( @udsets, { Bounds => 'MinMax', Clean => 'None' } ); ok( eq_array( \@range, [ 0.5, 4, 0, 10 ] ), 'array: xerr asymmetric, y none' ); @udsets = ( [ { x => $x1, xerr => $xn, y => $y1 }, { x => $x2, y => $y2 } ]); @range = limits( @udsets, { VecKeys => [ 'x,=xerr', 'y'], Bounds => 'MinMax', Clean => 'None', KeyCroak => 0 } ); ok( eq_array( \@range, [ 0.5, 4, 0, 10 ] ), 'hash: xerr symmetric, y none' ); @udsets = ( [ { x => $x1, xerr => $xn, 'y' => $y1 } => ( 'x =xerr', 'y' ) ], [ { x => $x2, xp => $xp, 'y' => $y2 } => ( 'x >xp', 'y') ] ); @range = limits( @udsets, { Bounds => 'MinMax', Clean => 'None' } ); ok( eq_array( \@range, [ 0.5, 4.25, 0, 10 ] ), 'hash: xerr asymmetric, y none' ); @udsets = ( [ { x => $x1, xn => $xn, xp => $xp, y => $y1 }, { x => $x2, y => $y2 } ] ); @range = limits( @udsets, { VecKeys => [ 'x xp', 'y' ], Bounds => 'MinMax', Clean => 'None', KeyCroak => 0 } ); ok( eq_array( \@range, [ 0.5, 4, 0, 10 ] ), 'hash: xerr asymmetric, y none' );