The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
use strict;
use warnings;

use Test::More;

use PDL;

if ( eval { use Data::Printer {
		colored => 0,
		filters => { -external => [ 'PDL' ] }
	}; 1 } ) {
  plan tests => 8;
} else {
  plan skip_all => 'Test requires Data::Printer';
}
use_ok('Data::Printer::Filter::PDL');

my $pdl = sequence(10,10);
my $ddp = p $pdl, return_value => 'dump';

like( $ddp, qr/PDL/,                 "contains the class name PDL" );
like( $ddp, qr/Type\s+: double/,     "displays type"               );
like( $ddp, qr/Shape\s+: \[10 10\]/, "displays shape"              );
like( $ddp, qr/Min\s+: 0/,           "displays minimum"            );
like( $ddp, qr/Max\s+: 99/,          "displays maximum"            );
like( $ddp, qr/Badflag\s+: No/,          "displays badflag status"     );

{
  local $PDL::toolongtoprint = $pdl->nelem - 1;
  my $long_ddp = p $pdl, return_value => 'dump';
  ok( length $ddp > length $long_ddp, 'does not print PDL after setting $PDL::toolongtoprint');
}