/** Tests to inject an object which has injections by itself. */ public void testNestedInjection() { Injector injector = new Injector(); injector.defineComponent( StringBand.class, new Provider<StringBand>() { @Override public StringBand provide() { return new StringBand(); } }); injector.defineComponent( Bass.class, new Provider<Bass>() { @Override public Bass provide() { return new Bass(); } }); injector.defineComponent( Body.class, new Provider<Body>() { @Override public Body provide() { return new Body(); } }); StringBand band = injector.getComponent(StringBand.class); assertNotNull(band.getBass()); assertNotNull(band.getBass().getBody()); assertNull(band.getGuitar()); }
@Test public void testSbands() { StringBand sb = new StringBand(5); assertEquals("", sb.toString()); assertEquals(5, sb.capacity()); assertEquals(0, sb.index()); assertEquals(0, sb.length()); sb.append("xxx"); assertEquals(5, sb.capacity()); assertEquals(1, sb.index()); assertEquals(3, sb.length()); assertEquals('x', sb.charAt(0)); assertEquals('x', sb.charAt(1)); assertEquals('x', sb.charAt(2)); sb.append("zzz"); assertEquals(5, sb.capacity()); assertEquals(2, sb.index()); assertEquals(6, sb.length()); assertEquals("xxxzzz", sb.toString()); assertEquals("zzz", sb.stringAt(1)); assertEquals('x', sb.charAt(0)); assertEquals('x', sb.charAt(1)); assertEquals('x', sb.charAt(2)); assertEquals('z', sb.charAt(3)); assertEquals('z', sb.charAt(4)); assertEquals('z', sb.charAt(5)); sb.append("www"); assertEquals(5, sb.capacity()); assertEquals(3, sb.index()); assertEquals(9, sb.length()); assertEquals("xxxzzzwww", sb.toString()); assertEquals("www", sb.stringAt(2)); assertEquals('x', sb.charAt(2)); assertEquals('z', sb.charAt(3)); assertEquals('z', sb.charAt(5)); assertEquals('w', sb.charAt(6)); assertEquals('w', sb.charAt(8)); sb.setIndex(1); assertEquals(5, sb.capacity()); assertEquals(1, sb.index()); assertEquals(3, sb.length()); assertEquals("xxx", sb.toString()); assertEquals('x', sb.charAt(2)); }