1 28 29 package com.idaremedia.antx.ownhelpers.tests; 30 31 import java.util.Map ; 32 import java.util.Properties ; 33 34 import junit.framework.TestSuite; 35 36 import com.idaremedia.antx.helpers.InnerNameValuePair; 37 import com.idaremedia.antx.helpers.Strings; 38 import com.idaremedia.antx.ownhelpers.ConditionalInnerNameValuePair; 39 import com.idaremedia.antx.ownhelpers.ConditionalParameters; 40 import com.idaremedia.antx.parameters.Conditional; 41 import com.idaremedia.antx.ut.HTC; 42 import com.idaremedia.antx.ut.HTCUtils; 43 44 53 54 public final class ConditionalParametersTest extends HTC 55 { 56 57 public static final String TEST_CATEGORY="CLASS"; 58 59 60 63 public ConditionalParametersTest(String methodName) 64 { 65 super("ConditionalParameters::",methodName); 66 } 67 68 69 72 public static TestSuite suite() 73 { 74 return new TestSuite(ConditionalParametersTest.class); 75 } 76 77 78 81 public static TestSuite baseline() 82 { 83 return suite(); 84 } 85 86 87 90 public static void main(String [] argv) 91 { 92 HTCUtils.quickCheck(suite()); 93 } 94 95 96 100 protected void setUp() throws Exception 101 { 102 configureProjectFromResource("blank.xml"); 103 } 104 105 106 private ConditionalParameters newOUT() 107 { 108 return new ConditionalParameters(getProject()); 109 } 110 111 private ConditionalInnerNameValuePair newIf(String name, String value, String property) 112 { 113 ConditionalInnerNameValuePair arg = new ConditionalInnerNameValuePair(name,value); 114 arg.setIf(property); 115 if (value==null) { 116 arg.setValue(Strings.UNDEFINED); 117 } 118 return arg; 119 } 120 121 private ConditionalInnerNameValuePair newUn(String name, String value, String property) 122 { 123 ConditionalInnerNameValuePair arg = new ConditionalInnerNameValuePair(name,value); 124 arg.setUnless(property); 125 if (value==null) { 126 arg.setValue(Strings.UNDEFINED); 127 } 128 return arg; 129 } 130 131 private ConditionalInnerNameValuePair newAlways(String name, String value) 132 { 133 ConditionalInnerNameValuePair arg = new ConditionalInnerNameValuePair(name,value); 134 if (value==null) { 135 arg.setValue(Strings.UNDEFINED); 136 } 137 return arg; 138 } 139 140 141 145 public void checkBaseline() 146 { 147 ConditionalParameters out = newOUT(); 149 assertTrue(out.isEmpty()); 150 } 151 152 153 public void testBaseline() 154 { 155 checkBaseline(); 156 } 157 158 159 163 public void testIfFiltersParameters_AntX05() 164 { 165 ConditionalParameters out = newOUT(); 166 out.addConfiguredArg(newAlways("name","frank")); 167 out.addConfiguredArg(newIf("height","5'7","verbose")); 168 out.addConfiguredArg(newIf("weight","197lbs","verbose")); 169 out.addConfiguredArg(newIf("longname","Frank Burns","longnames")); 170 assertEqual(out.size(),4,"ParamCount"); 171 172 out.getProject().setProperty("verbose","anyvalue"); 173 Properties filtered = out.copyOfSimpleKeyValues(getProject(),true); 174 assertEqual(filtered.size(),3,"If-Filtered ParamCount"); 175 assertTrue(filtered.containsKey("name"),"'name' found"); 176 assertTrue(filtered.containsKey("height"),"'height' found"); 177 assertTrue(filtered.containsKey("weight"),"'weight' found"); 178 } 179 180 181 182 186 public void testUnlessFiltersParameters_AntX05() 187 { 188 ConditionalParameters out = newOUT(); 189 out.addConfiguredArg(newAlways("name","billy")); 190 out.addConfiguredArg(newUn("height","5'5","brief")); 191 out.addConfiguredArg(newUn("weight","227lbs","brief")); 192 out.addConfiguredArg(newUn("longname","Billy Joel","shortnames")); 193 assertEqual(out.size(),4,"ParamCount"); 194 195 out.getProject().setProperty("shortnames","anyvalue"); 196 Properties filtered = out.copyOfSimpleKeyValues(getProject(),true); 197 assertEqual(filtered.size(),3,"Unless-Filtered ParamCount"); 198 assertTrue(filtered.containsKey("name"),"'name' found"); 199 assertTrue(filtered.containsKey("height"),"'height' found"); 200 assertTrue(filtered.containsKey("weight"),"'weight' found"); 201 } 202 203 204 208 public void testBothFiltersAppliedAllTrue_AntX05() 209 { 210 ConditionalParameters out = newOUT(); 211 out.addConfiguredArg(newAlways("name","billy")); 212 out.addConfiguredArg(newIf("height","5'5","verbose")); 213 out.addConfiguredArg(newIf("weight","227lbs","verbose")); 214 out.addConfiguredArg(newUn("longname","Billy Joel","shortnames")); 215 assertEqual(out.size(),4,"ParamCount"); 216 217 out.getProject().setProperty("verbose","anyvalue"); 218 Properties filtered = out.copyOfSimpleKeyValues(getProject(),true); 219 assertEqual(filtered.size(),4,"If/Unless-Filtered ParamCount"); 220 assertTrue(filtered.containsKey("name"),"'name' found"); 221 assertTrue(filtered.containsKey("height"),"'height' found"); 222 assertTrue(filtered.containsKey("weight"),"'weight' found"); 223 assertTrue(filtered.containsKey("longname"),"'longname' found"); 224 } 225 226 227 228 229 233 public void testBothFiltersAppliedAllFalse_AntX05() 234 { 235 ConditionalParameters out = newOUT(); 236 out.addConfiguredArg(newAlways("name","billy")); 237 out.addConfiguredArg(newIf("height","5'5","verbose")); 238 out.addConfiguredArg(newIf("weight","227lbs","verbose")); 239 out.addConfiguredArg(newUn("longname","Billy Joel","shortnames")); 240 assertEqual(out.size(),4,"ParamCount"); 241 242 out.getProject().setProperty("shortnames","anyvalue"); 243 Properties filtered = out.copyOfSimpleKeyValues(getProject(),true); 244 assertEqual(filtered.size(),1,"If/Unless-Filtered ParamCount"); 245 assertTrue(filtered.containsKey("name"),"'name' found"); 246 } 247 248 249 250 256 public void testHandlesHetergenousItems_AntX05() 257 { 258 ConditionalParameters out = newOUT(); 259 out.addConfiguredArg(new InnerNameValuePair("name","WildThing")); 260 out.addConfiguredArg(newIf("streak","continue","winning")); 261 out.addConfiguredArg(newUn("hairstyle","mohawk","losing")); 262 out.addConfiguredArg(new SeekritNVItem("team","indians")); 263 out.addConfiguredArg(new SeekritConditionalNVItem("status","avail")); 264 assertEqual(out.size(),5,"ParamCount"); 265 266 out.getProject().setProperty("losing","as-always"); 267 out.getProject().setProperty("freeagent",""); 268 269 Properties filtered = out.copyOfSimpleKeyValues(getProject()); 270 assertEqual(filtered.size(),3,"Custom NVItems included"); 271 assertTrue(filtered.containsKey("name"),"'name' found"); 272 assertTrue(filtered.containsKey("team"),"'team' found"); 273 assertEqual(filtered.getProperty("status"),"avail","status"); 274 } 275 276 277 private static class SeekritNVItem extends InnerNameValuePair { 278 SeekritNVItem(String name, String value) { 279 super(); 280 setNV(name,value); 281 } 282 }; 283 284 private static class SeekritConditionalNVItem extends InnerNameValuePair 285 implements Conditional { 286 SeekritConditionalNVItem(String name, String value) { 287 super(); 288 setNV(name,value); 289 } 290 public void setIf(String property) { 291 } 292 public String getIfProperty() { 293 return "freeagent"; 294 } 295 public void setUnless(String property) { 296 } 297 public String getUnlessProperty() { 298 return null; 299 } 300 }; 301 302 303 308 public void testFiltersAppliedToRawItemsToo_AntX05() 309 { 310 ConditionalParameters out = newOUT(); 311 out.addConfiguredParameter(newIf("slow","turtle","slow")); 312 out.addConfiguredProperty(newUn("fast","hare","slow")); 313 out.addConfiguredArg(new SeekritNVItem("medium","gerbil")); 314 ConditionalInnerNameValuePair item = new ConditionalInnerNameValuePair("superfast","cheetah"); 315 item.setIf("superfast"); 316 item.setUnless("superslow"); 317 out.addConfiguredProperty(item); 318 assertEqual(out.size(),4,"ParamCount"); 319 320 getProject().setProperty("slow","yes"); 321 getProject().setProperty("superfast","yes"); 322 323 Map copy = out.copyOfParameterObjects(); 324 assertEqual(copy.size(),3,"Filtered ParamCount"); 325 assertNotNil(copy.get("slow"),"'slow'"); 326 assertNotNil(copy.get("medium"),"'medium'"); 327 assertNotNil(copy.get("superfast"),"'superfast'"); 328 329 assertIdent(copy.get("medium").getClass(),SeekritNVItem.class,"SeekritNVItem"); 330 } 331 } 332 333 | Popular Tags |