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