00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <med.h>
00023 #define MESGERR 1
00024 #include <med_utils.h>
00025
00026 #include <string.h>
00027
00028 int main (int argc, char **argv)
00029 {
00030 med_idt fid;
00031 const char filename[] = "Unittest_MEDparameter_1.med";
00032 const char comment[] = "Parameters unit tests";
00033 const char p1name[] = "FLOAT_PARAMETER";
00034 const char p2name[] = "INT_PARAMETER_1";
00035 const char p3name[] = "INT_PARAMETER_2";
00036 const med_parameter_type p1type = MED_FLOAT64;
00037 const med_parameter_type p2type = MED_INT;
00038 const med_parameter_type p3type = MED_INT;
00039 const char p1description[] = "PARAMETER 1 DESCRIPTION";
00040 const char p2description[] = "PARAMETER 2 DESCRIPTION";
00041 const char p3description[] = "PARAMETER 3 DESCRIPTION";
00042 const char dtunit1[] = "DT UNIT P1";
00043 const char dtunit2[] = "DT UNIT P2";
00044 const char dtunit3[] = "DT UNIT P3";
00045 med_int np;
00046 char nameToRead[MED_NAME_SIZE+1];
00047 char descriptionToRead[MED_COMMENT_SIZE+1];
00048 med_parameter_type typeToRead;
00049 char dtunitToRead[MED_SNAME_SIZE+1];
00050 med_int nstepToRead;
00051 int i,j;
00052 med_float p1v1 = 6.98;
00053 med_float p1v2 = 19.07;
00054 med_float p1v3 = 78.0;
00055 med_int p1numdt1 = MED_NO_DT;
00056 med_int p1numdt2 = 1;
00057 med_int p1numdt3 = 1;
00058 med_int p1numit1 = MED_NO_IT;
00059 med_int p1numit2 = 3;
00060 med_int p1numit3 = 2;
00061 med_float p1dt1 = 0.0;
00062 med_float p1dt2 = 0.1;
00063 med_float p1dt3 = 5.5;
00064 const med_int p1ncpst = 3;
00065 med_int p2v1 = 5;
00066 med_int p2v2 = 6;
00067 med_int p2numit1 = MED_NO_IT;
00068 med_int p2numdt1 = MED_NO_DT;
00069 med_float p2dt1 = 0.0;
00070 const med_int p2ncpst = 1;
00071 med_int p3v1 = 77;
00072 med_int p3v2 = 89;
00073 med_int p3numdt1 = 1;
00074 med_int p3numit1 = 1;
00075 med_float p3dt1 = 18.9;
00076 med_int p3numdt2 = MED_NO_DT;
00077 med_int p3numit2 = MED_NO_IT;
00078 med_float p3dt2 = 0.0;
00079 const med_int p3ncpst = 2;
00080 med_int numdtToRead;
00081 med_int numitToRead;
00082 med_float dtToRead;
00083 med_float fvalueToRead;
00084 med_int ivalueToRead;
00085
00086
00087 fid = MEDfileOpen(filename,MED_ACC_CREAT);
00088 if (fid < 0) {
00089 MESSAGE("ERROR : file creation ...");
00090 SSCRUTE(filename);
00091 return -1;
00092 }
00093
00094 if (MEDfileCommentWr(fid,comment) < 0) {
00095 MESSAGE("ERROR : write comment ...");
00096 SSCRUTE(comment);
00097 return -1;
00098 }
00099
00100
00101 if (MEDparameterCr(fid, p1name, p1type, p1description, dtunit1) < 0) {
00102 MESSAGE("ERROR : parameter p1 creation ...");
00103 SSCRUTE(p1name);
00104 return -1;
00105 }
00106
00107 if (MEDparameterValueWr(fid, p1name, p1numdt1, p1numit1, p1dt1, (unsigned char*) &p1v1) < 0) {
00108 MESSAGE("ERROR : write p1v1 ...");
00109 SSCRUTE(p1name);
00110 return -1;
00111 }
00112 if (MEDparameterValueWr(fid, p1name, p1numdt2, p1numit2, p1dt2, (unsigned char*) &p1v2) < 0) {
00113 MESSAGE("ERROR : write p1v2 ...");
00114 SSCRUTE(p1name);
00115 return -1;
00116 }
00117 if (MEDparameterValueWr(fid, p1name, p1numdt3, p1numit3, p1dt3, (unsigned char*) &p1v3) < 0) {
00118 MESSAGE("ERROR : write p1v3 ...");
00119 SSCRUTE(p1name);
00120 return -1;
00121 }
00122
00123
00124 if (MEDparameterCr(fid, p2name, p2type, p2description, dtunit2) < 0) {
00125 MESSAGE("ERROR : paramter p2 creation ...");
00126 SSCRUTE(p2name);
00127 return -1;
00128 }
00129 if (MEDparameterValueWr(fid, p2name, p2numdt1, p2numit1, p2dt1, (unsigned char*) &p2v1) < 0) {
00130 MESSAGE("ERROR : write p2v1 ...");
00131 SSCRUTE(p2name);
00132 return -1;
00133 }
00134 if (MEDparameterValueWr(fid, p2name, p2numdt1, p2numit1, p2dt1, (unsigned char*) &p2v2) < 0) {
00135 MESSAGE("ERROR : write p2v2 on same computation step ...");
00136 SSCRUTE(p2name);
00137 return -1;
00138 }
00139
00140
00141 if (MEDparameterCr(fid, p3name, p3type, p3description, dtunit3) < 0) {
00142 MESSAGE("ERROR : paramter p3 creation ...");
00143 SSCRUTE(p3name);
00144 return -1;
00145 }
00146 if (MEDparameterValueWr(fid, p3name, p3numdt1, p3numit1, p3dt1, (unsigned char*) &p3v1) < 0) {
00147 MESSAGE("ERROR : write p3v1 ...");
00148 SSCRUTE(p3name);
00149 return -1;
00150 }
00151 if (MEDparameterValueWr(fid, p3name, p3numdt2, p3numit2, p3dt2, (unsigned char*) &p3v2) < 0) {
00152 MESSAGE("ERROR : write p3v2 ...");
00153 SSCRUTE(p3name);
00154 return -1;
00155 }
00156
00157
00158 if (MEDfileClose(fid) < 0) {
00159 MESSAGE("ERROR : file closing ...");
00160 return -1;
00161 }
00162
00163
00164 fid = MEDfileOpen(filename,MED_ACC_RDONLY);
00165 if (fid < 0) {
00166 MESSAGE("ERROR : open in READ ONLY ACCESS mode ...");
00167 SSCRUTE(filename);
00168 return -1;
00169 }
00170
00171
00172 if (MEDparameterInfoByName(fid, p1name, &typeToRead, descriptionToRead,
00173 dtunitToRead, &nstepToRead) < 0) {
00174 MESSAGE("ERROR : read information for parameter p1 ...");
00175 SSCRUTE(p1name);
00176 ISCRUTE(typeToRead);
00177 SSCRUTE(descriptionToRead);
00178 SSCRUTE(dtunitToRead);
00179 ISCRUTE(nstepToRead);
00180 return -1;
00181 }
00182 if ((typeToRead != p1type) || strcmp(descriptionToRead, p1description) ||
00183 strcmp(dtunitToRead,dtunit1) || (nstepToRead != p1ncpst)) {
00184 MESSAGE("ERROR : read information for parameter p1 : attributes ...");
00185 SSCRUTE(p1name);
00186 ISCRUTE(typeToRead);
00187 SSCRUTE(descriptionToRead);
00188 SSCRUTE(dtunitToRead);
00189 ISCRUTE(nstepToRead);
00190 return -1;
00191 }
00192
00193 if (MEDparameterInfoByName(fid, p2name, &typeToRead, descriptionToRead,
00194 dtunitToRead, &nstepToRead) < 0) {
00195 MESSAGE("ERROR : read information for parameter p2 ...");
00196 SSCRUTE(p2name);
00197 ISCRUTE(typeToRead);
00198 SSCRUTE(descriptionToRead);
00199 SSCRUTE(dtunitToRead);
00200 ISCRUTE(nstepToRead);
00201 return -1;
00202 }
00203 if ((typeToRead != p2type) || strcmp(descriptionToRead, p2description) ||
00204 strcmp(dtunitToRead,dtunit2) || (nstepToRead != p2ncpst)) {
00205 MESSAGE("ERROR : read information for parameter p2 : attributes ...");
00206 SSCRUTE(p2name);
00207 ISCRUTE(typeToRead); ISCRUTE(p2type);
00208 SSCRUTE(descriptionToRead); SSCRUTE(p2description);
00209 SSCRUTE(dtunitToRead); SSCRUTE(dtunit2);
00210 ISCRUTE(nstepToRead); ISCRUTE(p2ncpst);
00211 return -1;
00212 }
00213
00214 if (MEDparameterInfoByName(fid, p3name, &typeToRead, descriptionToRead,
00215 dtunitToRead, &nstepToRead) < 0) {
00216 MESSAGE("ERROR : read information for parameter p3 ...");
00217 SSCRUTE(p3name);
00218 ISCRUTE(typeToRead);
00219 SSCRUTE(descriptionToRead);
00220 SSCRUTE(dtunitToRead);
00221 ISCRUTE(nstepToRead);
00222 return -1;
00223 }
00224 if ((typeToRead != p3type) || strcmp(descriptionToRead, p3description) ||
00225 strcmp(dtunitToRead,dtunit3) || (nstepToRead != p3ncpst)) {
00226 MESSAGE("ERROR : read information for parameter p2 : attributes ...");
00227 SSCRUTE(p3name);
00228 ISCRUTE(typeToRead);
00229 SSCRUTE(descriptionToRead);
00230 SSCRUTE(dtunitToRead);
00231 ISCRUTE(nstepToRead);
00232 return -1;
00233 }
00234
00235
00236 if ((np = MEDnParameter(fid)) < 0) {
00237 MESSAGE("ERROR : read number of paremeter ...");
00238 ISCRUTE(np);
00239 return -1;
00240 }
00241 if (np != 3) {
00242 MESSAGE("The number of parameter is 3 !");
00243 ISCRUTE(np);
00244 return -1;
00245 }
00246
00247
00248 for (i=0;i<np;i++) {
00249
00250 if (MEDparameterInfo(fid, i+1, nameToRead, &typeToRead, descriptionToRead,
00251 dtunitToRead, &nstepToRead) < 0) {
00252 MESSAGE("ERROR : read information for parameter p3 ...");
00253 SSCRUTE(nameToRead);
00254 ISCRUTE(typeToRead);
00255 SSCRUTE(descriptionToRead);
00256 SSCRUTE(dtunitToRead);
00257 ISCRUTE(nstepToRead);
00258 return -1;
00259 }
00260
00261 if (i == 0)
00262 if (strcmp(nameToRead, p1name) || (typeToRead != p1type) ||
00263 strcmp(descriptionToRead, p1description) || strcmp(dtunitToRead,dtunit1)
00264 || (nstepToRead != p1ncpst)) {
00265 MESSAGE("ERROR : read information for parameter p1 : attributes ...");
00266 SSCRUTE(nameToRead);
00267 ISCRUTE(typeToRead);
00268 SSCRUTE(descriptionToRead);
00269 SSCRUTE(dtunitToRead);
00270 ISCRUTE(nstepToRead);
00271 return -1;
00272 }
00273
00274 if (i == 1)
00275 if ( strcmp(nameToRead, p2name) || (typeToRead != p2type) ||
00276 strcmp(descriptionToRead, p2description) || strcmp(dtunitToRead,dtunit2)
00277 || (nstepToRead != p2ncpst)) {
00278 MESSAGE("ERROR : read information for parameter p2 : attributes ...");
00279 SSCRUTE(nameToRead);
00280 ISCRUTE(typeToRead);
00281 SSCRUTE(descriptionToRead);
00282 SSCRUTE(dtunitToRead);
00283 ISCRUTE(nstepToRead);
00284 return -1;
00285 }
00286
00287 if (i == 3)
00288 if (strcmp(nameToRead,p3name) || (typeToRead != p3type) ||
00289 strcmp(descriptionToRead, p3description) || strcmp(dtunitToRead,dtunit3) ||
00290 (nstepToRead != p3ncpst)) {
00291 MESSAGE("ERROR : read information for parameter p2 : attributes ...");
00292 SSCRUTE(nameToRead);
00293 ISCRUTE(typeToRead);
00294 SSCRUTE(descriptionToRead);
00295 SSCRUTE(dtunitToRead);
00296 ISCRUTE(nstepToRead);
00297 return -1;
00298 }
00299
00300
00301
00302 for (j=0; j<nstepToRead; j++) {
00303
00304 if (MEDparameterComputationStepInfo(fid, nameToRead, j+1,
00305 &numdtToRead, &numitToRead, &dtToRead) < 0) {
00306 MESSAGE("ERROR : read information about computation step ...");
00307 SSCRUTE(nameToRead);
00308 ISCRUTE(j);
00309 ISCRUTE(numdtToRead);
00310 ISCRUTE(numitToRead);
00311 return -1;
00312 }
00313
00314 if (typeToRead == MED_FLOAT64)
00315 if (MEDparameterValueRd(fid, nameToRead, numdtToRead, numitToRead,
00316 (unsigned char *) &fvalueToRead) < 0) {
00317 MESSAGE("ERROR : read parameter value ...");
00318 SSCRUTE(nameToRead);
00319 ISCRUTE(j);
00320 ISCRUTE(numdtToRead);
00321 ISCRUTE(numitToRead);
00322 return -1;
00323 }
00324
00325 if (typeToRead != MED_FLOAT64)
00326 if (MEDparameterValueRd(fid, nameToRead, numdtToRead, numitToRead,
00327 (unsigned char *) &ivalueToRead) < 0) {
00328 MESSAGE("ERROR : read parameter value ...");
00329 SSCRUTE(nameToRead);
00330 ISCRUTE(j);
00331 ISCRUTE(numdtToRead);
00332 ISCRUTE(numitToRead);
00333 ISCRUTE(ivalueToRead);
00334 return -1;
00335 }
00336
00337
00338 if ((i==0) && (j==0))
00339 if ((numdtToRead != p1numdt1) || (numitToRead != p1numit1) || (dtToRead != p1dt1) ||
00340 (fvalueToRead != p1v1)) {
00341 MESSAGE("ERROR : false informations for computation step : attributes ...");
00342 SSCRUTE(nameToRead);
00343 ISCRUTE(j);
00344 ISCRUTE(numdtToRead); ISCRUTE(p1numdt1);
00345 ISCRUTE(numitToRead); ISCRUTE(p1numit1);
00346 return -1;
00347 }
00348
00349 if ((i==0) && (j==1))
00350 if ((numdtToRead != p1numdt3) || (numitToRead != p1numit3) || (dtToRead != p1dt3) ||
00351 (fvalueToRead != p1v3)) {
00352 MESSAGE("ERROR : false informations for computation step : attributes ...");
00353 SSCRUTE(nameToRead);
00354 ISCRUTE(j);
00355 ISCRUTE(numdtToRead); ISCRUTE(p1numdt3);
00356 ISCRUTE(numitToRead); ISCRUTE(p1numit3);
00357 return -1;
00358 }
00359
00360 if ((i==0) && (j==2))
00361 if ((numdtToRead != p1numdt2) || (numitToRead != p1numit2) || (dtToRead != p1dt2) ||
00362 (fvalueToRead != p1v2)) {
00363 MESSAGE("ERROR : false informations for computation step : attributes ...");
00364 SSCRUTE(nameToRead);
00365 ISCRUTE(j);
00366 ISCRUTE(numdtToRead); ISCRUTE(p1numdt2);
00367 ISCRUTE(numitToRead); ISCRUTE(p1numit2);
00368 return -1;
00369 }
00370
00371 if (i==1)
00372 if ((numdtToRead != p2numdt1) || (numitToRead != p2numit1) || (dtToRead != p2dt1) ||
00373 (ivalueToRead != p2v2)) {
00374 MESSAGE("ERROR : false informations for computation step : attributes ...");
00375 SSCRUTE(nameToRead);
00376 ISCRUTE(j);
00377 ISCRUTE(numdtToRead); ISCRUTE(p2numdt1);
00378 ISCRUTE(numitToRead); ISCRUTE(p2numit1);
00379 return -1;
00380 }
00381
00382 if ((i == 2) && (j == 0))
00383 if ((numdtToRead != p3numdt2) || (numitToRead != p3numit2) || (dtToRead != p3dt2) ||
00384 (ivalueToRead != p3v2)) {
00385 MESSAGE("ERROR : false informations for computation step : attributes ...");
00386 SSCRUTE(nameToRead);
00387 ISCRUTE(j);
00388 ISCRUTE(numdtToRead); ISCRUTE(p3numdt2);
00389 ISCRUTE(numitToRead); ISCRUTE(p3numit2);
00390 return -1;
00391 }
00392
00393 if ((i == 2) && (j == 1))
00394 if ((numdtToRead != p3numdt1) || (numitToRead != p3numit1) || (dtToRead != p3dt1) ||
00395 (ivalueToRead != p3v1)) {
00396 MESSAGE("ERROR : false informations for computation step : attributes ...");
00397 SSCRUTE(nameToRead);
00398 ISCRUTE(j);
00399 ISCRUTE(numdtToRead); ISCRUTE(p3numdt1);
00400 ISCRUTE(numitToRead); ISCRUTE(p3numit1);
00401 return -1;
00402 }
00403
00404 }
00405
00406 }
00407
00408
00409 if (MEDfileClose(fid) < 0) {
00410 MESSAGE("ERROR : close file ...");
00411 return -1;
00412 }
00413
00414 }