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