00001 #include <stdlib.h>
00002 #include "memory.h"
00003 #include "nmd.h"
00004
00005
00006 int main(int argc,char **argv) {
00007 NMD_metadata nmd1,nmd2,nmd3; NMDErrorCode ierr; NMDTruth flg;
00008 int i;
00009 PetscFunctionBegin;
00010 PetscInitialize(&argc,&argv,0,0);
00011
00012 ierr = NMDCreateObject(&nmd1); NMD_ERR_RETURN(ierr);
00013 ierr = NMDCreateObject(&nmd2); NMD_ERR_RETURN(ierr);
00014
00015
00016
00017
00018 i = 1;
00019 ierr = NMDSetValue(nmd1,"cat1","cmp1",NMDInt,&i); NMD_ERR_RETURN(ierr);
00020 ierr = NMDSetValue(nmd2,"cat1","cmp2",NMDInt,&i); NMD_ERR_RETURN(ierr);
00021 i = 2;
00022 ierr = NMDSetValue(nmd1,"cat1","cmp2",NMDInt,&i); NMD_ERR_RETURN(ierr);
00023 ierr = NMDSetValue(nmd2,"cat1","cmp1",NMDInt,&i); NMD_ERR_RETURN(ierr);
00024
00025 ierr = NMDCloneObjectStructure(nmd1,&nmd3); NMD_ERR_RETURN(ierr);
00026
00027 ierr = NMDGetValue
00028 (nmd3,"cat1","cmp1",NULL,(void*)&i,&flg); NMD_ERR_RETURN(ierr);
00029 if (flg) printf("ERROR: Cloned component cmp1 should not be set\n");
00030
00031 i = 1;
00032 ierr = NMDSetValue(nmd3,"cat1","cmp2",NMDInt,&i); NMD_ERR_RETURN(ierr);
00033 i = 2;
00034 ierr = NMDSetValue(nmd3,"cat1","cmp1",NMDInt,&i); NMD_ERR_RETURN(ierr);
00035
00036 {
00037 char *s1,*s2,*s3;
00038
00039
00040
00041 ierr = NMDReportObject
00042 (nmd1,NMDFalse,&s1,NULL,'-',NULL,NULL); NMD_ERR_RETURN(ierr);
00043 ierr = NMDReportObject
00044 (nmd2,NMDFalse,&s2,NULL,'-',NULL,NULL); NMD_ERR_RETURN(ierr);
00045 ierr = NMDReportObject
00046 (nmd3,NMDFalse,&s3,NULL,'-',NULL,NULL); NMD_ERR_RETURN(ierr);
00047 if (strcmp(s1,s3)) {
00048 printf("s1 = <%s> s2 = <%s> s3 = <%s>\n",s1,s2,s3);
00049 NMD_ERR_REPORT(">>>> Error: s1, s3 should be the same\n");
00050 }
00051 NMD_FREE(s1); NMD_FREE(s2); NMD_FREE(s3);
00052
00053
00054
00055 ierr = NMDReportObject(nmd1,NMDFalse,NULL,&s1,'-',NULL,NULL); NMD_ERR_RETURN(ierr);
00056 ierr = NMDReportObject(nmd2,NMDFalse,NULL,&s2,'-',NULL,NULL); NMD_ERR_RETURN(ierr);
00057 ierr = NMDReportObject(nmd3,NMDFalse,NULL,&s3,'-',NULL,NULL); NMD_ERR_RETURN(ierr);
00058 if (strcmp(s1,s2)) {
00059 printf("s1 = <%s> s2 = <%s> s3 = <%s>\n",s1,s2,s3);
00060 NMD_ERR_REPORT(">>>> Error: s1, s2 should be the same\n");
00061 }
00062 NMD_FREE(s1); NMD_FREE(s2); NMD_FREE(s3);
00063 }
00064
00065 ierr = NMDDestroyObject(nmd1); NMD_ERR_RETURN(ierr);
00066 ierr = NMDDestroyObject(nmd2); NMD_ERR_RETURN(ierr);
00067 ierr = NMDDestroyObject(nmd3); NMD_ERR_RETURN(ierr);
00068
00069 PetscFinalize();
00070 PetscFunctionReturn(0);
00071 }