Actual source code: ex6.c

petsc-3.14.6 2021-03-30
Report Typos and Errors
  1: static char help[] = "Tests options database";

  3: #include <petscsys.h>

  5: #define PetscAssert(expr) do {            \
  6: if (PetscUnlikely(!(expr)))               \
  7:   SETERRQ1(PETSC_COMM_SELF,PETSC_ERR_LIB, \
  8:            "Assertion: `%s' failed.",     \
  9:            PetscStringize(expr));         \
 10: } while (0)

 12: int main(int argc,char **argv)
 13: {
 14:   const char     *val;
 15:   PetscBool      has;

 18:   PetscOptionsSetValue(NULL,"-skip_petscrc", NULL);if (ierr) return ierr;
 19:   PetscOptionsSetValue(NULL,"-use_gpu_aware_mpi", "0");if (ierr) return ierr;
 20:   PetscInitialize(&argc,&argv,NULL,help);if (ierr) return ierr;

 22:   PetscOptionsHasName(NULL,NULL,"-use_gpu_aware_mpi",&has);
 23:   PetscAssert(has == PETSC_TRUE);
 24:   PetscOptionsHasName(NULL,NULL,"-abc",&has);
 25:   PetscAssert(has == PETSC_FALSE);
 26:   PetscOptionsHasName(NULL,"","-abc",&has);
 27:   PetscAssert(has == PETSC_FALSE);
 28:   PetscOptionsHasName(NULL,"a","-bc",&has);
 29:   PetscAssert(has == PETSC_FALSE);
 30:   PetscOptionsHasName(NULL,"ab","-c",&has);
 31:   PetscAssert(has == PETSC_FALSE);
 32:   PetscOptionsHasName(NULL,"abc","-",&has);
 33:   PetscAssert(has == PETSC_FALSE);

 35:   PetscOptionsSetValue(NULL,"-abc",NULL);
 36:   PetscOptionsHasName(NULL,NULL,"-abc",&has);
 37:   PetscAssert(has == PETSC_TRUE);
 38:   PetscOptionsHasName(NULL,"","-abc",&has);
 39:   PetscAssert(has == PETSC_TRUE);
 40:   PetscOptionsHasName(NULL,"a","-bc",&has);
 41:   PetscAssert(has == PETSC_TRUE);
 42:   PetscOptionsHasName(NULL,"ab","-c",&has);
 43:   PetscAssert(has == PETSC_TRUE);
 44:   PetscOptionsHasName(NULL,"abc","-",&has);
 45:   PetscAssert(has == PETSC_TRUE);
 46:   PetscOptionsClearValue(NULL,"-abc");
 47:   PetscOptionsClearValue(NULL,"-ABC");

 49:   PetscOptionsPrefixPush(NULL,"a");
 50:   PetscOptionsSetValue(NULL,"-x",NULL);
 51:   PetscOptionsHasName(NULL,NULL,"-ax",&has);
 52:   PetscAssert(has == PETSC_TRUE);
 53:   PetscOptionsPrefixPush(NULL,"b");
 54:   PetscOptionsSetValue(NULL,"-xy",NULL);
 55:   PetscOptionsHasName(NULL,NULL,"-abxy",&has);
 56:   PetscAssert(has == PETSC_TRUE);
 57:   PetscOptionsPrefixPop(NULL);
 58:   PetscOptionsPrefixPush(NULL,"c");
 59:   PetscOptionsSetValue(NULL,"-xz",NULL);
 60:   PetscOptionsHasName(NULL,NULL,"-acxz",&has);
 61:   PetscAssert(has == PETSC_TRUE);
 62:   PetscOptionsPrefixPop(NULL);
 63:   PetscOptionsPrefixPop(NULL);
 64:   PetscOptionsClearValue(NULL,"-ax");
 65:   PetscOptionsClearValue(NULL,"-abxy");
 66:   PetscOptionsClearValue(NULL,"-acxz");

 68:   PetscOptionsSetValue(NULL,"-FOO",NULL);
 69:   PetscOptionsSetValue(NULL,"-FOO","BAR");
 70:   PetscOptionsSetValue(NULL,"-FOO",NULL);
 71:   PetscOptionsClearValue(NULL,"-FOO");
 72:   PetscOptionsSetValue(NULL,"-FOO","BAR");
 73:   PetscOptionsSetValue(NULL,"-FOO",NULL);
 74:   PetscOptionsSetValue(NULL,"-FOO","BAR");
 75:   PetscOptionsClearValue(NULL,"-FOO");

 77:   {
 78:     char name[] = "-*_42", c;
 79:     for (c = 'a'; c <= 'z'; c++) {
 80:       name[1] = c;
 81:       PetscOptionsHasName(NULL,NULL,name,&has);
 82:       PetscAssert(has == PETSC_FALSE);
 83:     }
 84:     for (c = 'a'; c <= 'z'; c++) {
 85:       name[1] = c;
 86:       PetscOptionsHasName(NULL,NULL,name,&has);
 87:       PetscAssert(has == PETSC_FALSE);
 88:       PetscOptionsSetValue(NULL,name,NULL);
 89:       PetscOptionsHasName(NULL,NULL,name,&has);
 90:       PetscAssert(has == PETSC_TRUE);
 91:     }
 92:     for (c = 'A'; c <= 'Z'; c++) {
 93:       name[1] = c;
 94:       PetscOptionsHasName(NULL,NULL,name,&has);
 95:       PetscAssert(has == PETSC_TRUE);
 96:       PetscOptionsClearValue(NULL,name);
 97:       PetscOptionsHasName(NULL,NULL,name,&has);
 98:       PetscAssert(has == PETSC_FALSE);
 99:     }
100:     for (c = 'Z'; c >= 'A'; c--) {
101:       name[1] = c;
102:       PetscOptionsHasName(NULL,NULL,name,&has);
103:       PetscAssert(has == PETSC_FALSE);
104:       PetscOptionsSetValue(NULL,name,NULL);
105:       PetscOptionsHasName(NULL,NULL,name,&has);
106:       PetscAssert(has == PETSC_TRUE);
107:     }
108:     for (c = 'a'; c <= 'z'; c++) {
109:       name[1] = c;
110:       PetscOptionsHasName(NULL,NULL,name,&has);
111:       PetscAssert(has == PETSC_TRUE);
112:       PetscOptionsClearValue(NULL,name);
113:       PetscOptionsHasName(NULL,NULL,name,&has);
114:       PetscAssert(has == PETSC_FALSE);
115:     }
116:     for (c = 'a'; c <= 'z'; c++) {
117:       name[1] = c;
118:       PetscOptionsHasName(NULL,NULL,name,&has);
119:       PetscAssert(has == PETSC_FALSE);
120:     }
121:   }

123:   PetscOptionsSetValue(NULL,"-abc_xyz","123");
124:   PetscOptionsFindPair(NULL,NULL,"-abc_xyz",&val,&has);
125:   PetscAssert(has == PETSC_TRUE && !strcmp(val,"123"));
126:   PetscOptionsFindPair(NULL,NULL,"-abc_42_xyz",&val,&has);
127:   PetscAssert(has == PETSC_TRUE && !strcmp(val,"123"));
128:   PetscOptionsFindPair(NULL,NULL,"-abc_42_1_xyz",&val,&has);
129:   PetscAssert(has == PETSC_TRUE && !strcmp(val,"123"));
130:   PetscOptionsFindPair(NULL,NULL,"-abc_42_1_23_xyz",&val,&has);
131:   PetscAssert(has == PETSC_TRUE && !strcmp(val,"123"));
132:   PetscOptionsFindPair(NULL,NULL,"-abc_42_1_23_456_xyz",&val,&has);
133:   PetscAssert(has == PETSC_TRUE && !strcmp(val,"123"));
134:   PetscOptionsFindPair(NULL,NULL,"-abc_42_1_23_456_789_xyz",&val,&has);
135:   PetscAssert(has == PETSC_TRUE && !strcmp(val,"123"));
136:   PetscOptionsFindPair(NULL,NULL,"-abc_xyz_42",&val,&has);
137:   PetscAssert(has == PETSC_FALSE);
138:   PetscOptionsFindPair(NULL,NULL,"-abc42xyz",&val,&has);
139:   PetscAssert(has == PETSC_FALSE);
140:   PetscOptionsFindPair(NULL,NULL,"-abc42_xyz",&val,&has);
141:   PetscAssert(has == PETSC_FALSE);
142:   PetscOptionsFindPair(NULL,NULL,"-abc_42xyz",&val,&has);
143:   PetscAssert(has == PETSC_FALSE);
144:   PetscOptionsFindPair(NULL,NULL,"-abc0_42_xyz",&val,&has);
145:   PetscAssert(has == PETSC_FALSE);
146:   PetscOptionsFindPair(NULL,NULL,"-abc_42_0xyz",&val,&has);
147:   PetscAssert(has == PETSC_FALSE);
148:   PetscOptionsClearValue(NULL,"-abc_xyz");

150:   PetscFinalize();
151:   return ierr;
152: }


155: /*TEST

157:    test:

159: TEST*/