| 156 | |
| 157 | |
| 158 | extern "C" void dTestMatrixComparison() |
| 159 | { |
| 160 | volatile int i; |
| 161 | printf ("dTestMatrixComparison()\n"); |
| 162 | dMessageFunction *orig_debug = dGetDebugHandler(); |
| 163 | |
| 164 | dMatrixComparison mc; |
| 165 | dReal A[50*50]; |
| 166 | |
| 167 | // make first sequence |
| 168 | unsigned long seed = dRandGetSeed(); |
| 169 | for (i=1; i<49; i++) { |
| 170 | dMakeRandomMatrix (A,i,i+1,1.0); |
| 171 | mc.nextMatrix (A,i,i+1,0,"A%d",i); |
| 172 | } |
| 173 | mc.end(); |
| 174 | |
| 175 | //mc.dump(); |
| 176 | |
| 177 | // test identical sequence |
| 178 | dSetDebugHandler (&myDebug); |
| 179 | dRandSetSeed (seed); |
| 180 | if (setjmp (jump_buffer)) { |
| 181 | printf ("\tFAILED (1)\n"); |
| 182 | } |
| 183 | else { |
| 184 | for (i=1; i<49; i++) { |
| 185 | dMakeRandomMatrix (A,i,i+1,1.0); |
| 186 | mc.nextMatrix (A,i,i+1,0,"A%d",i); |
| 187 | } |
| 188 | mc.end(); |
| 189 | printf ("\tpassed (1)\n"); |
| 190 | } |
| 191 | dSetDebugHandler (orig_debug); |
| 192 | |
| 193 | // test broken sequences (with matrix error) |
| 194 | dRandSetSeed (seed); |
| 195 | volatile int passcount = 0; |
| 196 | for (i=1; i<49; i++) { |
| 197 | if (setjmp (jump_buffer)) { |
| 198 | passcount++; |
| 199 | } |
| 200 | else { |
| 201 | dSetDebugHandler (&myDebug); |
| 202 | dMakeRandomMatrix (A,i,i+1,1.0); |
| 203 | A[(i-1)*dPAD(i+1)+i] += REAL(0.01); |
| 204 | mc.nextMatrix (A,i,i+1,0,"A%d",i); |
| 205 | dSetDebugHandler (orig_debug); |
| 206 | } |
| 207 | } |
| 208 | mc.end(); |
| 209 | printf ("\t%s (2)\n",(passcount == 48) ? "passed" : "FAILED"); |
| 210 | |
| 211 | // test broken sequences (with name error) |
| 212 | dRandSetSeed (seed); |
| 213 | passcount = 0; |
| 214 | for (i=1; i<49; i++) { |
| 215 | if (setjmp (jump_buffer)) { |
nothing calls this directly
no test coverage detected