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