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 PetscErrorCode ierr; 12c4762a1bSJed Brown 13c4762a1bSJed Brown ierr = PetscOptionsSetValue(NULL,"-skip_petscrc", NULL);if (ierr) return ierr; 14a87ad0e9SStefano Zampini ierr = PetscOptionsSetValue(NULL,"-use_gpu_aware_mpi", "0");if (ierr) return ierr; 15c4762a1bSJed Brown ierr = PetscInitialize(&argc,&argv,NULL,help);if (ierr) return ierr; 16c4762a1bSJed Brown 17*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,NULL,"-use_gpu_aware_mpi",&has)); 182c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE); 19*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,NULL,"-abc",&has)); 202c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 21*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,"","-abc",&has)); 222c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 23*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,"a","-bc",&has)); 242c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 25*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,"ab","-c",&has)); 262c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 27*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,"abc","-",&has)); 282c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 29c4762a1bSJed Brown 30*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsSetValue(NULL,"-abc",NULL)); 31*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,NULL,"-abc",&has)); 322c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE); 33*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,"","-abc",&has)); 342c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE); 35*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,"a","-bc",&has)); 362c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE); 37*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,"ab","-c",&has)); 382c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE); 39*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,"abc","-",&has)); 402c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE); 41*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsClearValue(NULL,"-abc")); 42*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsClearValue(NULL,"-ABC")); 43c4762a1bSJed Brown 44*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsPrefixPush(NULL,"a")); 45*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsSetValue(NULL,"-x",NULL)); 46*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,NULL,"-ax",&has)); 472c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE); 48*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsPrefixPush(NULL,"b")); 49*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsSetValue(NULL,"-xy",NULL)); 50*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,NULL,"-abxy",&has)); 512c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE); 52*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsPrefixPop(NULL)); 53*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsPrefixPush(NULL,"c")); 54*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsSetValue(NULL,"-xz",NULL)); 55*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,NULL,"-acxz",&has)); 562c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE); 57*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsPrefixPop(NULL)); 58*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsPrefixPop(NULL)); 59*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsClearValue(NULL,"-ax")); 60*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsClearValue(NULL,"-abxy")); 61*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsClearValue(NULL,"-acxz")); 62c4762a1bSJed Brown 63*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsSetValue(NULL,"-FOO",NULL)); 64*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsSetValue(NULL,"-FOO","BAR")); 65*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsSetValue(NULL,"-FOO",NULL)); 66*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsClearValue(NULL,"-FOO")); 67*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsSetValue(NULL,"-FOO","BAR")); 68*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsSetValue(NULL,"-FOO",NULL)); 69*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsSetValue(NULL,"-FOO","BAR")); 70*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsClearValue(NULL,"-FOO")); 71c4762a1bSJed Brown 72c4762a1bSJed Brown { 73c4762a1bSJed Brown char name[] = "-*_42", c; 74c4762a1bSJed Brown for (c = 'a'; c <= 'z'; c++) { 75c4762a1bSJed Brown name[1] = c; 76*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,NULL,name,&has)); 772c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 78c4762a1bSJed Brown } 79c4762a1bSJed Brown for (c = 'a'; c <= 'z'; c++) { 80c4762a1bSJed Brown name[1] = c; 81*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,NULL,name,&has)); 822c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 83*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsSetValue(NULL,name,NULL)); 84*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,NULL,name,&has)); 852c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE); 86c4762a1bSJed Brown } 87c4762a1bSJed Brown for (c = 'A'; c <= 'Z'; c++) { 88c4762a1bSJed Brown name[1] = c; 89*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,NULL,name,&has)); 902c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE); 91*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsClearValue(NULL,name)); 92*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,NULL,name,&has)); 932c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 94c4762a1bSJed Brown } 95c4762a1bSJed Brown for (c = 'Z'; c >= 'A'; c--) { 96c4762a1bSJed Brown name[1] = c; 97*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,NULL,name,&has)); 982c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 99*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsSetValue(NULL,name,NULL)); 100*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,NULL,name,&has)); 1012c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE); 102c4762a1bSJed Brown } 103c4762a1bSJed Brown for (c = 'a'; c <= 'z'; c++) { 104c4762a1bSJed Brown name[1] = c; 105*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,NULL,name,&has)); 1062c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE); 107*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsClearValue(NULL,name)); 108*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,NULL,name,&has)); 1092c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 110c4762a1bSJed Brown } 111c4762a1bSJed Brown for (c = 'a'; c <= 'z'; c++) { 112c4762a1bSJed Brown name[1] = c; 113*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,NULL,name,&has)); 1142c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 115c4762a1bSJed Brown } 116c4762a1bSJed Brown } 117c4762a1bSJed Brown 118*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsSetValue(NULL,"-abc_xyz","123")); 119*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsFindPair(NULL,NULL,"-abc_xyz",&val,&has)); 1202c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE && !strcmp(val,"123")); 121*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsFindPair(NULL,NULL,"-abc_42_xyz",&val,&has)); 1222c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE && !strcmp(val,"123")); 123*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsFindPair(NULL,NULL,"-abc_42_1_xyz",&val,&has)); 1242c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE && !strcmp(val,"123")); 125*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsFindPair(NULL,NULL,"-abc_42_1_23_xyz",&val,&has)); 1262c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE && !strcmp(val,"123")); 127*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsFindPair(NULL,NULL,"-abc_42_1_23_456_xyz",&val,&has)); 1282c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE && !strcmp(val,"123")); 129*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsFindPair(NULL,NULL,"-abc_42_1_23_456_789_xyz",&val,&has)); 1302c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE && !strcmp(val,"123")); 131*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsFindPair(NULL,NULL,"-abc_xyz_42",&val,&has)); 1322c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 133*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsFindPair(NULL,NULL,"-abc42xyz",&val,&has)); 1342c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 135*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsFindPair(NULL,NULL,"-abc42_xyz",&val,&has)); 1362c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 137*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsFindPair(NULL,NULL,"-abc_42xyz",&val,&has)); 1382c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 139*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsFindPair(NULL,NULL,"-abc0_42_xyz",&val,&has)); 1402c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 141*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsFindPair(NULL,NULL,"-abc_42_0xyz",&val,&has)); 1422c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 143*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsClearValue(NULL,"-abc_xyz")); 144c4762a1bSJed Brown 145c4762a1bSJed Brown ierr = PetscFinalize(); 146c4762a1bSJed Brown return ierr; 147c4762a1bSJed Brown } 148c4762a1bSJed Brown 149c4762a1bSJed Brown /*TEST 150c4762a1bSJed Brown 151c4762a1bSJed Brown test: 152c4762a1bSJed Brown 153c4762a1bSJed Brown TEST*/ 154