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