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