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