Actual source code: ex6.c

  1: static char help[] = "Tests options database";

  3: #include <petscsys.h>


  7: int main(int argc,char **argv)
  8: {
  9:   const char     *val;
 10:   PetscBool      has;

 13:   PetscOptionsSetValue(NULL,"-skip_petscrc", NULL);if (ierr) return ierr;
 14:   PetscOptionsSetValue(NULL,"-use_gpu_aware_mpi", "0");if (ierr) return ierr;
 15:   PetscInitialize(&argc,&argv,NULL,help);

 17:   PetscOptionsHasName(NULL,NULL,"-use_gpu_aware_mpi",&has);
 18:   PetscTestCheck(has == PETSC_TRUE);
 19:   PetscOptionsHasName(NULL,NULL,"-abc",&has);
 20:   PetscTestCheck(has == PETSC_FALSE);
 21:   PetscOptionsHasName(NULL,"","-abc",&has);
 22:   PetscTestCheck(has == PETSC_FALSE);
 23:   PetscOptionsHasName(NULL,"a","-bc",&has);
 24:   PetscTestCheck(has == PETSC_FALSE);
 25:   PetscOptionsHasName(NULL,"ab","-c",&has);
 26:   PetscTestCheck(has == PETSC_FALSE);
 27:   PetscOptionsHasName(NULL,"abc","-",&has);
 28:   PetscTestCheck(has == PETSC_FALSE);

 30:   PetscOptionsSetValue(NULL,"-abc",NULL);
 31:   PetscOptionsHasName(NULL,NULL,"-abc",&has);
 32:   PetscTestCheck(has == PETSC_TRUE);
 33:   PetscOptionsHasName(NULL,"","-abc",&has);
 34:   PetscTestCheck(has == PETSC_TRUE);
 35:   PetscOptionsHasName(NULL,"a","-bc",&has);
 36:   PetscTestCheck(has == PETSC_TRUE);
 37:   PetscOptionsHasName(NULL,"ab","-c",&has);
 38:   PetscTestCheck(has == PETSC_TRUE);
 39:   PetscOptionsHasName(NULL,"abc","-",&has);
 40:   PetscTestCheck(has == PETSC_TRUE);
 41:   PetscOptionsClearValue(NULL,"-abc");
 42:   PetscOptionsClearValue(NULL,"-ABC");

 44:   PetscOptionsPrefixPush(NULL,"a");
 45:   PetscOptionsSetValue(NULL,"-x",NULL);
 46:   PetscOptionsHasName(NULL,NULL,"-ax",&has);
 47:   PetscTestCheck(has == PETSC_TRUE);
 48:   PetscOptionsPrefixPush(NULL,"b");
 49:   PetscOptionsSetValue(NULL,"-xy",NULL);
 50:   PetscOptionsHasName(NULL,NULL,"-abxy",&has);
 51:   PetscTestCheck(has == PETSC_TRUE);
 52:   PetscOptionsPrefixPop(NULL);
 53:   PetscOptionsPrefixPush(NULL,"c");
 54:   PetscOptionsSetValue(NULL,"-xz",NULL);
 55:   PetscOptionsHasName(NULL,NULL,"-acxz",&has);
 56:   PetscTestCheck(has == PETSC_TRUE);
 57:   PetscOptionsPrefixPop(NULL);
 58:   PetscOptionsPrefixPop(NULL);
 59:   PetscOptionsClearValue(NULL,"-ax");
 60:   PetscOptionsClearValue(NULL,"-abxy");
 61:   PetscOptionsClearValue(NULL,"-acxz");

 63:   PetscOptionsSetValue(NULL,"-FOO",NULL);
 64:   PetscOptionsSetValue(NULL,"-FOO","BAR");
 65:   PetscOptionsSetValue(NULL,"-FOO",NULL);
 66:   PetscOptionsClearValue(NULL,"-FOO");
 67:   PetscOptionsSetValue(NULL,"-FOO","BAR");
 68:   PetscOptionsSetValue(NULL,"-FOO",NULL);
 69:   PetscOptionsSetValue(NULL,"-FOO","BAR");
 70:   PetscOptionsClearValue(NULL,"-FOO");

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

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

145:   PetscFinalize();
146:   return 0;
147: }

149: /*TEST

151:    test:

153: TEST*/