Actual source code: ex6.c

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

  3: #include <petscsys.h>

  5: #define PetscTestCheck(expr) PetscCheck(expr, PETSC_COMM_SELF, PETSC_ERR_LIB, "Assertion: `%s' failed.", PetscStringize(expr))

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

 12:   PetscCall(PetscOptionsSetValue(NULL, "-skip_petscrc", NULL));
 13:   PetscCall(PetscOptionsSetValue(NULL, "-use_gpu_aware_mpi", "0"));
 14:   PetscFunctionBeginUser;
 15:   PetscCall(PetscInitialize(&argc, &argv, NULL, help));

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

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

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

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

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

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

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

149: /*TEST

151:    test:

153: TEST*/