# Test ->clump(). This is not yet good enough: we need
# nasty test cases

use PDL::LiteF;

$|=1;

#  PDL::Core::set_debugging(1);
kill INT,$$  if $ENV{UNDER_DEBUGGER}; # Useful for debugging.


#$a = zeroes(4,4) * zeroes(4,4);
# $a = zeroes(4,4) ;

#print $a;
#
#print $a->at(3,3);
#
#exit 4;


sub ok {
	my $no = shift ;
	my $result = shift ;
	print "not " unless $result ;
	print "ok $no\n" ;
}

sub approx {
	my($a,$b) = @_;
	my $c = abs($a-$b);
	my $d = max($c);
	print "C AND D: $a,$b,$c,$d\n";
	$d < 0.01;
}

if(0) {
	$a0 = zeroes(3,3);
	print $a0;
	$b0 = 10 * $a0;
	print $b0;
}

$a0 = zeroes(3,3);
# $a = $a0->PDL::Core::new_or_inplace($a0);
$a = $a0->copy;
$b = $a->xchg(0,1);
print $a;
# PDL::Primitive::axisvalues($b);
# print $a;

print "1..3\n";

$a0 = xvals(zeroes(3,3));

print $a0;

$a1 = yvals(zeroes(3,3));

print $a1;

$a2 = 10*$a1;

print $a2;

$a3 = $a0 + $a1;

print $a3;

$a = xvals(zeroes(3,3)) + 10*yvals(zeroes(3,3));

 print $a;

$b = $a->clump(-1);

# $b->make_physical();

# $a->jdump();
# $b->jdump();

print $b;

ok(1,approx($b,pdl [0,1,2,10,11,12,20,21,22]));

# print $b;

$c = $a->slice('0:2:2,:');

$d = $c->clump(-1);

$e = $d->slice("2:4");

$f = ""; # Warning eater

$f= $e->copy();;

kill INT,$$  if $ENV{UNDER_DEBUGGER}; # Useful for debugging.
# ok(2,$@ =~ /^clump: Increments do not match/);
# Clump supports this now.
ok(2,approx($d,pdl [0,2,10,12,20,22]));

ok(3,approx($e,pdl [10,12,20]));
