1 21 22 package org.opensubsystems.core.persist.db; 23 24 import java.util.Properties ; 25 26 import junit.framework.TestCase; 27 28 import org.opensubsystems.core.error.OSSDynamicClassException; 29 import org.opensubsystems.core.persist.DatabaseTestFactory; 30 import org.opensubsystems.core.util.ClassFactory; 31 import org.opensubsystems.core.util.Config; 32 33 42 public class DatabaseFactoryClassFactoryTest extends TestCase 43 { 44 46 50 public DatabaseFactoryClassFactoryTest( 51 String arg0 52 ) 53 { 54 super(arg0); 55 } 56 57 62 protected void setUp( 63 ) throws Exception  64 { 65 super.setUp(); 66 } 67 68 73 protected void tearDown() throws Exception  74 { 75 super.tearDown(); 76 } 77 78 83 public void testCreateInstanceWithClass( 84 ) throws Exception  85 { 86 Config originalInstance; 87 88 originalInstance = Config.getInstance(); 89 try 90 { 91 Object test; 92 ClassFactory factory = new DatabaseFactoryClassFactory(); 93 94 try 96 { 97 test = factory.createInstance(String .class); 98 fail("Shouldn't be able to instantiate String class using" + 99 " DatabaseFactory class factory"); 100 } 101 catch (OSSDynamicClassException dceExc) 102 { 103 } 105 catch (AssertionError aErr) 106 { 107 if (!("The factory class identifier is expected to end with name Factory".equals( 109 aErr.getMessage()))) 110 { 111 throw aErr; 113 114 } 115 } 116 117 test = factory.createInstance(DatabaseTestFactory.class); 119 assertNotNull("Cannot instantiate class", test); 120 assertTrue("Must be instance of DatabaseFactory", 121 test instanceof DatabaseFactory); 122 assertTrue("Must be instance of DatabaseTestFactory", 123 test instanceof DatabaseTestFactory); 124 assertTrue("Must be instance of DatabaseTestDatabaseFactory", 125 test instanceof DatabaseTestDatabaseFactory); 126 127 Properties predefinedProperties = new Properties (); 131 predefinedProperties.put(DatabaseTestFactory.class.getName(), 132 DatabaseTest2DatabaseFactory.class.getName()); 133 Config.setInstance(new Config(predefinedProperties)); 135 136 test = factory.createInstance(DatabaseTestFactory.class); 138 assertNotNull("Cannot instantiate class", test); 139 assertTrue("Must be instance of DatabaseFactory", 140 test instanceof DatabaseFactory); 141 assertTrue("Must be instance of DatabaseTestFactory", 142 test instanceof DatabaseTestFactory); 143 assertTrue("Must be instance of DatabaseTest2DatabaseFactory", 144 test instanceof DatabaseTest2DatabaseFactory); 145 } 146 finally 147 { 148 Config.setInstance(originalInstance); 150 } 151 } 152 153 158 public void testCreateInstanceWithClassAndDefault( 159 ) throws Exception  160 { 161 Config originalInstance; 162 163 originalInstance = Config.getInstance(); 164 try 165 { 166 Object test; 167 ClassFactory factory = new DatabaseFactoryClassFactory(); 168 169 try 171 { 172 test = factory.createInstance(String .class); 173 fail("Shouldn't be able to instantiate String class using" + 174 " DatabaseFactory class factory"); 175 } 176 catch (OSSDynamicClassException dceExc) 177 { 178 } 180 catch (AssertionError aErr) 181 { 182 if (!("The factory class identifier is expected to end with name Factory".equals( 184 aErr.getMessage()))) 185 { 186 throw aErr; 188 189 } 190 } 191 192 test = factory.createInstance(DatabaseTestFactory.class); 194 assertNotNull("Cannot instantiate class", test); 195 assertTrue("Must be instance of DatabaseFactory", 196 test instanceof DatabaseFactory); 197 assertTrue("Must be instance of DatabaseTestFactory", 198 test instanceof DatabaseTestFactory); 199 assertTrue("Must be instance of HsqlDBDatabaseTestFactory", 200 test instanceof DatabaseTestDatabaseFactory); 201 202 Properties predefinedProperties = new Properties (); 206 predefinedProperties.put(DatabaseTestFactory.class.getName(), 207 DatabaseTest2DatabaseFactory.class.getName()); 208 Config.setInstance(new Config(predefinedProperties)); 210 211 test = factory.createInstance(DatabaseTestFactory.class); 213 assertNotNull("Cannot instantiate class", test); 214 assertTrue("Must be instance of DatabaseFactory", 215 test instanceof DatabaseFactory); 216 assertTrue("Must be instance of DatabaseTestFactory", 217 test instanceof DatabaseTestFactory); 218 assertTrue("Must be instance of SapDBDatabaseTestFactory", 219 test instanceof DatabaseTest2DatabaseFactory); 220 221 predefinedProperties = new Properties (); 225 predefinedProperties.put(DatabaseTestFactory.class.getName(), 226 "random.text"); 227 Config.setInstance(new Config(predefinedProperties)); 229 230 try 231 { 232 test = factory.createInstance(DatabaseTestFactory.class, 233 String .class); 234 fail("Shouldn't be able to instantiate String class even as a default" 235 + " class using DatabaseFactory class factory"); 236 } 237 catch (OSSDynamicClassException dceExc) 238 { 239 } 241 242 test = factory.createInstance(DatabaseTestFactory.class, 244 DatabaseTestDatabaseFactory.class); 245 assertTrue("Must be instance of DatabaseFactory", 246 test instanceof DatabaseTestDatabaseFactory); 247 } 248 finally 249 { 250 Config.setInstance(originalInstance); 252 } 253 } 254 255 260 public void testCreateInstanceWithString( 261 ) throws Exception  262 { 263 Config originalInstance; 264 265 originalInstance = Config.getInstance(); 266 try 267 { 268 Object test; 269 ClassFactory factory = new DatabaseFactoryClassFactory(); 270 271 try 273 { 274 test = factory.createInstance(String .class.getName()); 275 fail("Shouldn't be able to instantiate String class using" + 276 " DatabaseFactory class factory"); 277 } 278 catch (OSSDynamicClassException dceExc) 279 { 280 } 282 catch (AssertionError aErr) 283 { 284 if (!("The factory class identifier is expected to end with name Factory".equals( 286 aErr.getMessage()))) 287 { 288 throw aErr; 290 291 } 292 } 293 294 test = factory.createInstance(DatabaseTestFactory.class.getName()); 296 assertNotNull("Cannot instantiate class", test); 297 assertTrue("Must be instance of DatabaseFactory", 298 test instanceof DatabaseFactory); 299 assertTrue("Must be instance of DatabaseTestFactory", 300 test instanceof DatabaseTestFactory); 301 assertTrue("Must be instance of HsqlDBDatabaseTestFactory", 302 test instanceof DatabaseTestDatabaseFactory); 303 304 Properties predefinedProperties = new Properties (); 308 predefinedProperties.put(DatabaseTestFactory.class.getName(), 309 DatabaseTest2DatabaseFactory.class.getName()); 310 predefinedProperties.put("random.text", 314 DatabaseTestDatabaseFactory.class.getName()); 315 predefinedProperties.put("random.text2", String .class.getName()); 316 Config.setInstance(new Config(predefinedProperties)); 318 319 test = factory.createInstance(DatabaseTestFactory.class.getName()); 321 assertNotNull("Cannot instantiate class", test); 322 assertTrue("Must be instance of DatabaseFactory", 323 test instanceof DatabaseFactory); 324 assertTrue("Must be instance of DatabaseTestFactory", 325 test instanceof DatabaseTestFactory); 326 assertTrue("Must be instance of SapDBDatabaseTestFactory", 327 test instanceof DatabaseTest2DatabaseFactory); 328 329 test = factory.createInstance("random.text"); 331 assertNotNull("Cannot instantiate class", test); 332 assertTrue("Must be instance of base class", 333 test instanceof DatabaseTestDatabaseFactory); 334 335 try 336 { 337 test = factory.createInstance("random.text2"); 338 fail("Shouldn't be able to instantiate String class even though it" 339 + " is valid class using DatabaseFactory class factory"); 340 } 341 catch (OSSDynamicClassException dceExc) 342 { 343 } 345 } 346 finally 347 { 348 Config.setInstance(originalInstance); 350 } 351 } 352 353 358 public void testCreateInstanceWithStringAndDefault( 359 ) throws Exception  360 { 361 Config originalInstance; 362 363 originalInstance = Config.getInstance(); 364 try 365 { 366 Object test; 367 ClassFactory factory = new DatabaseFactoryClassFactory(); 368 369 try 371 { 372 test = factory.createInstance(String .class.getName()); 373 fail("Shouldn't be able to instantiate String class using" + 374 " DatabaseFactory class factory"); 375 } 376 catch (OSSDynamicClassException dceExc) 377 { 378 } 380 catch (AssertionError aErr) 381 { 382 if (!("The factory class identifier is expected to end with name Factory".equals( 384 aErr.getMessage()))) 385 { 386 throw aErr; 388 389 } 390 } 391 392 test = factory.createInstance(DatabaseTestFactory.class.getName()); 394 assertNotNull("Cannot instantiate class", test); 395 assertTrue("Must be instance of DatabaseFactory", 396 test instanceof DatabaseFactory); 397 assertTrue("Must be instance of DatabaseTestFactory", 398 test instanceof DatabaseTestFactory); 399 assertTrue("Must be instance of HsqlDBDatabaseTestFactory", 400 test instanceof DatabaseTestDatabaseFactory); 401 402 Properties predefinedProperties = new Properties (); 406 predefinedProperties.put(DatabaseTestFactory.class.getName(), 407 DatabaseTest2DatabaseFactory.class.getName()); 408 predefinedProperties.put("random.text", 412 DatabaseTestDatabaseFactory.class.getName()); 413 predefinedProperties.put("random.text2", String .class.getName()); 414 Config.setInstance(new Config(predefinedProperties)); 416 417 test = factory.createInstance(DatabaseTestFactory.class.getName()); 419 assertNotNull("Cannot instantiate class", test); 420 assertTrue("Must be instance of DatabaseFactory", 421 test instanceof DatabaseFactory); 422 assertTrue("Must be instance of DatabaseTestFactory", 423 test instanceof DatabaseTestFactory); 424 assertTrue("Must be instance of SapDBDatabaseTestFactory", 425 test instanceof DatabaseTest2DatabaseFactory); 426 427 test = factory.createInstance("random.text"); 429 assertNotNull("Cannot instantiate class", test); 430 assertTrue("Must be instance of base class", 431 test instanceof DatabaseTestDatabaseFactory); 432 433 try 434 { 435 test = factory.createInstance("random.text2"); 436 fail("Shouldn't be able to instantiate String class even though it" 437 + " is valid class using DatabaseFactory class factory"); 438 } 439 catch (OSSDynamicClassException dceExc) 440 { 441 } 443 444 predefinedProperties = new Properties (); 448 predefinedProperties.put(DatabaseTestFactory.class.getName(), 449 "random.text"); 450 Config.setInstance(new Config(predefinedProperties)); 452 453 try 454 { 455 test = factory.createInstance(DatabaseTestFactory.class.getName(), 456 String .class); 457 fail("Shouldn't be able to instantiate String class even as a default" 458 + " class using DatabaseFactory class factory"); 459 } 460 catch (OSSDynamicClassException dceExc) 461 { 462 } 464 465 test = factory.createInstance(DatabaseTestFactory.class.getName(), 467 DatabaseTestDatabaseFactory.class); 468 assertTrue("Must be instance of DatabaseFactory", 469 test instanceof DatabaseTestDatabaseFactory); 470 } 471 finally 472 { 473 Config.setInstance(originalInstance); 475 } 476 } 477 } 478
| Popular Tags
|