xref: /petsc/src/sys/tests/ex6.c (revision 11486bccf1aeea1ca5536228f99d437b39bdaca6)
1 static char help[] = "Tests options database";
2 
3 #include <petscsys.h>
4 
5 #define PetscTestCheck(expr) PetscCheck(expr,PETSC_COMM_SELF,PETSC_ERR_LIB,"Assertion: `%s' failed.",PetscStringize(expr))
6 
7 int main(int argc,char **argv)
8 {
9   const char     *val;
10   PetscBool      has;
11 
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));
16 
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);
29 
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"));
43 
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"));
62 
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"));
71 
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   }
117 
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"));
144 
145   PetscCall(PetscFinalize());
146   return 0;
147 }
148 
149 /*TEST
150 
151    test:
152 
153 TEST*/
154