Changeset 2918 in Sophya


Ignore:
Timestamp:
Feb 23, 2006, 2:51:32 PM (20 years ago)
Author:
ansari
Message:

Amelioration prog test des tableaux TArray - fonction avec Rc - test extractions sous-tableaux , Reza 23/02/2006

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaProg/Tests/arrt.cc

    r2615 r2918  
    99#include "array.h"
    1010#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/*  --------------------------------------------------------- */
    1122
    1223static void tstarr(bool tio);
     
    1526static void tstmtx(int n);
    1627void _ZZ_TestTMatrixRC_YY_(TMatrix<r_8> & m);
     28// Methode de verification des fonctionalites - Fev 2006
     29static int checktarr();
    1730
    1831static int prtlev = 1;
     
    2942         << " a: Simple Array Test  w: a+ PPersist Test (FIO_TArray<T>) \n"
    3043         << " m: Matrix and Vector Test \n"
     44         << " check: TArray Test/Check with Rc  \n"
    3145         << " ascio: Test of ascii I/O \n"
    3246         << " z: Appel_ZZ_TestTMatrixRC_YY_ " << endl;
     
    4357  BaseArray::SetMaxPrint(nprt, prtlev);
    4458
     59  int rc = 0;
    4560  try {
    4661    if (opt == "w")  tstarr(true);
     
    5671    else if (opt == "m") tstmtx(n);
    5772    else if (opt == "ascio") tstasciiio();
     73    else if (opt == "check") rc = checktarr();
    5874    else {
    5975      cout << " arrt/Error : unknown option ! " << endl;
     
    6278  catch (PThrowable exc) {
    6379    cerr << " catched Exception " << exc.Msg() << endl;
     80    rc = 97;
    6481  } 
    6582  catch (...) {
    6683    cerr << " catched unknown (...) exception " << endl;
     84    rc  = 99;
    6785  } 
    6886  PrtTim("--- End of arrt ---");
    69   cout << " ---------------  END of ArrayTest programme -------------- " << endl;
     87  cout << " -----------  END of ArrayTest (Rc= " << rc << ") --------- " << endl;
     88  return 0;
    7089}
    7190
     
    393412
    394413}
     414
     415// ----- Fonction de verification des fonctions de base de TArray
     416// Retourne 0 si OK
     417int 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.