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; 15*b122ec5aSJacob Faibussowitsch CHKERRQ(PetscInitialize(&argc,&argv,NULL,help)); 16c4762a1bSJed Brown 175f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,NULL,"-use_gpu_aware_mpi",&has)); 182c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE); 195f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,NULL,"-abc",&has)); 202c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 215f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,"","-abc",&has)); 222c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 235f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,"a","-bc",&has)); 242c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 255f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,"ab","-c",&has)); 262c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 275f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,"abc","-",&has)); 282c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 29c4762a1bSJed Brown 305f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsSetValue(NULL,"-abc",NULL)); 315f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,NULL,"-abc",&has)); 322c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE); 335f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,"","-abc",&has)); 342c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE); 355f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,"a","-bc",&has)); 362c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE); 375f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,"ab","-c",&has)); 382c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE); 395f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,"abc","-",&has)); 402c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE); 415f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsClearValue(NULL,"-abc")); 425f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsClearValue(NULL,"-ABC")); 43c4762a1bSJed Brown 445f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsPrefixPush(NULL,"a")); 455f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsSetValue(NULL,"-x",NULL)); 465f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,NULL,"-ax",&has)); 472c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE); 485f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsPrefixPush(NULL,"b")); 495f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsSetValue(NULL,"-xy",NULL)); 505f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,NULL,"-abxy",&has)); 512c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE); 525f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsPrefixPop(NULL)); 535f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsPrefixPush(NULL,"c")); 545f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsSetValue(NULL,"-xz",NULL)); 555f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,NULL,"-acxz",&has)); 562c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE); 575f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsPrefixPop(NULL)); 585f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsPrefixPop(NULL)); 595f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsClearValue(NULL,"-ax")); 605f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsClearValue(NULL,"-abxy")); 615f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsClearValue(NULL,"-acxz")); 62c4762a1bSJed Brown 635f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsSetValue(NULL,"-FOO",NULL)); 645f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsSetValue(NULL,"-FOO","BAR")); 655f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsSetValue(NULL,"-FOO",NULL)); 665f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsClearValue(NULL,"-FOO")); 675f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsSetValue(NULL,"-FOO","BAR")); 685f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsSetValue(NULL,"-FOO",NULL)); 695f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsSetValue(NULL,"-FOO","BAR")); 705f80ce2aSJacob 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; 765f80ce2aSJacob 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; 815f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,NULL,name,&has)); 822c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 835f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsSetValue(NULL,name,NULL)); 845f80ce2aSJacob 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; 895f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,NULL,name,&has)); 902c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE); 915f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsClearValue(NULL,name)); 925f80ce2aSJacob 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; 975f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,NULL,name,&has)); 982c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 995f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsSetValue(NULL,name,NULL)); 1005f80ce2aSJacob 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; 1055f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,NULL,name,&has)); 1062c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE); 1075f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsClearValue(NULL,name)); 1085f80ce2aSJacob 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; 1135f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsHasName(NULL,NULL,name,&has)); 1142c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 115c4762a1bSJed Brown } 116c4762a1bSJed Brown } 117c4762a1bSJed Brown 1185f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsSetValue(NULL,"-abc_xyz","123")); 1195f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsFindPair(NULL,NULL,"-abc_xyz",&val,&has)); 1202c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE && !strcmp(val,"123")); 1215f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsFindPair(NULL,NULL,"-abc_42_xyz",&val,&has)); 1222c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE && !strcmp(val,"123")); 1235f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsFindPair(NULL,NULL,"-abc_42_1_xyz",&val,&has)); 1242c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE && !strcmp(val,"123")); 1255f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsFindPair(NULL,NULL,"-abc_42_1_23_xyz",&val,&has)); 1262c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE && !strcmp(val,"123")); 1275f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsFindPair(NULL,NULL,"-abc_42_1_23_456_xyz",&val,&has)); 1282c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE && !strcmp(val,"123")); 1295f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsFindPair(NULL,NULL,"-abc_42_1_23_456_789_xyz",&val,&has)); 1302c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_TRUE && !strcmp(val,"123")); 1315f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsFindPair(NULL,NULL,"-abc_xyz_42",&val,&has)); 1322c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 1335f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsFindPair(NULL,NULL,"-abc42xyz",&val,&has)); 1342c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 1355f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsFindPair(NULL,NULL,"-abc42_xyz",&val,&has)); 1362c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 1375f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsFindPair(NULL,NULL,"-abc_42xyz",&val,&has)); 1382c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 1395f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsFindPair(NULL,NULL,"-abc0_42_xyz",&val,&has)); 1402c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 1415f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsFindPair(NULL,NULL,"-abc_42_0xyz",&val,&has)); 1422c71b3e2SJacob Faibussowitsch PetscTestCheck(has == PETSC_FALSE); 1435f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsClearValue(NULL,"-abc_xyz")); 144c4762a1bSJed Brown 145*b122ec5aSJacob Faibussowitsch CHKERRQ(PetscFinalize()); 146*b122ec5aSJacob Faibussowitsch return 0; 147c4762a1bSJed Brown } 148c4762a1bSJed Brown 149c4762a1bSJed Brown /*TEST 150c4762a1bSJed Brown 151c4762a1bSJed Brown test: 152c4762a1bSJed Brown 153c4762a1bSJed Brown TEST*/ 154