@Test void testCollection() { final PetiteContainer pc = new PetiteContainer(); pc.registerPetiteBean(Superman.class, null, null, null, false, null); pc.registerPetiteBean(Metropolis.class, null, null, null, false, null); Metropolis metropolis = pc.getBean(Metropolis.class); assertNotNull(metropolis.superHeros); assertFalse(metropolis.superHeros.isEmpty()); assertEquals(1, metropolis.superHeros.size()); String str = metropolis.whoIsThere(); assertTrue(str.contains("Superman")); }
@Test void testOneHero() { final PetiteContainer pc = new PetiteContainer(); pc.registerPetiteBean(Batman.class, null, null, null, false, null); pc.registerPetiteBean(GothamCity.class, null, null, null, false, null); GothamCity gothamCity = pc.getBean(GothamCity.class); assertNotNull(gothamCity.superHeros); assertFalse(gothamCity.superHeros.isEmpty()); assertEquals(1, gothamCity.superHeros.size()); String str = gothamCity.whoIsThere(); assertEquals("Batman", str); }
@Test void testSelf() { PetiteContainer pc = new PetiteContainer(); pc.addSelf(); assertEquals(1, pc.beansCount()); PetiteContainer pc2 = pc.getBean(PetiteContainer.PETITE_CONTAINER_REF_NAME); assertEquals(pc2, pc); }
@Test void testParam_wireExternal() { PetiteContainer pc = new PetiteContainer(); pc.defineParameter("pojoBean2.val1", "123"); final PojoBean2 pojoBean2 = new PojoBean2(); pc.wire(pojoBean2, WiringMode.AUTOWIRE); assertEquals("123", pojoBean2.getVal1()); } }
@Test void testConsumer() { PetiteContainer pc = new PetiteContainer(); pc.registerPetiteBean(SomeService.class, null, null, null, false, null); pc.registerPetiteBean(PojoBean.class, "pojo", null, null, false, pb -> pb.count = 7); pc.registerPetiteCtorInjectionPoint("pojo", null, null); PojoBean pb = pc.getBean("pojo"); assertEquals(7, pb.count); } }
@Test void testWireMode_strict() { PetiteContainer pc = new PetiteContainer(); final WiringMode wiringMode = WiringMode.STRICT; pc.registerPetiteBean(Green.class, null, null, wiringMode, false, null); pc.registerPetiteBean(Blue.class, null, null, wiringMode, false, null); pc.registerPetiteBean(Yellow.class, null, null, wiringMode, false, null); assertThrows(PetiteException.class, () -> pc.getBean("green")); }
@Test void testAdd() { PetiteContainer pc = new PetiteContainer(); Foo foo = new Foo(); pc.addBean("foo", foo); Foo foo2 = (Foo) pc.getBean("foo"); assertNotNull(foo2); assertSame(foo, foo2); }
@Test void testSet() { PetiteContainer pc = new PetiteContainer(); pc.registerPetiteBean(PojoBean2.class, null, null, null, false, null); pc.setBeanProperty("pojoBean2.val1", "value"); pc.setBeanProperty("pojoBean2.val2", "173"); PojoBean2 pojo2 = pc.getBean("pojoBean2"); assertEquals("value", pojo2.getVal1()); assertEquals(173, pojo2.getVal2().intValue()); }
@Test void testRefParamsEscape() { PetiteContainer pc = new PetiteContainer(); pc.registerPetiteBean(Foo.class, null, null, null, false, null); pc.defineParameter("foo.name", "\\${name}"); Foo foo = pc.getBean("foo"); assertNotNull(foo); assertEquals("${name}", foo.getName()); }
@Test void testSimpleParams() { PetiteContainer pc = new PetiteContainer(); pc.registerPetiteBean(Foo.class, null, null, null, false, null); pc.defineParameter("foo.name", "FOONAME"); Foo foo = pc.getBean("foo"); assertNotNull(foo); assertEquals("FOONAME", foo.getName()); }
@Test void testWireMode_none() { PetiteContainer pc = new PetiteContainer(); final WiringMode wiringMode = WiringMode.NONE; pc.registerPetiteBean(Green.class, null, null, wiringMode, false, null); pc.registerPetiteBean(Blue.class, null, null, wiringMode, false, null); pc.registerPetiteBean(Yellow.class, null, null, wiringMode, false, null); Green green = pc.getBean("green"); assertNotNull(green); assertNull(green.blue); assertNull(green.yellow); }
@Test void testInstanceMethodProviderManualRegistration() { PetiteContainer pc = new PetiteContainer(); pc.registerPetiteBean(Solar2.class, null, null, null, false, null); pc.registerPetiteBean(Sun2.class, null, null, null, false, null); pc.registerPetiteProvider("planet", "solar2", "planetProvider", ClassUtil.EMPTY_CLASS_ARRAY); pc.registerPetitePropertyInjectionPoint("sun2", "planet", null); Sun2 sun = pc.getBean(Sun2.class); assertEquals("Sun{Earth}", sun.toString()); }
@Test void testShutdown() { PetiteContainer pc = new PetiteContainer(); pc.registerPetiteBean(SomeService.class, null, null, null, false, null); pc.registerPetiteBean(PojoBean.class, "pojo", null, null, false, null); assertEquals(2, pc.beansCount()); pc.shutdown(); assertEquals(0, pc.beansCount()); } }
@Test void testSingleImplementation() { final PetiteContainer pc = new PetiteContainer(); pc.registerPetiteBean(BizUser.class, null, null, null, false, null); pc.registerPetiteBean(OneBiz.class, null, null, null, false, null); assertEquals(2, pc.beansCount()); final BizUser bizUser = pc.getBean(BizUser.class); assertNotNull(bizUser); assertNotNull(bizUser.biz); assertTrue(bizUser.biz instanceof OneBiz); } }
@Test void testPrivateInjection() { PetiteContainer pc = new PetiteContainer(); pc.registerPetiteBean(Loo.class); pc.registerPetiteBean(YujinpingBaseService.class); pc.registerPetiteBean(YujinpingUserService.class); YujinpingUserService service = pc.getBean(YujinpingUserService.class); assertTrue(service.check2()); assertTrue(service.check()); } }
@Test void testSingletonDestroyMethods() { PetiteContainer pc = new PetiteContainer(); pc.registerPetiteBean(Foo.class, null, null, null, false, null); pc.registerPetiteBean(Zoo.class, null, null, null, false, null); pc.registerPetiteBean(Boo.class, null, null, null, false, null); Boo boo = (Boo) pc.getBean("boo"); assertEquals(0, boo.getCount2()); pc.shutdown(); assertEquals(2, boo.getCount2()); }
@Test void testInjectedParams() { final PetiteContainer pc = new PetiteContainer(); pc.registerPetiteBean(Val.class, null, null, null, false, null); pc.config().setImplicitParamInjection(false); pc.defineParameter("someValue", "173"); pc.defineParameter("jodd.is.cool", "yes!"); Val val = pc.getBean("val"); assertNotNull(val); assertEquals("{foo=173,hello='WOO-yes!173'}", val.toString()); }
@Test void testEmptyParam() { final PetiteContainer pc = new PetiteContainer(); pc.registerPetiteBean(Val.class, null, null, null, false, null); pc.config().setImplicitParamInjection(false); pc.defineParameter("someValue", "173"); pc.defineParameter("justValue", "aaa"); Val val = pc.getBean("val"); assertNotNull(val); assertEquals("aaa", val.getJustValue()); }
@Test void testRefParamsNoResolve() { PetiteContainer pc = new PetiteContainer(); pc.config().setResolveReferenceParameters(false); pc.registerPetiteBean(Foo.class, null, null, null, false, null); pc.defineParameter("foo.name", "${name}"); pc.defineParameter("name", "${name2}"); pc.defineParameter("name2", "FOONAME"); Foo foo = pc.getBean("foo"); assertNotNull(foo); assertEquals("${name}", foo.getName()); }
@Test void testWiringMethodArguments() { PetiteContainer pc = new PetiteContainer(); pc.config().setDefaultWiringMode(WiringMode.OPTIONAL); PetiteRegistry petiteRegistry = pc.createContainerRegistry(); petiteRegistry.bean(DaDrum.class).register(); petiteRegistry.bean(Guitar.class).register(); petiteRegistry.bean(TheBand.class).register(); TheBand theBand = pc.getBean(TheBand.class); assertTrue(theBand.isBandReady()); } }