xref: /petsc/src/sys/tests/ex6.c (revision f97672e55eacc8688507b9471cd7ec2664d7f203)
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   PetscCall(PetscInitialize(&argc,&argv,NULL,help));
15 
16   PetscCall(PetscOptionsHasName(NULL,NULL,"-use_gpu_aware_mpi",&has));
17   PetscTestCheck(has == PETSC_TRUE);
18   PetscCall(PetscOptionsHasName(NULL,NULL,"-abc",&has));
19   PetscTestCheck(has == PETSC_FALSE);
20   PetscCall(PetscOptionsHasName(NULL,"","-abc",&has));
21   PetscTestCheck(has == PETSC_FALSE);
22   PetscCall(PetscOptionsHasName(NULL,"a","-bc",&has));
23   PetscTestCheck(has == PETSC_FALSE);
24   PetscCall(PetscOptionsHasName(NULL,"ab","-c",&has));
25   PetscTestCheck(has == PETSC_FALSE);
26   PetscCall(PetscOptionsHasName(NULL,"abc","-",&has));
27   PetscTestCheck(has == PETSC_FALSE);
28 
29   PetscCall(PetscOptionsSetValue(NULL,"-abc",NULL));
30   PetscCall(PetscOptionsHasName(NULL,NULL,"-abc",&has));
31   PetscTestCheck(has == PETSC_TRUE);
32   PetscCall(PetscOptionsHasName(NULL,"","-abc",&has));
33   PetscTestCheck(has == PETSC_TRUE);
34   PetscCall(PetscOptionsHasName(NULL,"a","-bc",&has));
35   PetscTestCheck(has == PETSC_TRUE);
36   PetscCall(PetscOptionsHasName(NULL,"ab","-c",&has));
37   PetscTestCheck(has == PETSC_TRUE);
38   PetscCall(PetscOptionsHasName(NULL,"abc","-",&has));
39   PetscTestCheck(has == PETSC_TRUE);
40   PetscCall(PetscOptionsClearValue(NULL,"-abc"));
41   PetscCall(PetscOptionsClearValue(NULL,"-ABC"));
42 
43   PetscCall(PetscOptionsPrefixPush(NULL,"a"));
44   PetscCall(PetscOptionsSetValue(NULL,"-x",NULL));
45   PetscCall(PetscOptionsHasName(NULL,NULL,"-ax",&has));
46   PetscTestCheck(has == PETSC_TRUE);
47   PetscCall(PetscOptionsPrefixPush(NULL,"b"));
48   PetscCall(PetscOptionsSetValue(NULL,"-xy",NULL));
49   PetscCall(PetscOptionsHasName(NULL,NULL,"-abxy",&has));
50   PetscTestCheck(has == PETSC_TRUE);
51   PetscCall(PetscOptionsPrefixPop(NULL));
52   PetscCall(PetscOptionsPrefixPush(NULL,"c"));
53   PetscCall(PetscOptionsSetValue(NULL,"-xz",NULL));
54   PetscCall(PetscOptionsHasName(NULL,NULL,"-acxz",&has));
55   PetscTestCheck(has == PETSC_TRUE);
56   PetscCall(PetscOptionsPrefixPop(NULL));
57   PetscCall(PetscOptionsPrefixPop(NULL));
58   PetscCall(PetscOptionsClearValue(NULL,"-ax"));
59   PetscCall(PetscOptionsClearValue(NULL,"-abxy"));
60   PetscCall(PetscOptionsClearValue(NULL,"-acxz"));
61 
62   PetscCall(PetscOptionsSetValue(NULL,"-FOO",NULL));
63   PetscCall(PetscOptionsSetValue(NULL,"-FOO","BAR"));
64   PetscCall(PetscOptionsSetValue(NULL,"-FOO",NULL));
65   PetscCall(PetscOptionsClearValue(NULL,"-FOO"));
66   PetscCall(PetscOptionsSetValue(NULL,"-FOO","BAR"));
67   PetscCall(PetscOptionsSetValue(NULL,"-FOO",NULL));
68   PetscCall(PetscOptionsSetValue(NULL,"-FOO","BAR"));
69   PetscCall(PetscOptionsClearValue(NULL,"-FOO"));
70 
71   {
72     char name[] = "-*_42", c;
73     for (c = 'a'; c <= 'z'; c++) {
74       name[1] = c;
75       PetscCall(PetscOptionsHasName(NULL,NULL,name,&has));
76       PetscTestCheck(has == PETSC_FALSE);
77     }
78     for (c = 'a'; c <= 'z'; c++) {
79       name[1] = c;
80       PetscCall(PetscOptionsHasName(NULL,NULL,name,&has));
81       PetscTestCheck(has == PETSC_FALSE);
82       PetscCall(PetscOptionsSetValue(NULL,name,NULL));
83       PetscCall(PetscOptionsHasName(NULL,NULL,name,&has));
84       PetscTestCheck(has == PETSC_TRUE);
85     }
86     for (c = 'A'; c <= 'Z'; c++) {
87       name[1] = c;
88       PetscCall(PetscOptionsHasName(NULL,NULL,name,&has));
89       PetscTestCheck(has == PETSC_TRUE);
90       PetscCall(PetscOptionsClearValue(NULL,name));
91       PetscCall(PetscOptionsHasName(NULL,NULL,name,&has));
92       PetscTestCheck(has == PETSC_FALSE);
93     }
94     for (c = 'Z'; c >= 'A'; c--) {
95       name[1] = c;
96       PetscCall(PetscOptionsHasName(NULL,NULL,name,&has));
97       PetscTestCheck(has == PETSC_FALSE);
98       PetscCall(PetscOptionsSetValue(NULL,name,NULL));
99       PetscCall(PetscOptionsHasName(NULL,NULL,name,&has));
100       PetscTestCheck(has == PETSC_TRUE);
101     }
102     for (c = 'a'; c <= 'z'; c++) {
103       name[1] = c;
104       PetscCall(PetscOptionsHasName(NULL,NULL,name,&has));
105       PetscTestCheck(has == PETSC_TRUE);
106       PetscCall(PetscOptionsClearValue(NULL,name));
107       PetscCall(PetscOptionsHasName(NULL,NULL,name,&has));
108       PetscTestCheck(has == PETSC_FALSE);
109     }
110     for (c = 'a'; c <= 'z'; c++) {
111       name[1] = c;
112       PetscCall(PetscOptionsHasName(NULL,NULL,name,&has));
113       PetscTestCheck(has == PETSC_FALSE);
114     }
115   }
116 
117   PetscCall(PetscOptionsSetValue(NULL,"-abc_xyz","123"));
118   PetscCall(PetscOptionsFindPair(NULL,NULL,"-abc_xyz",&val,&has));
119   PetscTestCheck(has == PETSC_TRUE && !strcmp(val,"123"));
120   PetscCall(PetscOptionsFindPair(NULL,NULL,"-abc_42_xyz",&val,&has));
121   PetscTestCheck(has == PETSC_TRUE && !strcmp(val,"123"));
122   PetscCall(PetscOptionsFindPair(NULL,NULL,"-abc_42_1_xyz",&val,&has));
123   PetscTestCheck(has == PETSC_TRUE && !strcmp(val,"123"));
124   PetscCall(PetscOptionsFindPair(NULL,NULL,"-abc_42_1_23_xyz",&val,&has));
125   PetscTestCheck(has == PETSC_TRUE && !strcmp(val,"123"));
126   PetscCall(PetscOptionsFindPair(NULL,NULL,"-abc_42_1_23_456_xyz",&val,&has));
127   PetscTestCheck(has == PETSC_TRUE && !strcmp(val,"123"));
128   PetscCall(PetscOptionsFindPair(NULL,NULL,"-abc_42_1_23_456_789_xyz",&val,&has));
129   PetscTestCheck(has == PETSC_TRUE && !strcmp(val,"123"));
130   PetscCall(PetscOptionsFindPair(NULL,NULL,"-abc_xyz_42",&val,&has));
131   PetscTestCheck(has == PETSC_FALSE);
132   PetscCall(PetscOptionsFindPair(NULL,NULL,"-abc42xyz",&val,&has));
133   PetscTestCheck(has == PETSC_FALSE);
134   PetscCall(PetscOptionsFindPair(NULL,NULL,"-abc42_xyz",&val,&has));
135   PetscTestCheck(has == PETSC_FALSE);
136   PetscCall(PetscOptionsFindPair(NULL,NULL,"-abc_42xyz",&val,&has));
137   PetscTestCheck(has == PETSC_FALSE);
138   PetscCall(PetscOptionsFindPair(NULL,NULL,"-abc0_42_xyz",&val,&has));
139   PetscTestCheck(has == PETSC_FALSE);
140   PetscCall(PetscOptionsFindPair(NULL,NULL,"-abc_42_0xyz",&val,&has));
141   PetscTestCheck(has == PETSC_FALSE);
142   PetscCall(PetscOptionsClearValue(NULL,"-abc_xyz"));
143 
144   PetscCall(PetscFinalize());
145   return 0;
146 }
147 
148 /*TEST
149 
150    test:
151 
152 TEST*/
153