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