The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Test::More tests => 12;
use File::Spec;
use lib File::Spec->catfile("..","lib");
use Math::MatrixReal;


do 'funcs.pl';

my $matrix = Math::MatrixReal->new_from_string(<<'MATRIX');
[  1  7  2  6  9  0  1  1 ]
[  0  5  0  0  0  0  0  0 ]
[  0  0  1  4  0  0  0  0 ]
[  0  0  0  1  0  0  0  0 ]
[  2  0  0  0  5  0  4  0 ]
[  0  3  0  8  0  1  0  0 ]
[  1  0  0  0  0  0 -5  0 ]
[  9  0  0  0  0  0 15  0 ]
MATRIX

ok( $matrix eq $matrix, 'eq overload works' );
ok( $matrix == $matrix, '== overload works' );
ok( $matrix != 2*$matrix, '!= overload works' );
ok( $matrix ne 2*$matrix, 'ne overload works' );
ok( ($matrix*1) == $matrix, '== overload works' );
ok( $matrix == ($matrix*1), '== overload works' );
ok( $matrix == ($matrix**1), '== overload works' );
ok( $matrix**0 == $matrix**0, '== overload works' );
{ no warnings;
eval{ $matrix != 1 };
ok( $@ , '!= dies when matrix compared to scalar' );

eval{ $matrix == 1 };
ok( $@ , '== dies when matrix compared to scalar' );
}
ok( $matrix->inverse == $matrix->inverse, '== overload works' );
ok( $matrix != $matrix->row(1), 'comparing square matrix to row vector works');