source: Sophya/trunk/SophyaProg/Tests/tstndblk.cc@ 1616

Last change on this file since 1616 was 1348, checked in by cmv, 25 years ago

+ de tests (arguments de function) cmv 25/11/00

File size: 6.2 KB
Line 
1#include "machdefs.h"
2#include <iostream.h>
3#include <stdlib.h>
4#include <stdio.h>
5#include <string.h>
6#include <math.h>
7#include <complex>
8#include <unistd.h>
9#include "ntoolsinit.h"
10#include "pexceptions.h"
11#include "ndatablock.h"
12
13void Fonction(NDataBlock<r_4> Arg);
14NDataBlock<r_4> Fonction2(NDataBlock<r_4> Arg);
15
16void Fonction(NDataBlock<r_4> Arg)
17{
18cout<<"Fonction: arg.Size()="<<Arg.Size()<<" arg.Data()="<<Arg.Data()<<endl;
19}
20NDataBlock<r_4> Fonction2(NDataBlock<r_4> Arg)
21{
22cout<<"Fonction2: arg.Size()="<<Arg.Size()<<" arg.Data()="<<Arg.Data()<<endl;
23return Arg;
24}
25
26//////////////////////////////////////////////////////////////////////////////
27int main(int narg,char *arg[])
28{
29//-- Decodage arguments
30int lp = 0;
31char c;
32while((c = getopt(narg,arg,"hd:")) != -1) {
33 switch (c) {
34 case 'd' :
35 sscanf(optarg,"%d",&lp);
36 break;
37 case 'h' :
38 cout<<"tstndblk [-h] [-d debug_level]"<<endl;
39 exit(-1);
40 }
41}
42
43//-- Initialization
44SophyaInit();
45const int NDim = 8;
46r_4 *x1 = new r_4[NDim];
47r_4 *x2 = new r_4[NDim];
48r_4 *x3 = new r_4[NDim];
49for(int k=0;k<NDim;k++)
50 {x1[k]=k+1; x2[k]=(k+1)*10; x3[k]=(k+1)*100;}
51
52NDataBlock<int_4>::SetPrintDebug(lp);
53NDataBlock<r_4>::SetPrintDebug(lp);
54NDataBlock<r_8>::SetPrintDebug(lp);
55NDataBlock< complex<r_4> >::SetPrintDebug(lp);
56NDataBlock< complex<r_8> >::SetPrintDebug(lp);
57
58{ // Pour voir explicitement le travail du destructeur
59
60//-----------------------------------------------------
61cout<<endl<<"Createur par defaut Va"<<endl;
62NDataBlock<int_4> V1; V1.Print(1,99);
63try {
64 cout<<endl<<"...Createur par copie V2e(V1)"<<endl;
65 NDataBlock<int_4> V2e(V1);
66} catch(PException exc) {
67 cout<<"...Exception catched : " << exc.Msg() << endl;
68}
69
70//-----------------------------------------------------
71cout<<endl<<"Createur A1(3)"<<endl;
72NDataBlock<r_4> A1(3);
73cout<<endl<<"Createur B1("<<NDim<<")"<<endl;
74NDataBlock<r_4> B1(NDim);
75A1.FillFrom(NDim,x1); A1.Print(0,999);
76B1.FillFrom(NDim,x1); B1.Print(0,999);
77
78cout<<endl<<"Createur A2(3)"<<endl;
79NDataBlock<r_4> A2(3);
80A2.FillFrom(NDim,x2); A2.Print(0,999);
81cout<<endl<<"Createur B2("<<NDim<<")"<<endl;
82NDataBlock<r_4> B2(NDim);
83B2.FillFrom(NDim,x2); B2.Print(0,999);
84
85cout<<endl<<"Createur A3(3)"<<endl;
86NDataBlock<r_4> A3(3);
87A3.FillFrom(NDim,x3); A3.Print(0,999);
88cout<<endl<<"Createur B3("<<NDim<<")"<<endl;
89NDataBlock<r_4> B3(NDim);
90B3.FillFrom(NDim,x3); B3.Print(0,999);
91
92//-----------------------------------------------------
93cout<<endl<<"Createur par copie AA1(A1)"<<endl;
94NDataBlock<r_4> AA1(A1);
95
96cout<<endl<<"Createur par copie BB1(B1)"<<endl;
97NDataBlock<r_4> BB1(B1);
98
99{cout<<endl<<"Createur par copie {BBB1(B1)}"<<endl;
100NDataBlock<r_4> BBB1(B1);}
101
102{cout<<endl<<"Createur avec bridge {Abr("<<NDim<<",x3,new Bridge)}"<<endl;
103NDataBlock<r_4> Abr(NDim,x3,new Bridge);
104Abr.Print(0,999);
105cout<<"x3 existe encore: "<<x3[0]<<",...,"<<x3[4]<<endl;}
106
107{cout<<endl<<"Createur avec bridge {Abr("<<NDim<<",dum,NULL)}"<<endl;
108r_4 *dum = new r_4[10];
109for(int i=0;i<10;i++) dum[i] = 1000.+i;
110NDataBlock<r_4> Abr(10,dum);
111Abr.Print(0,999);}
112
113//-----------------------------------------------------
114cout<<endl<<"Passage par argument a une fonction"<<endl;
115NDataBlock<r_4> Arg;
116cout<<"... Argument cree par defaut"<<endl;
117Fonction(Arg);
118cout<<"... Argument normal"<<endl;
119Fonction(A1);
120
121cout<<endl<<"Passage par argument a une fonction avec retour d un NDataBlock"<<endl;
122cout<<"... Argument cree par defaut"<<endl;
123NDataBlock<r_4> fdum = Fonction2(Arg); cout<<fdum;
124NDataBlock<r_4> fdum1(Fonction2(Arg)); cout<<fdum1;
125cout<<"... Argument normal"<<endl;
126NDataBlock<r_4> fdum2 = Fonction2(A1); cout<<fdum2;
127NDataBlock<r_4> fdum3(Fonction2(A1)); cout<<fdum3;
128
129//-----------------------------------------------------
130cout<<endl<<endl;
131NDataBlock<r_4> AC(3);
132AC.Reset();
133cout<<endl<<"AC=2"<<endl;
134AC = 2; AC.Print(0,999);
135AC.Reset();
136cout<<endl<<"AC=A1"<<endl;
137AC = A1; AC.Print(0,999);
138
139//-----------------------------------------------------
140cout<<endl<<endl;
141AC.Reset();
142cout<<endl<<"AC+=2"<<endl;
143AC += 2; AC.Print(0,999);
144cout<<endl<<"AC+=2+3"<<endl;
145AC += 2+3; AC.Print(0,999);
146cout<<endl<<"AC+=3"<<endl;
147AC += 3; AC.Print(0,999);
148cout<<endl<<"AC-=3"<<endl;
149AC -= 3; AC.Print(0,999);
150cout<<endl<<"AC*=10"<<endl;
151AC *= 10; AC.Print(0,999);
152cout<<endl<<"AC/=10"<<endl;
153AC /= 10; AC.Print(0,999);
154
155//-----------------------------------------------------
156cout<<endl<<endl;
157AC.Reset(1000);
158cout<<endl<<"AC+=A1"<<endl;
159AC += A1; AC.Print(0,999);
160cout<<endl<<"AC-=A1"<<endl;
161AC.Reset(1000);
162AC -= A1; AC.Print(0,999);
163cout<<endl<<"AC*=A1"<<endl;
164AC.Reset(1000);
165AC *= A1; AC.Print(0,999);
166cout<<endl<<"AC/=A1"<<endl;
167AC.Reset(1000);
168AC /= A1; AC.Print(0,999);
169
170//-----------------------------------------------------
171cout<<endl<<endl;
172cout<<endl<<"AC=A1+2"<<endl;
173AC = A1+2.f; AC.Print(0,999);
174cout<<endl<<"AC=2+A1"<<endl;
175AC = 2.f+A1; AC.Print(0,999);
176cout<<endl<<"AC=A1*2"<<endl;
177AC = A1*2.f; AC.Print(0,999);
178cout<<endl<<"AC=2*A1"<<endl;
179AC = 2.f*A1; AC.Print(0,999);
180cout<<endl<<"AC=A1-2"<<endl;
181AC = A1-2.f; AC.Print(0,999);
182cout<<endl<<"AC=2-A1"<<endl;
183AC = 2.f-A1; AC.Print(0,999);
184cout<<endl<<"AC=A1/2"<<endl;
185AC = A1/2.f; AC.Print(0,999);
186cout<<endl<<"AC=2/A1"<<endl;
187AC = 2.f/A1; AC.Print(0,999);
188
189//-----------------------------------------------------
190cout<<endl<<endl;
191cout<<endl<<"AC=A1+A2"<<endl;
192AC = A1 + A2; AC.Print(0,999);
193cout<<endl<<"AC=A2-A1"<<endl;
194AC = A2 - A1; AC.Print(0,999);
195cout<<endl<<"AC=A1*A2"<<endl;
196AC = A1 * A2; AC.Print(0,999);
197cout<<endl<<"AC=A2/A1"<<endl;
198AC = A2 / A1; AC.Print(0,999);
199
200//-----------------------------------------------------
201cout<<endl<<endl;
202cout<<endl<<"AC=A1+A2+A3"<<" "<<&A1<<","<<&A2<<","<<&A3<<endl;
203AC = A1 + A2 + A3; AC.Print(0,999);
204
205
206cout<<"\n\n\n"<<endl;
207} // Pour voir explicitement le travail du destructeur
208cout<<"Fin du Job"<<endl;
209cout<<"delete x1"<<endl; delete [] x1;
210cout<<"delete x2"<<endl; delete [] x2;
211cout<<"delete x3"<<endl; delete [] x3;
212
213//---- Final debug print
214cout<<endl<<endl<<"FINAL DEBUG SUMMARY : lp="<<lp<<endl<<endl;
215cout<<"DEBUG int_4:\n"; NDataBlock<int_4>::PrintDebug();
216cout<<"DEBUG r_4:\n"; NDataBlock<r_4>::PrintDebug();
217cout<<"DEBUG r_8:\n"; NDataBlock<r_8>::PrintDebug();
218cout<<"DEBUG complex<r_4>:\n"; NDataBlock< complex<r_4> >::PrintDebug();
219cout<<"DEBUG complex<r_8>:\n"; NDataBlock< complex<r_8> >::PrintDebug();
220
221exit(0);
222}
Note: See TracBrowser for help on using the repository browser.