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;

 12:   PetscOptionsSetValue(NULL, "-skip_petscrc", NULL);
 13:   PetscOptionsSetValue(NULL, "-use_gpu_aware_mpi", "0");
 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*/