Actual source code: ex6.c
petsc-3.14.6 2021-03-30
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*/