Line data Source code
1 : /*
2 : * File: TestMatrix.h
3 : * Author: Pantelis Sopasakis
4 : *
5 : * Created on Sep 14, 2015, 3:34:41 PM
6 : *
7 : * ForBES is free software: you can redistribute it and/or modify
8 : * it under the terms of the GNU Lesser General Public License as published by
9 : * the Free Software Foundation, either version 3 of the License, or
10 : * (at your option) any later version.
11 : *
12 : * ForBES is distributed in the hope that it will be useful,
13 : * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 : * GNU Lesser General Public License for more details.
16 : *
17 : * You should have received a copy of the GNU Lesser General Public License
18 : * along with ForBES. If not, see <http://www.gnu.org/licenses/>.
19 : */
20 :
21 : #ifndef TESTMATRIX_H
22 : #define TESTMATRIX_H
23 :
24 : #include <cppunit/extensions/HelperMacros.h>
25 :
26 : #define FORBES_TEST_UTILS
27 : #include "ForBES.h"
28 :
29 : #include <cstdlib>
30 : #include <stdlib.h>
31 : #include <cmath>
32 : #include <time.h>
33 :
34 : class TestMatrix : public CPPUNIT_NS::TestFixture {
35 2 : CPPUNIT_TEST_SUITE(TestMatrix);
36 :
37 :
38 :
39 1 : CPPUNIT_TEST(testGetSet);
40 1 : CPPUNIT_TEST(testGetSetTranspose);
41 1 : CPPUNIT_TEST(testQuadratic);
42 1 : CPPUNIT_TEST(testQuadratic2);
43 1 : CPPUNIT_TEST(testAssignment);
44 1 : CPPUNIT_TEST(testQuadratic3);
45 1 : CPPUNIT_TEST(testAdditionBad);
46 1 : CPPUNIT_TEST(testFBMatrix);
47 1 : CPPUNIT_TEST(testMakeRandomFBMatrix);
48 1 : CPPUNIT_TEST(testGetData);
49 1 : CPPUNIT_TEST(testGetNcols);
50 1 : CPPUNIT_TEST(testGetNrows);
51 1 : CPPUNIT_TEST(testIsColumnVector);
52 1 : CPPUNIT_TEST(testIsRowVector);
53 1 : CPPUNIT_TEST(testLength);
54 1 : CPPUNIT_TEST(testReshape);
55 1 : CPPUNIT_TEST(testReshapeBad);
56 1 : CPPUNIT_TEST(testQuadraticDot);
57 1 : CPPUNIT_TEST(testDiagonalGetSet);
58 1 : CPPUNIT_TEST(testDiagonalMultiplication);
59 1 : CPPUNIT_TEST(testDiagonalMultiplication2);
60 1 : CPPUNIT_TEST(testDenseTimesDiagonal);
61 1 : CPPUNIT_TEST(testQuadDiagonal);
62 1 : CPPUNIT_TEST(testQuadSymmetric);
63 1 : CPPUNIT_TEST(testSubtract);
64 1 : CPPUNIT_TEST(testLowerTriangular_getSet);
65 1 : CPPUNIT_TEST(testSymmetric_getSet);
66 1 : CPPUNIT_TEST(testTranspose);
67 1 : CPPUNIT_TEST(testLeftTransposeMultiply);
68 1 : CPPUNIT_TEST(testRightTransposeMultiply);
69 1 : CPPUNIT_TEST(testLowerTriangularTraspose_getSet);
70 1 : CPPUNIT_TEST(testLeftSymmetricMultiply);
71 1 : CPPUNIT_TEST(testSparseGetSet);
72 1 : CPPUNIT_TEST(testSparseAddDense);
73 1 : CPPUNIT_TEST(testSparseAddSparse);
74 1 : CPPUNIT_TEST(testSparseAddSparse2);
75 1 : CPPUNIT_TEST(testSparseQuad);
76 1 : CPPUNIT_TEST(testSparseQuadSparseX);
77 1 : CPPUNIT_TEST(testSparseQuad_q);
78 1 : CPPUNIT_TEST(testSparseDotProd);
79 1 : CPPUNIT_TEST(testSubmatrix);
80 1 : CPPUNIT_TEST(testSubmatrixSparse);
81 1 : CPPUNIT_TEST(testSubmatrixTranspose);
82 1 : CPPUNIT_TEST(testSubmatrixMultiply);
83 1 : CPPUNIT_TEST(testSubmatrixMultiplyTr);
84 1 : CPPUNIT_TEST(testToggleDiagonal);
85 1 : CPPUNIT_TEST(testOpplus);
86 1 : CPPUNIT_TEST(testOpplus2);
87 1 : CPPUNIT_TEST(testOpplusSparse);
88 :
89 :
90 1 : CPPUNIT_TEST(test_ADD1);
91 1 : CPPUNIT_TEST(test_ADD2);
92 1 : CPPUNIT_TEST(test_ADS);
93 1 : CPPUNIT_TEST(test_ADH);
94 1 : CPPUNIT_TEST(test_ADX);
95 1 : CPPUNIT_TEST(test_ADL);
96 1 : CPPUNIT_TEST(test_ADW);
97 :
98 1 : CPPUNIT_TEST(test_ADDT);
99 1 : CPPUNIT_TEST(test_ADST);
100 1 : CPPUNIT_TEST(test_ADHT);
101 1 : CPPUNIT_TEST(test_ADXT);
102 1 : CPPUNIT_TEST(test_ADLT);
103 1 : CPPUNIT_TEST(test_ADWT);
104 :
105 1 : CPPUNIT_TEST(test_AHH);
106 1 : CPPUNIT_TEST(test_AHD);
107 1 : CPPUNIT_TEST(test_AHX);
108 1 : CPPUNIT_TEST(test_AHL);
109 1 : CPPUNIT_TEST(test_AHS);
110 :
111 1 : CPPUNIT_TEST(test_ASD);
112 1 : CPPUNIT_TEST(test_ASH);
113 1 : CPPUNIT_TEST(test_ASX);
114 1 : CPPUNIT_TEST(test_ASL);
115 1 : CPPUNIT_TEST(test_ASS);
116 :
117 1 : CPPUNIT_TEST(test_ADTDT);
118 1 : CPPUNIT_TEST(test_ASTDT);
119 :
120 1 : CPPUNIT_TEST(test_ALL);
121 1 : CPPUNIT_TEST(test_ALX);
122 :
123 1 : CPPUNIT_TEST(test_AXX);
124 :
125 1 : CPPUNIT_TEST(test_ASST);
126 :
127 :
128 :
129 1 : CPPUNIT_TEST(test_EH);
130 1 : CPPUNIT_TEST(test_EX);
131 1 : CPPUNIT_TEST(test_EHT);
132 1 : CPPUNIT_TEST(test_EDT);
133 1 : CPPUNIT_TEST(test_EL);
134 1 : CPPUNIT_TEST(test_ES);
135 1 : CPPUNIT_TEST(test_EST);
136 :
137 1 : CPPUNIT_TEST(test_CD);
138 1 : CPPUNIT_TEST(test_CH);
139 1 : CPPUNIT_TEST(test_CS);
140 :
141 1 : CPPUNIT_TEST(test_MDD1);
142 1 : CPPUNIT_TEST(test_MDL);
143 1 : CPPUNIT_TEST(test_MDH);
144 1 : CPPUNIT_TEST(test_MDS);
145 :
146 1 : CPPUNIT_TEST(test_MSS);
147 1 : CPPUNIT_TEST(test_MSX);
148 1 : CPPUNIT_TEST(test_MSD);
149 1 : CPPUNIT_TEST(test_MSDT);
150 1 : CPPUNIT_TEST(test_MSTDT);
151 :
152 1 : CPPUNIT_TEST(test_MXH);
153 1 : CPPUNIT_TEST(test_MXL);
154 1 : CPPUNIT_TEST(test_MDX);
155 :
156 5 : CPPUNIT_TEST_SUITE_END();
157 :
158 :
159 :
160 : public:
161 : TestMatrix();
162 : virtual ~TestMatrix();
163 : void setUp();
164 : void tearDown();
165 :
166 : private:
167 : void testMethod();
168 :
169 : void testOpplus();
170 : void testOpplus2();
171 : void testOpplusSparse();
172 : void testQuadratic();
173 : void testQuadratic2();
174 : void testQuadratic3();
175 : void testQuadraticDot();
176 : void testGetSet();
177 : void testGetSetTranspose();
178 : void testAssignment();
179 : void test_ADD1();
180 : void testAdditionBad();
181 : void testFBMatrix();
182 : void testMakeRandomFBMatrix();
183 : void testGetData();
184 : void testGetNcols();
185 : void testGetNrows();
186 : void testIsColumnVector();
187 : void testIsRowVector();
188 : void testLength();
189 : void testReshape();
190 : void testReshapeBad();
191 : void testSubtract();
192 : void testDiagonalGetSet();
193 : void testDiagonalMultiplication();
194 : void testDiagonalMultiplication2();
195 : void testDenseTimesDiagonal();
196 : void testQuadDiagonal();
197 : void testQuadSymmetric();
198 : void testLowerTriangular_getSet();
199 : void testLowerTriangularTraspose_getSet();
200 : void testSymmetric_getSet();
201 : void testTranspose();
202 : void testLeftTransposeMultiply();
203 : void testRightTransposeMultiply();
204 : void testLeftSymmetricMultiply();
205 : void testSparseGetSet();
206 : void test_MSS();
207 : void testSparseAddDense();
208 : void testSparseAddSparse();
209 : void testSparseAddSparse2();
210 : void testSparseQuad();
211 : void testSparseQuadSparseX();
212 : void testSparseQuad_q();
213 : void testSparseDotProd();
214 : void testSubmatrix();
215 : void testSubmatrixSparse();
216 : void testSubmatrixTranspose();
217 : void testSubmatrixMultiply();
218 : void testSubmatrixMultiplyTr();
219 : void testToggleDiagonal();
220 :
221 : /*
222 : * A: add
223 : * M: multiply
224 : * T: transpose
225 : * E: assignment
226 : * CL: scalar multiplication (left)
227 : *
228 : * D: Dense
229 : * S: Sparse unsymmetric
230 : * H: Symmetric
231 : * X: Diagonal
232 : * L: Lower triangular
233 : * W: Sparse symmetric
234 : *
235 : */
236 :
237 : /*
238 : * Copy-constructor and operator=
239 : */
240 : void test_EH();
241 : void test_EL();
242 : void test_EX();
243 : void test_ES();
244 :
245 : void test_EHT();
246 : void test_EDT();
247 : void test_EST();
248 : /*
249 : * Addition: X = A + B
250 : */
251 :
252 : /*
253 : * DENSE + (?)
254 : */
255 : void test_ADD2();
256 : void test_ADS();
257 : void test_ADH();
258 : void test_ADX();
259 : void test_ADL();
260 : void test_ADW();
261 :
262 :
263 : /*
264 : * DENSE + (?)'
265 : */
266 : void test_ADDT();
267 : void test_ADST();
268 : void test_ADHT();
269 : void test_ADXT();
270 : void test_ADLT();
271 : void test_ADWT();
272 :
273 : /*
274 : * (?)' + DENSE'
275 : */
276 : void test_ADTDT();
277 : void test_ASTDT();
278 :
279 : /*
280 : * SYMMETRIC + (?)
281 : */
282 : void test_AHD();
283 : void test_AHS();
284 : void test_AHH();
285 : void test_AHX();
286 : void test_AHL();
287 : void test_AHW();
288 :
289 : /*
290 : * SPARSE + (?)
291 : */
292 : void test_ASD();
293 : void test_ASS();
294 : void test_ASH();
295 : void test_ASX();
296 : void test_ASL();
297 : void test_ASW();
298 :
299 :
300 : /*
301 : * DIAGONAL + (?)
302 : */
303 : void test_AXD();
304 : void test_AXS();
305 : void test_AXH();
306 : void test_AXX();
307 : void test_AXL();
308 : void test_AXW();
309 :
310 : /*
311 : * SPARSE + (?)'
312 : */
313 : void test_ASST();
314 :
315 : /*
316 : * LOWER_TR + (?)
317 : */
318 : void test_ALX();
319 : void test_ALL();
320 :
321 : /*
322 : * alpha * X
323 : */
324 : void test_CD();
325 : void test_CH();
326 : void test_CL();
327 : void test_CS();
328 : void test_CX();
329 :
330 : /*
331 : * MULTIPLICATION TESTS
332 : */
333 : void test_MDD1();
334 : void test_MXH();
335 : void test_MXL();
336 : void test_MDH();
337 : void test_MDL();
338 : void test_MDX();
339 : void test_MSX();
340 : void test_MSD();
341 : void test_MDS();
342 : void test_MSDT();
343 : void test_MSTDT();
344 : };
345 :
346 : #endif /* TESTMATRIX_H */
347 :
|