Skip to content

Commit

Permalink
start reworking the test suite to tease some of these methods out int…
Browse files Browse the repository at this point in the history
…o their own files. This makes things a lot more manageable. Create subtest files for some of the methods on nummatrix2d for now, will add others later
  • Loading branch information
Whiteknight committed Aug 19, 2010
1 parent 705a1f8 commit 625b78f
Show file tree
Hide file tree
Showing 15 changed files with 2,141 additions and 248 deletions.
47 changes: 32 additions & 15 deletions setup.pir
Expand Up @@ -62,25 +62,25 @@ SOURCES
$P2['linalg_group'] = $P3
$P0['dynpmc'] = $P2

$P2 = new 'Hash'
$P2["src/nqp/pla.pir"] = "src/nqp/pla.nqp"
$P2["t/testlib/matrixtestbase.pir"] = "t/testlib/matrixtestbase.nqp"
$P2["t/testlib/matrixtest.pir"] = "t/testlib/matrixtest.nqp"
$P2["t/testlib/numericmatrixtest.pir"] = "t/testlib/numericmatrixtest.nqp"
$P2["t/testlib/loader.pir"] = "t/testlib/loader.nqp"
$P2["t/testlib/matrixtestfactory.pir"] = "t/testlib/matrixtestfactory.nqp"
$P0["pir_nqp-rx"] = $P2

$P2 = new "ResizablePMCArray"
push $P2, "t/testlib/matrixtestbase.pir"
push $P2, "t/testlib/matrixtest.pir"
push $P2, "t/testlib/numericmatrixtest.pir"
push $P2, "t/testlib/loader.pir"
push $P2, "t/testlib/matrixtestfactory.pir"
$P1 = new 'Hash'
$P1["t/testlib/pla_test.pir"] = $P2
$P0["pir_pir"] = $P1

$P2 = new 'Hash'
$P2["src/nqp/pla.pir"] = "src/nqp/pla.nqp"
$P0["pir_nqp-rx"] = $P2

'add_test_lib_file'($P0, "matrixtestbase")
'add_test_lib_file'($P0, "matrixtest")
'add_test_lib_file'($P0, "numericmatrixtest")
'add_test_lib_file'($P0, "loader")
'add_test_lib_file'($P0, "matrixtestfactory")
'add_test_lib_file'($P0, "methods/Gemm")
'add_test_lib_file'($P0, "methods/RowSwap")
'add_test_lib_file'($P0, "methods/RowCombine")
'add_test_lib_file'($P0, "methods/RowScale")

$P2 = new 'Hash'
$P2["pla_nqp.pbc"] = "src/nqp/pla.pir"
$P2["t/testlib/pla_test.pbc"] = "t/testlib/pla_test.pir"
Expand All @@ -102,7 +102,6 @@ SOURCES
#$P0['test_exec'] = $S0
no_test:


# dist
$P5 = glob('src/pmc/pla_matrix_types.h src/*.pir src/*.m examples/*.pir')
$P0['manifest_includes'] = $P5
Expand Down Expand Up @@ -146,6 +145,24 @@ SOURCES
L1:
.end

.sub 'add_test_lib_file'
.param pmc config
.param string filename

.local pmc pirnqprx
pirnqprx = config["pir_nqp-rx"]
$S0 = "t/testlib/" . filename
$S1 = $S0 . ".nqp"
$S2 = $S0 . ".pir"
pirnqprx[$S2] = $S1

.local pmc platest
$P0 = config["pir_pir"]
$P1 = $P0["t/testlib/pla_test.pir"]
push $P1, $S2
.end




# Local Variables:
Expand Down
15 changes: 10 additions & 5 deletions t/harness
Expand Up @@ -17,8 +17,12 @@ sub MAIN () {
my $total_failed := 0;
my $total_files := 0;
my $failed_files := 0;
my $max_length := 30;
my @files := get_all_tests("t", "t/pmc");
our $max_length;
$max_length := 30;
my @files := get_all_tests("t", "t/pmc",
"t/methods/nummatrix2d",
"t/methods/complexmatrix2d",
"t/methods/pmcmatrix2d");
my %failures := {};

for @files {
Expand Down Expand Up @@ -109,6 +113,7 @@ sub MAIN () {
sub get_all_tests(*@dirs) {
my $fs := FileSystem.instance;
my @files := Parrot::new("ResizableStringArray");
our $max_length;
for @dirs {
my $dir := $_;
my @rawfiles := $fs.get_contents($dir);
Expand All @@ -119,9 +124,9 @@ sub get_all_tests(*@dirs) {
if pir::index__ISS($filename, ".OLD") == -1 {
@files.push($dir ~ "/" ~ $filename);
my $length := pir::length__IS($dir ~ "/" ~ $filename);
#if $length > $max_length {
# $max_length := $length;
#}
if $length > $max_length {
$max_length := $length;
}
}
}
}
Expand Down
17 changes: 17 additions & 0 deletions t/methods/nummatrix2d/row_combine.t
@@ -0,0 +1,17 @@
my $tests := Test::NumMatrix2D::RowCombine.new();
$tests.suite.run;

class Test::NumMatrix2D::RowCombine is Pla::Methods::RowCombine {
INIT {
use('UnitTest::Testcase');
use('UnitTest::Assertions');
}

has $!factory;
method factory() {
unless pir::defined__IP($!factory) {
$!factory := Pla::MatrixFactory::NumMatrix2D.new();
}
return $!factory;
}
}
17 changes: 17 additions & 0 deletions t/methods/nummatrix2d/row_scale.t
@@ -0,0 +1,17 @@
my $tests := Test::NumMatrix2D::RowScale.new();
$tests.suite.run;

class Test::NumMatrix2D::RowScale is Pla::Methods::RowScale {
INIT {
use('UnitTest::Testcase');
use('UnitTest::Assertions');
}

has $!factory;
method factory() {
unless pir::defined__IP($!factory) {
$!factory := Pla::MatrixFactory::NumMatrix2D.new();
}
return $!factory;
}
}
17 changes: 17 additions & 0 deletions t/methods/nummatrix2d/row_swap.t
@@ -0,0 +1,17 @@
my $tests := Test::NumMatrix2D::RowSwap.new();
$tests.suite.run;

class Test::NumMatrix2D::RowSwap is Pla::Methods::RowSwap {
INIT {
use('UnitTest::Testcase');
use('UnitTest::Assertions');
}

has $!factory;
method factory() {
unless pir::defined__IP($!factory) {
$!factory := Pla::MatrixFactory::NumMatrix2D.new();
}
return $!factory;
}
}
6 changes: 3 additions & 3 deletions t/run_test.pir
Expand Up @@ -12,14 +12,14 @@
.local pmc args_iter
.local pmc testfile
args_iter = iter args
$S0 = "t/pmc/"
#$S0 = "t/pmc/"
loop_top:
unless args_iter goto file_end
testfile = shift args_iter
$P0 = get_hll_global ["Nqp"], "compile_file"
$S1 = testfile
$S2 = $S0 . $S1
$P1 = $P0($S2)
#$S2 = $S0 . $S1
$P1 = $P0($S1)
$P2 = $P1[0]
$P2()
goto loop_top
Expand Down
85 changes: 85 additions & 0 deletions t/testlib/methods/Gemm.nqp
@@ -0,0 +1,85 @@
class Pla::Methods::Gemm is Pla::MatrixTestBase {

INIT {
use('UnitTest::Testcase');
use('UnitTest::Assertions');
}

method test_METHOD_gemm_aA() { self.factory.RequireOverride("test_METHOD_gemm_aA"); }
method test_METHOD_gemm_AB() { self.RequireOverride("test_METHOD_gemm_AB"); }
method test_METHOD_gemm_aAB() { self.RequireOverride("test_METHOD_gemm_aAB"); }
method test_METHOD_gemm_aABbC() { self.RequireOverride("test_METHOD_gemm_aABbC"); }

method test_METHOD_gemm_BADTYPE_A() {
assert_throws(Exception::OutOfBounds, "A is bad type",
{
my $A := "foobar";
my $B := self.factory.defaultmatrix3x3();
my $C := self.factory.defaultmatrix3x3();
$B.gemm(1.0, $A, $B, 1.0, $C);
});
}

method test_METHOD_gemm_BADTYPE_B() {
assert_throws(Exception::OutOfBounds, "B is bad type",
{
my $A := self.factory.defaultmatrix3x3();
my $B := "foobar";
my $C := self.factory.defaultmatrix3x3();
$A.gemm(1.0, $A, $B, 1.0, $C);
});
}

method test_METHOD_gemm_BADTYPE_C() {
assert_throws(Exception::OutOfBounds, "C is bad type",
{
my $A := self.factory.defaultmatrix3x3();
my $B := self.factory.defaultmatrix3x3();
my $C := "foobar";
$A.gemm(1.0, $A, $B, 1.0, $C);
});
}

method test_METHOD_gemm_BADSIZE_A() {
assert_throws(Exception::OutOfBounds, "A has incorrect size",
{
my $A := self.factory.defaultmatrix2x2();
my $B := self.factory.defaultmatrix3x3();
my $C := self.factory.defaultmatrix3x3();
$A.gemm(1.0, $A, $B, 1.0, $C);
});
}

method test_METHOD_gemm_BADSIZE_B() {
assert_throws(Exception::OutOfBounds, "B has incorrect size",
{
my $A := self.factory.defaultmatrix3x3();
my $B := self.factory.defaultmatrix2x2();
my $C := self.factory.defaultmatrix3x3();
$A.gemm(1.0, $A, $B, 1.0, $C);
});
}

method test_METHOD_gemm_BADSIZE_C() {
assert_throws(Exception::OutOfBounds, "C has incorrect size",
{
my $A := self.factory.defaultmatrix3x3();
my $B := self.factory.defaultmatrix3x3();
my $C := self.factory.defaultmatrix2x2();
$A.gemm(1.0, $A, $B, 1.0, $C);
});
}

method test_METHOD_gemm_AUTOCONVERT_A_NumMatrix2D() { todo("Write this!"); }
method test_METHOD_gemm_AUTOCONVERT_B_NumMatrix2D() { todo("Write this!"); }
method test_METHOD_gemm_AUTOCONVERT_C_NumMatrix2D() { todo("Write this!"); }

method test_METHOD_gemm_AUTOCONVERT_A_ComplexMatrix2D() { todo("Write this!"); }
method test_METHOD_gemm_AUTOCONVERT_B_ComplexMatrix2D() { todo("Write this!"); }
method test_METHOD_gemm_AUTOCONVERT_C_ComplexMatrix2D() { todo("Write this!"); }

method test_METHOD_gemm_AUTOCONVERT_A_PMCMatrix2D() { todo("Write this!"); }
method test_METHOD_gemm_AUTOCONVERT_B_PMCMatrix2D() { todo("Write this!"); }
method test_METHOD_gemm_AUTOCONVERT_C_PMCMatrix2D() { todo("Write this!"); }

}

0 comments on commit 625b78f

Please sign in to comment.