xref: /petsc/src/sys/tests/ex6.c (revision d0609ced746bc51b019815ca91d747429db24893)
1c4762a1bSJed Brown static char help[] = "Tests options database";
2c4762a1bSJed Brown 
3c4762a1bSJed Brown #include <petscsys.h>
4c4762a1bSJed Brown 
52c71b3e2SJacob Faibussowitsch #define PetscTestCheck(expr) PetscCheck(expr,PETSC_COMM_SELF,PETSC_ERR_LIB,"Assertion: `%s' failed.",PetscStringize(expr))
6c4762a1bSJed Brown 
7c4762a1bSJed Brown int main(int argc,char **argv)
8c4762a1bSJed Brown {
9c4762a1bSJed Brown   const char     *val;
10c4762a1bSJed Brown   PetscBool      has;
11c4762a1bSJed Brown 
12*d0609cedSBarry Smith   PetscCall(PetscOptionsSetValue(NULL,"-skip_petscrc", NULL));
13*d0609cedSBarry Smith   PetscCall(PetscOptionsSetValue(NULL,"-use_gpu_aware_mpi", "0"));
149566063dSJacob Faibussowitsch   PetscCall(PetscInitialize(&argc,&argv,NULL,help));
15c4762a1bSJed Brown 
169566063dSJacob Faibussowitsch   PetscCall(PetscOptionsHasName(NULL,NULL,"-use_gpu_aware_mpi",&has));
172c71b3e2SJacob Faibussowitsch   PetscTestCheck(has == PETSC_TRUE);
189566063dSJacob Faibussowitsch   PetscCall(PetscOptionsHasName(NULL,NULL,"-abc",&has));
192c71b3e2SJacob Faibussowitsch   PetscTestCheck(has == PETSC_FALSE);
209566063dSJacob Faibussowitsch   PetscCall(PetscOptionsHasName(NULL,"","-abc",&has));
212c71b3e2SJacob Faibussowitsch   PetscTestCheck(has == PETSC_FALSE);
229566063dSJacob Faibussowitsch   PetscCall(PetscOptionsHasName(NULL,"a","-bc",&has));
232c71b3e2SJacob Faibussowitsch   PetscTestCheck(has == PETSC_FALSE);
249566063dSJacob Faibussowitsch   PetscCall(PetscOptionsHasName(NULL,"ab","-c",&has));
252c71b3e2SJacob Faibussowitsch   PetscTestCheck(has == PETSC_FALSE);
269566063dSJacob Faibussowitsch   PetscCall(PetscOptionsHasName(NULL,"abc","-",&has));
272c71b3e2SJacob Faibussowitsch   PetscTestCheck(has == PETSC_FALSE);
28c4762a1bSJed Brown 
299566063dSJacob Faibussowitsch   PetscCall(PetscOptionsSetValue(NULL,"-abc",NULL));
309566063dSJacob Faibussowitsch   PetscCall(PetscOptionsHasName(NULL,NULL,"-abc",&has));
312c71b3e2SJacob Faibussowitsch   PetscTestCheck(has == PETSC_TRUE);
329566063dSJacob Faibussowitsch   PetscCall(PetscOptionsHasName(NULL,"","-abc",&has));
332c71b3e2SJacob Faibussowitsch   PetscTestCheck(has == PETSC_TRUE);
349566063dSJacob Faibussowitsch   PetscCall(PetscOptionsHasName(NULL,"a","-bc",&has));
352c71b3e2SJacob Faibussowitsch   PetscTestCheck(has == PETSC_TRUE);
369566063dSJacob Faibussowitsch   PetscCall(PetscOptionsHasName(NULL,"ab","-c",&has));
372c71b3e2SJacob Faibussowitsch   PetscTestCheck(has == PETSC_TRUE);
389566063dSJacob Faibussowitsch   PetscCall(PetscOptionsHasName(NULL,"abc","-",&has));
392c71b3e2SJacob Faibussowitsch   PetscTestCheck(has == PETSC_TRUE);
409566063dSJacob Faibussowitsch   PetscCall(PetscOptionsClearValue(NULL,"-abc"));
419566063dSJacob Faibussowitsch   PetscCall(PetscOptionsClearValue(NULL,"-ABC"));
42c4762a1bSJed Brown 
439566063dSJacob Faibussowitsch   PetscCall(PetscOptionsPrefixPush(NULL,"a"));
449566063dSJacob Faibussowitsch   PetscCall(PetscOptionsSetValue(NULL,"-x",NULL));
459566063dSJacob Faibussowitsch   PetscCall(PetscOptionsHasName(NULL,NULL,"-ax",&has));
462c71b3e2SJacob Faibussowitsch   PetscTestCheck(has == PETSC_TRUE);
479566063dSJacob Faibussowitsch   PetscCall(PetscOptionsPrefixPush(NULL,"b"));
489566063dSJacob Faibussowitsch   PetscCall(PetscOptionsSetValue(NULL,"-xy",NULL));
499566063dSJacob Faibussowitsch   PetscCall(PetscOptionsHasName(NULL,NULL,"-abxy",&has));
502c71b3e2SJacob Faibussowitsch   PetscTestCheck(has == PETSC_TRUE);
519566063dSJacob Faibussowitsch   PetscCall(PetscOptionsPrefixPop(NULL));
529566063dSJacob Faibussowitsch   PetscCall(PetscOptionsPrefixPush(NULL,"c"));
539566063dSJacob Faibussowitsch   PetscCall(PetscOptionsSetValue(NULL,"-xz",NULL));
549566063dSJacob Faibussowitsch   PetscCall(PetscOptionsHasName(NULL,NULL,"-acxz",&has));
552c71b3e2SJacob Faibussowitsch   PetscTestCheck(has == PETSC_TRUE);
569566063dSJacob Faibussowitsch   PetscCall(PetscOptionsPrefixPop(NULL));
579566063dSJacob Faibussowitsch   PetscCall(PetscOptionsPrefixPop(NULL));
589566063dSJacob Faibussowitsch   PetscCall(PetscOptionsClearValue(NULL,"-ax"));
599566063dSJacob Faibussowitsch   PetscCall(PetscOptionsClearValue(NULL,"-abxy"));
609566063dSJacob Faibussowitsch   PetscCall(PetscOptionsClearValue(NULL,"-acxz"));
61c4762a1bSJed Brown 
629566063dSJacob Faibussowitsch   PetscCall(PetscOptionsSetValue(NULL,"-FOO",NULL));
639566063dSJacob Faibussowitsch   PetscCall(PetscOptionsSetValue(NULL,"-FOO","BAR"));
649566063dSJacob Faibussowitsch   PetscCall(PetscOptionsSetValue(NULL,"-FOO",NULL));
659566063dSJacob Faibussowitsch   PetscCall(PetscOptionsClearValue(NULL,"-FOO"));
669566063dSJacob Faibussowitsch   PetscCall(PetscOptionsSetValue(NULL,"-FOO","BAR"));
679566063dSJacob Faibussowitsch   PetscCall(PetscOptionsSetValue(NULL,"-FOO",NULL));
689566063dSJacob Faibussowitsch   PetscCall(PetscOptionsSetValue(NULL,"-FOO","BAR"));
699566063dSJacob Faibussowitsch   PetscCall(PetscOptionsClearValue(NULL,"-FOO"));
70c4762a1bSJed Brown 
71c4762a1bSJed Brown   {
72c4762a1bSJed Brown     char name[] = "-*_42", c;
73c4762a1bSJed Brown     for (c = 'a'; c <= 'z'; c++) {
74c4762a1bSJed Brown       name[1] = c;
759566063dSJacob Faibussowitsch       PetscCall(PetscOptionsHasName(NULL,NULL,name,&has));
762c71b3e2SJacob Faibussowitsch       PetscTestCheck(has == PETSC_FALSE);
77c4762a1bSJed Brown     }
78c4762a1bSJed Brown     for (c = 'a'; c <= 'z'; c++) {
79c4762a1bSJed Brown       name[1] = c;
809566063dSJacob Faibussowitsch       PetscCall(PetscOptionsHasName(NULL,NULL,name,&has));
812c71b3e2SJacob Faibussowitsch       PetscTestCheck(has == PETSC_FALSE);
829566063dSJacob Faibussowitsch       PetscCall(PetscOptionsSetValue(NULL,name,NULL));
839566063dSJacob Faibussowitsch       PetscCall(PetscOptionsHasName(NULL,NULL,name,&has));
842c71b3e2SJacob Faibussowitsch       PetscTestCheck(has == PETSC_TRUE);
85c4762a1bSJed Brown     }
86c4762a1bSJed Brown     for (c = 'A'; c <= 'Z'; c++) {
87c4762a1bSJed Brown       name[1] = c;
889566063dSJacob Faibussowitsch       PetscCall(PetscOptionsHasName(NULL,NULL,name,&has));
892c71b3e2SJacob Faibussowitsch       PetscTestCheck(has == PETSC_TRUE);
909566063dSJacob Faibussowitsch       PetscCall(PetscOptionsClearValue(NULL,name));
919566063dSJacob Faibussowitsch       PetscCall(PetscOptionsHasName(NULL,NULL,name,&has));
922c71b3e2SJacob Faibussowitsch       PetscTestCheck(has == PETSC_FALSE);
93c4762a1bSJed Brown     }
94c4762a1bSJed Brown     for (c = 'Z'; c >= 'A'; c--) {
95c4762a1bSJed Brown       name[1] = c;
969566063dSJacob Faibussowitsch       PetscCall(PetscOptionsHasName(NULL,NULL,name,&has));
972c71b3e2SJacob Faibussowitsch       PetscTestCheck(has == PETSC_FALSE);
989566063dSJacob Faibussowitsch       PetscCall(PetscOptionsSetValue(NULL,name,NULL));
999566063dSJacob Faibussowitsch       PetscCall(PetscOptionsHasName(NULL,NULL,name,&has));
1002c71b3e2SJacob Faibussowitsch       PetscTestCheck(has == PETSC_TRUE);
101c4762a1bSJed Brown     }
102c4762a1bSJed Brown     for (c = 'a'; c <= 'z'; c++) {
103c4762a1bSJed Brown       name[1] = c;
1049566063dSJacob Faibussowitsch       PetscCall(PetscOptionsHasName(NULL,NULL,name,&has));
1052c71b3e2SJacob Faibussowitsch       PetscTestCheck(has == PETSC_TRUE);
1069566063dSJacob Faibussowitsch       PetscCall(PetscOptionsClearValue(NULL,name));
1079566063dSJacob Faibussowitsch       PetscCall(PetscOptionsHasName(NULL,NULL,name,&has));
1082c71b3e2SJacob Faibussowitsch       PetscTestCheck(has == PETSC_FALSE);
109c4762a1bSJed Brown     }
110c4762a1bSJed Brown     for (c = 'a'; c <= 'z'; c++) {
111c4762a1bSJed Brown       name[1] = c;
1129566063dSJacob Faibussowitsch       PetscCall(PetscOptionsHasName(NULL,NULL,name,&has));
1132c71b3e2SJacob Faibussowitsch       PetscTestCheck(has == PETSC_FALSE);
114c4762a1bSJed Brown     }
115c4762a1bSJed Brown   }
116c4762a1bSJed Brown 
1179566063dSJacob Faibussowitsch   PetscCall(PetscOptionsSetValue(NULL,"-abc_xyz","123"));
1189566063dSJacob Faibussowitsch   PetscCall(PetscOptionsFindPair(NULL,NULL,"-abc_xyz",&val,&has));
1192c71b3e2SJacob Faibussowitsch   PetscTestCheck(has == PETSC_TRUE && !strcmp(val,"123"));
1209566063dSJacob Faibussowitsch   PetscCall(PetscOptionsFindPair(NULL,NULL,"-abc_42_xyz",&val,&has));
1212c71b3e2SJacob Faibussowitsch   PetscTestCheck(has == PETSC_TRUE && !strcmp(val,"123"));
1229566063dSJacob Faibussowitsch   PetscCall(PetscOptionsFindPair(NULL,NULL,"-abc_42_1_xyz",&val,&has));
1232c71b3e2SJacob Faibussowitsch   PetscTestCheck(has == PETSC_TRUE && !strcmp(val,"123"));
1249566063dSJacob Faibussowitsch   PetscCall(PetscOptionsFindPair(NULL,NULL,"-abc_42_1_23_xyz",&val,&has));
1252c71b3e2SJacob Faibussowitsch   PetscTestCheck(has == PETSC_TRUE && !strcmp(val,"123"));
1269566063dSJacob Faibussowitsch   PetscCall(PetscOptionsFindPair(NULL,NULL,"-abc_42_1_23_456_xyz",&val,&has));
1272c71b3e2SJacob Faibussowitsch   PetscTestCheck(has == PETSC_TRUE && !strcmp(val,"123"));
1289566063dSJacob Faibussowitsch   PetscCall(PetscOptionsFindPair(NULL,NULL,"-abc_42_1_23_456_789_xyz",&val,&has));
1292c71b3e2SJacob Faibussowitsch   PetscTestCheck(has == PETSC_TRUE && !strcmp(val,"123"));
1309566063dSJacob Faibussowitsch   PetscCall(PetscOptionsFindPair(NULL,NULL,"-abc_xyz_42",&val,&has));
1312c71b3e2SJacob Faibussowitsch   PetscTestCheck(has == PETSC_FALSE);
1329566063dSJacob Faibussowitsch   PetscCall(PetscOptionsFindPair(NULL,NULL,"-abc42xyz",&val,&has));
1332c71b3e2SJacob Faibussowitsch   PetscTestCheck(has == PETSC_FALSE);
1349566063dSJacob Faibussowitsch   PetscCall(PetscOptionsFindPair(NULL,NULL,"-abc42_xyz",&val,&has));
1352c71b3e2SJacob Faibussowitsch   PetscTestCheck(has == PETSC_FALSE);
1369566063dSJacob Faibussowitsch   PetscCall(PetscOptionsFindPair(NULL,NULL,"-abc_42xyz",&val,&has));
1372c71b3e2SJacob Faibussowitsch   PetscTestCheck(has == PETSC_FALSE);
1389566063dSJacob Faibussowitsch   PetscCall(PetscOptionsFindPair(NULL,NULL,"-abc0_42_xyz",&val,&has));
1392c71b3e2SJacob Faibussowitsch   PetscTestCheck(has == PETSC_FALSE);
1409566063dSJacob Faibussowitsch   PetscCall(PetscOptionsFindPair(NULL,NULL,"-abc_42_0xyz",&val,&has));
1412c71b3e2SJacob Faibussowitsch   PetscTestCheck(has == PETSC_FALSE);
1429566063dSJacob Faibussowitsch   PetscCall(PetscOptionsClearValue(NULL,"-abc_xyz"));
143c4762a1bSJed Brown 
1449566063dSJacob Faibussowitsch   PetscCall(PetscFinalize());
145b122ec5aSJacob Faibussowitsch   return 0;
146c4762a1bSJed Brown }
147c4762a1bSJed Brown 
148c4762a1bSJed Brown /*TEST
149c4762a1bSJed Brown 
150c4762a1bSJed Brown    test:
151c4762a1bSJed Brown 
152c4762a1bSJed Brown TEST*/
153