annotate yetilab/matrix/test/test_matrix.yeti @ 97:d5fc902dcc3f

Initial matrix tests
author Chris Cannam
date Wed, 20 Mar 2013 22:49:41 +0000
parents
children bd135a950af7
rev   line source
Chris@97 1
Chris@97 2 module yetilab.matrix.test.test_matrix;
Chris@97 3
Chris@97 4 mat = load yetilab.matrix.matrix;
Chris@97 5 block = load yetilab.block.block;
Chris@97 6
Chris@97 7 { compare } = load yetilab.test.test;
Chris@97 8
Chris@97 9 [
Chris@97 10
Chris@97 11 "constMatrixEmpty": \(
Chris@97 12 m = mat.constMatrix 2 0 0;
Chris@97 13 compare m.size { columns = 0, rows = 0 }
Chris@97 14 ),
Chris@97 15
Chris@97 16 "constMatrixEmpty2": \(
Chris@97 17 compare (mat.constMatrix 2 0 4).size { columns = 0, rows = 0 } and
Chris@97 18 compare (mat.constMatrix 2 4 0).size { columns = 0, rows = 0 }
Chris@97 19 ),
Chris@97 20
Chris@97 21 "constMatrix": \(
Chris@97 22 m = mat.constMatrix 2 3 4;
Chris@97 23 compare m.size { columns = 4, rows = 3 } and
Chris@97 24 all id (map do row: compare (block.list (m.getRow row)) [2,2,2,2] done [0..2]) and
Chris@97 25 all id (map do col: compare (block.list (m.getColumn col)) [2,2,2] done [0..3])
Chris@97 26 ),
Chris@97 27
Chris@97 28 "randomMatrixEmpty": \(
Chris@97 29 m = mat.randomMatrix 0 0;
Chris@97 30 compare m.size { columns = 0, rows = 0 }
Chris@97 31 ),
Chris@97 32
Chris@97 33 "randomMatrix": \(
Chris@97 34 m = mat.randomMatrix 3 4;
Chris@97 35 compare m.size { columns = 4, rows = 3 }
Chris@97 36 ),
Chris@97 37
Chris@97 38 "zeroMatrixEmpty": \(
Chris@97 39 m = mat.zeroMatrix 0 0;
Chris@97 40 compare m.size { columns = 0, rows = 0 }
Chris@97 41 ),
Chris@97 42
Chris@97 43 "zeroMatrix": \(
Chris@97 44 m = mat.zeroMatrix 3 4;
Chris@97 45 compare m.size { columns = 4, rows = 3 } and
Chris@97 46 all id (map do row: compare (block.list (m.getRow row)) [0,0,0,0] done [0..2]) and
Chris@97 47 all id (map do col: compare (block.list (m.getColumn col)) [0,0,0] done [0..3])
Chris@97 48 ),
Chris@97 49
Chris@97 50 "identityMatrixEmpty": \(
Chris@97 51 m = mat.identityMatrix 0 0;
Chris@97 52 compare m.size { columns = 0, rows = 0 }
Chris@97 53 ),
Chris@97 54
Chris@97 55 "identityMatrix": \(
Chris@97 56 m = mat.identityMatrix 3 4;
Chris@97 57 compare m.size { columns = 4, rows = 3 } and
Chris@97 58 all id (map do row: compare (block.list (m.getRow row)) [1,1,1,1] done [0..2]) and
Chris@97 59 all id (map do col: compare (block.list (m.getColumn col)) [1,1,1] done [0..3])
Chris@97 60 ),
Chris@97 61
Chris@97 62 "generateEmpty": \(
Chris@97 63 m = mat.generate do row col: 0 done 0 0;
Chris@97 64 compare m.size { columns = 0, rows = 0 }
Chris@97 65 ),
Chris@97 66
Chris@97 67 "generate": \(
Chris@97 68 m = mat.generate do row col: row * 10 + col done 2 3;
Chris@97 69 compare (block.list (m.getRow 0)) [0,1,2] and
Chris@97 70 compare (block.list (m.getRow 1)) [10,11,12]
Chris@97 71 ),
Chris@97 72
Chris@97 73 "widthAndHeight": \(
Chris@97 74 m = mat.constMatrix 2 3 4;
Chris@97 75 compare m.size { columns = mat.width m, rows = mat.height m }
Chris@97 76 ),
Chris@97 77
Chris@97 78 "equal": \(
Chris@97 79 m = mat.constMatrix 2 3 4;
Chris@97 80 m' = m;
Chris@97 81 p = mat.constMatrix 2 4 3;
Chris@97 82 q = mat.constMatrix 3 3 4;
Chris@97 83 mat.equal m m' and mat.equal m m and
Chris@97 84 not mat.equal m p and not mat.equal m q and not mat.equal p q
Chris@97 85 ),
Chris@97 86
Chris@97 87 "getAt": \(
Chris@97 88 generator row col = row * 10 + col;
Chris@97 89 m = mat.generate generator 2 3;
Chris@97 90 all id
Chris@97 91 (map do row: all id
Chris@97 92 (map do col: m.getAt row col == generator row col done [0..2])
Chris@97 93 done [0..1])
Chris@97 94 ),
Chris@97 95
Chris@97 96 "setAt": \(
Chris@97 97 generator row col = row * 10 + col;
Chris@97 98 m = mat.generate generator 2 3;
Chris@97 99 m.setAt 1 2 16;
Chris@97 100 compare (m.getAt 1 2) 16 and
Chris@97 101 compare (m.getAt 1 1) 11 and
Chris@97 102 compare (m.getAt 0 2) 2
Chris@97 103 ),
Chris@97 104
Chris@97 105 "copyOfEqual": \(
Chris@97 106 m = mat.constMatrix 2 3 4;
Chris@97 107 m'' = mat.copyOf m;
Chris@97 108 mat.equal m m''
Chris@97 109 ),
Chris@97 110
Chris@97 111 "copyOfAlias": \(
Chris@97 112 m = mat.constMatrix 2 3 4;
Chris@97 113 m' = m;
Chris@97 114 m'' = mat.copyOf m;
Chris@97 115 m.setAt 0 0 6;
Chris@97 116 mat.equal m m' and not mat.equal m m'';
Chris@97 117 ),
Chris@97 118
Chris@97 119 "transposedEmpty": \(
Chris@97 120 compare (mat.transposed (mat.constMatrix 2 0 0)).size { columns = 0, rows = 0 } and
Chris@97 121 compare (mat.transposed (mat.constMatrix 2 0 4)).size { columns = 0, rows = 0 } and
Chris@97 122 compare (mat.transposed (mat.constMatrix 2 4 0)).size { columns = 0, rows = 0 }
Chris@97 123 ),
Chris@97 124
Chris@97 125 "transposedSize": \(
Chris@97 126 compare (mat.transposed (mat.constMatrix 2 3 4)).size { columns = 3, rows = 4 }
Chris@97 127 ),
Chris@97 128
Chris@97 129 "transposed": \(
Chris@97 130 generator row col = row * 10 + col;
Chris@97 131 m = mat.generate generator 2 3;
Chris@97 132 m' = mat.transposed m;
Chris@97 133 all id
Chris@97 134 (map do row: all id
Chris@97 135 // like getAt test, but with col/row flipped
Chris@97 136 (map do col: m'.getAt col row == generator row col done [0..2])
Chris@97 137 done [0..1])
Chris@97 138 ),
Chris@97 139
Chris@97 140 ] is hash<string, () -> boolean>;
Chris@97 141