Changeset 2918 in Sophya for trunk/SophyaProg/Tests/arrt.cc
- Timestamp:
- Feb 23, 2006, 2:51:32 PM (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaProg/Tests/arrt.cc
r2615 r2918 9 9 #include "array.h" 10 10 #include "timing.h" 11 12 /* --------------------------------------------------------- */ 13 /* ------- Programme de test des fonctions de base ------- */ 14 /* ---- sur les TArray/TMatrix de SOPHYA ---- */ 15 /* 2000-2006 - C. Magneville, R. Ansari */ 16 /* arrt -> Help/Usage */ 17 /* Pour effectuer les tests avec RC */ 18 /* arrt check -> Rc=0 OK */ 19 /* Pour verification avec les impressions */ 20 /* arrt a / w / m / ascio */ 21 /* --------------------------------------------------------- */ 11 22 12 23 static void tstarr(bool tio); … … 15 26 static void tstmtx(int n); 16 27 void _ZZ_TestTMatrixRC_YY_(TMatrix<r_8> & m); 28 // Methode de verification des fonctionalites - Fev 2006 29 static int checktarr(); 17 30 18 31 static int prtlev = 1; … … 29 42 << " a: Simple Array Test w: a+ PPersist Test (FIO_TArray<T>) \n" 30 43 << " m: Matrix and Vector Test \n" 44 << " check: TArray Test/Check with Rc \n" 31 45 << " ascio: Test of ascii I/O \n" 32 46 << " z: Appel_ZZ_TestTMatrixRC_YY_ " << endl; … … 43 57 BaseArray::SetMaxPrint(nprt, prtlev); 44 58 59 int rc = 0; 45 60 try { 46 61 if (opt == "w") tstarr(true); … … 56 71 else if (opt == "m") tstmtx(n); 57 72 else if (opt == "ascio") tstasciiio(); 73 else if (opt == "check") rc = checktarr(); 58 74 else { 59 75 cout << " arrt/Error : unknown option ! " << endl; … … 62 78 catch (PThrowable exc) { 63 79 cerr << " catched Exception " << exc.Msg() << endl; 80 rc = 97; 64 81 } 65 82 catch (...) { 66 83 cerr << " catched unknown (...) exception " << endl; 84 rc = 99; 67 85 } 68 86 PrtTim("--- End of arrt ---"); 69 cout << " --------------- END of ArrayTest programme -------------- " << endl; 87 cout << " ----------- END of ArrayTest (Rc= " << rc << ") --------- " << endl; 88 return 0; 70 89 } 71 90 … … 393 412 394 413 } 414 415 // ----- Fonction de verification des fonctions de base de TArray 416 // Retourne 0 si OK 417 int checktarr() 418 { 419 int rc = 0; 420 421 int NX = 17; 422 int NY = 8; 423 int NZ = 6; 424 int NT = 5; 425 if (prtlev > 0) 426 cout << " CheckArry: Starting Test-1 EltAcc/SubArray <int> " << endl; 427 TArray<int> IA(NX, NY, NZ, NT); 428 for(int ix=0; ix<NX; ix++) 429 for(int iy=0; iy<NY; iy++) 430 for(int iz=0; iz<NZ; iz++) 431 for(int it=0; it<NT; it++) 432 IA(ix, iy, iz, it) = it*10000+iz*1000+iy*100+ix; 433 434 TArray<int> IB(NX, NY); 435 TMatrix<int> IMXB(IB); 436 for(int ir=0; ir<IMXB.NRows(); ir++) { 437 IMXB.Row(ir) = RegularSequence(0.1); 438 IMXB.Row(ir) += ir*100; 439 } 440 441 int nerr = 0; 442 int min=99, max=99; 443 for(int iz=0; iz<NZ; iz++) 444 for(int it=0; it<NT; it++) { 445 TArray<int> IC = IB+(it*10000+iz*1000); 446 TArray<int> IAI = IA(Range::all(), Range::all(), Range(iz, iz), Range(it, it)); 447 // Fait par SubArray IAI.CompactTrailingDim(); 448 if (prtlev > 2) { 449 cout << " CheckArry/Debug: Test-1 iz=" << iz << " it=" << it << endl; 450 cout << "IAI= \n " << IAI << " IC= \n " << IC << endl; 451 } 452 TArray<int> ID = IAI - IC; 453 ID.MinMax(min, max); 454 if ((min!=0) || (max!=0)) nerr++; 455 } 456 457 if (nerr == 0) 458 cout << "(1) CheckTArray <int> EltAcc, SubArray OK " << endl; 459 else { 460 cout << "(1) CheckTArray <int> EltAcc, SubArray ERROR -> Rc += 1 !!! NErr=" 461 << nerr << endl; 462 rc += 1; 463 } 464 465 if (prtlev > 0) 466 cout << " CheckArry: Starting Test-2 SubArray/Range <int> " << endl; nerr = 0; 467 { 468 TArray<int> ID, IAI; 469 IAI = IA(Range::all(), Range::all(), Range::last(), Range::first()); 470 // Fait par SubArray IAI.CompactTrailingDim(); 471 // cout << "---DBG- IAI= \n " << IAI << " IB= \n " << IB << endl; 472 ID = IAI - IB; 473 ID -= ((NZ-1)*1000); 474 // cout << "---DBG- ID= \n" << ID ; 475 ID.MinMax(min, max); 476 if ((min!=0) || (max!=0)) nerr++; 477 } 478 { 479 TArray<int> ID, IAI; 480 IAI = IA(Range::all(), Range::all(), Range::last(), Range::last()); 481 // Fait par SubArray IAI.CompactTrailingDim(); 482 // cout << "---DBG- IAI= \n " << IAI << " IB= \n " << IB << endl; 483 ID = IAI - IB; 484 ID -= ((NZ-1)*1000+(NT-1)*10000); 485 // cout << "---DBG- ID= \n" << ID ; 486 ID.MinMax(min, max); 487 if ((min!=0) || (max!=0)) nerr++; 488 } 489 if (nerr == 0) 490 cout << "(2) CheckTArray <int> SubArray/Range::last() OK " << endl; 491 else { 492 cout << "(2) CheckTArray <int> SubArray/Range::last() ERROR Rc += 2 !!! NErr=" 493 << nerr << endl; 494 rc += 2; 495 } 496 497 if (prtlev > 0) 498 cout << " CheckArry: Starting Test-3 SubArray(SubArray) <int> " << endl; nerr = 0; 499 TArray<int> IAE = IA(Range::all(), Range::all(), 500 // Range(1, 0, 3, 2), Range::last() ); 501 Range(Range::lastIndex(), Range::lastIndex(), 3, 2), Range::last() ); 502 // Fait par SubArray IAE.CompactTrailingDim(); 503 504 TArray<int> IBE(NX/3, NY/2); 505 for(int ix=0; ix<NX/3; ix++) 506 for(int iy=0; iy<NY/2; iy++) 507 IBE(ix, iy, 0) = 3*ix+(2*100*iy); 508 509 nerr = 0; 510 for(int iz=0; iz<IAE.SizeZ(); iz++) { 511 TArray<int> IAI = IAE(Range::all(), Range::all(), Range(iz, iz)); 512 // Fait par SubArray IAI.CompactTrailingDim(); 513 // cout << "---DBG- iz= " << iz << " IAI= \n " << IAI << " IB= \n " << IB << endl; 514 TArray<int> ID = IAI-IB; 515 ID -= ((iz*2+1)*1000+(NT-1)*10000); 516 ID.MinMax(min, max); 517 if ((min!=0) || (max!=0)) nerr++; 518 } 519 520 if (nerr == 0) 521 cout << "(3) CheckTArray <int> SubArray(SubArray) OK " << endl; 522 else { 523 cout << "(3) CheckTArray <int> SubArray(SubArray) ERROR Rc += 4 !!! NErr=" 524 << nerr << endl; 525 rc += 4; 526 } 527 528 return rc; 529 }
Note:
See TracChangeset
for help on using the changeset viewer.