Unittest_MEDfile_1.c
Aller à la documentation de ce fichier.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   char filename[] = "Unittest_MEDfile_1.med";
00032   char comment[] = "My first comment";
00033   char comment2[] = "My second comment";
00034   char commentToRead[MED_COMMENT_SIZE+1];
00035   med_bool hdfok, medok;
00036   med_int major,minor,release;
00037   char medversion[10];
00038   med_int majorFromStr, minorFromStr, releaseFromStr;
00039 
00040   
00041   fid = MEDfileOpen(filename,MED_ACC_CREAT);
00042   if (fid < 0) {
00043     MESSAGE("ERROR : file creation");
00044     return -1;
00045   }
00046 
00047   
00048   if (MEDfileCommentWr(fid,comment) < 0) {
00049     MESSAGE("ERROR : file comment writing");
00050     return -1;
00051   }
00052 
00053   
00054   if (MEDfileClose(fid) < 0) {
00055     MESSAGE("ERROR : file closing");
00056     return -1;
00057   }
00058 
00059   
00060   fid = MEDfileOpen(filename,MED_ACC_RDONLY);
00061   if (fid < 0) {
00062     MESSAGE("ERROR : file opening in READ ONLY ACCESS mode");
00063     return -1;
00064   }
00065 
00066   
00067   if (MEDfileNumVersionRd(fid,&major,&minor,&release) < 0) {
00068     MESSAGE("ERROR : MED version reading");
00069     ISCRUTE(major);
00070     ISCRUTE(minor);
00071     ISCRUTE(release);
00072     return -1;
00073   }
00074   if ((major != MED_MAJOR_NUM) ||
00075       (minor != MED_MINOR_NUM) ||
00076       (release != MED_RELEASE_NUM)) {
00077     MESSAGE("ERROR : The MED num version is not the good one");
00078     ISCRUTE(major);
00079     ISCRUTE(minor);
00080     ISCRUTE(release);
00081     return -1;
00082   }
00083 
00084   if (MEDfileStrVersionRd(fid,medversion) < 0) {
00085     MESSAGE("ERROR : MED str version reading");
00086     SSCRUTE(medversion);
00087     return -1;
00088   }
00089   sscanf(medversion,"MED-"IFORMAT"."IFORMAT"."IFORMAT,
00090          &majorFromStr,&minorFromStr,&releaseFromStr);
00091   if ((major != majorFromStr) ||
00092       (minor != minorFromStr) ||
00093       (release != releaseFromStr)) {
00094     ISCRUTE(majorFromStr);
00095     ISCRUTE(minorFromStr);
00096     ISCRUTE(releaseFromStr);
00097     MESSAGE("ERROR : The MED num version is not the good one");
00098     SSCRUTE(medversion);
00099     return -1;
00100   }
00101 
00102   
00103   if (MEDfileCommentRd(fid,commentToRead) < 0) {
00104     MESSAGE("ERROR : file comment reading");
00105     return -1;
00106   }
00107   if (strcmp(comment,commentToRead)) {
00108     MESSAGE("ERROR : file comment is not the good one");
00109     SSCRUTE(comment);
00110     SSCRUTE(commentToRead);
00111     return -1;
00112   }
00113 
00114   
00115   if (MEDfileClose(fid) < 0) {
00116     MESSAGE("ERROR : file closing");
00117     return -1;
00118   }
00119 
00120   
00121   fid = MEDfileOpen(filename,MED_ACC_RDWR);
00122   if (fid < 0) {
00123     MESSAGE("ERROR : file opening in read and write access mode");
00124     return -1;
00125   }
00126 
00127   
00128   if (MEDfileCommentWr(fid,comment2) < 0) {
00129     MESSAGE("ERROR : file comment writing");
00130     return -1;
00131   }
00132 
00133   
00134   if (MEDfileClose(fid) < 0) {
00135     MESSAGE("ERROR : file closing");
00136     return -1;
00137   }
00138 
00139   
00140   fid = MEDfileOpen(filename,MED_ACC_RDEXT);
00141   if (fid < 0) {
00142     MESSAGE("ERROR : file opening in READ and EXTENSION access mode");
00143     return -1;
00144   }
00145 
00146   
00147   printf("Un message d'erreur est attendu :\n");
00148   if (MEDfileCommentWr(fid,comment) == 0) {
00149     MESSAGE("ERROR : write comment has to be impossible");
00150     return -1;
00151   }
00152   printf("Fin du message d'erreur attendu.\n");
00153 
00154   
00155   if (MEDfileClose(fid) < 0) {
00156     MESSAGE("ERROR : file closing");
00157     return -1;
00158   }
00159 
00160   
00161 
00162   if (MEDfileCompatibility(filename,&hdfok,&medok) < 0) {
00163     MESSAGE("ERROR : file compatibility test");
00164     return -1;
00165   }
00166 
00167   if (! hdfok) {
00168     MESSAGE("ERROR : the file must be in hdf5 format");
00169     ISCRUTE(hdfok);
00170     return -1;
00171   }
00172 
00173   if (! medok) {
00174     MESSAGE("ERROR : the file must be compatible");
00175     ISCRUTE(medok);
00176     return -1;
00177   }
00178 
00179   return 0;
00180 
00181 }