@Test(expected = IllegalStateException.class) public void testRemoveChild_shouldFail_whenChildHasDifferentParent() { //GIVEN ScopeNode parentScope = new ScopeImpl("root"); ScopeNode parentScope2 = new ScopeImpl("foo"); ScopeNode childScope = new ScopeImpl("child"); parentScope.addChild(childScope); //WHEN parentScope2.removeChild(childScope); //THEN fail("Should throw an exception"); }
@Test public void testGetParentScopeNames_shouldReturnParentNames_whenThereAreParents() { //GIVEN ScopeNode parentScope = new ScopeImpl("root"); ScopeNode childScope = new ScopeImpl("child"); parentScope.addChild(childScope); //WHEN final List<Object> parentScopesNames = childScope.getParentScopesNames(); //THEN assertThat(parentScopesNames.size(), is(1)); assertThat(parentScopesNames.iterator().next(), is(parentScope.getName())); }
@Test public void testGetChildrenScopes_shouldReturnEmptyList_whenHasNoChildren() { //GIVEN ScopeNode parentScope = new ScopeImpl("root"); //WHEN boolean hasNoChildren = parentScope.getChildrenScopes().isEmpty(); //THEN assertThat(hasNoChildren, is(true)); }
@Test(expected = IllegalStateException.class) public void testToBinding_shouldFail_whenAddingANullBinding() { //GIVEN //WHEN new ScopeImpl("").toProvider(null); //THEN }
@Test public void testInjection_shouldFail_whenFieldsAreMasked() throws Exception { //GIVEN Scope scope = new ScopeImpl(""); //WHEN FooChildMaskingMember fooChildMaskingMember = scope.getInstance(FooChildMaskingMember.class); String parentBarToString = fooChildMaskingMember.toString(); //THEN assertThat(parentBarToString, notNullValue()); assertThat(fooChildMaskingMember.bar, not(sameInstance(((FooParentMaskingMember) fooChildMaskingMember).bar))); }
@Test public void testSimpleInjection() throws Exception { //GIVEN Scope scope = new ScopeImpl(""); Foo foo = new Foo(); //WHEN Toothpick.inject(foo, scope); //THEN assertThat(foo.bar, notNullValue()); assertThat(foo.bar, isA(Bar.class)); }
@Test(expected = IllegalStateException.class) public void providerGet_shouldFail_whenScopeIsClosed() { //GIVEN ScopeImpl scope = new ScopeImpl(""); Provider<Foo> provider = scope.getProvider(Foo.class); //WHEN scope.close(); provider.get(); //THEN }
@Test(expected = IllegalStateException.class) public void providerGet_shouldFail_whenScopeIsClosed_andThereAreNoDependencies() { //GIVEN ScopeImpl scope = new ScopeImpl(""); Provider<Bar> provider = scope.getProvider(Bar.class); //WHEN scope.close(); provider.get(); //THEN }
@Test public void testNamedInjection() throws Exception { //GIVEN Scope scope = new ScopeImpl(""); scope.installModules(new SimpleModule()); //WHEN Foo namedInstance = scope.getInstance(Foo.class, "bar"); //THEN assertThat(namedInstance, is(namedFooInstance)); }
@Test(expected = IllegalStateException.class) public void getInstance_shouldFail_whenScopeIsClosed() { //GIVEN ScopeImpl scope = new ScopeImpl(""); //WHEN scope.close(); scope.getInstance(Foo.class); //THEN }
@Test(expected = IllegalStateException.class) public void getProvider_shouldFail_whenScopeIsClosed() { //GIVEN ScopeImpl scope = new ScopeImpl(""); //WHEN scope.close(); scope.getProvider(Foo.class); //THEN }
@Test public void testInjection_shouldNotThrowAnException_whenNoDependencyIsFound() throws Exception { //GIVEN Scope scope = new ScopeImpl("root"); NotInjectable notInjectable = new NotInjectable(); //WHEN Toothpick.inject(notInjectable, scope); //THEN // nothing }
@Test(expected = IllegalArgumentException.class) public void testAddChild_shouldFail_whenChildIsNull() { //GIVEN ScopeNode parentScope = new ScopeImpl("root"); //WHEN parentScope.addChild(null); //THEN fail("Should throw an exception"); }
@Test(expected = IllegalArgumentException.class) public void testRemoveChild_shouldFail_whenChildIsNull() { //GIVEN ScopeNode parentScope = new ScopeImpl("root"); //WHEN parentScope.removeChild(null); //THEN fail("Should throw an exception"); }
@Test(expected = IllegalStateException.class) public void lazyGet_shouldFail_whenScopeIsClosed() { //GIVEN ScopeImpl scope = new ScopeImpl(""); Lazy<Foo> lazy = scope.getLazy(Foo.class); //WHEN scope.close(); lazy.get(); //THEN }
@Test(expected = IllegalStateException.class) public void installModules_shouldThrowAnException_whenModuleHasANullBinding() { //GIVEN ScopeImpl scope = new ScopeImpl(""); //WHEN scope.installModules(new NullBindingModule()); //THEN fail("Should throw an exception."); }
@Test public void testReset_shouldClearBoundAnnotations_andFlagTheScopeAsOpen() throws Exception { //GIVEN ScopeNode scope = new ScopeImpl("root"); scope.bindScopeAnnotation(CustomScope.class); scope.close(); //WHEN scope.reset(); //THEN assertThat(scope.isBoundToScopeAnnotation(CustomScope.class), is(false)); assertThat(scope.isOpen, is(true)); }
@Test(expected = IllegalStateException.class) public void lazyGet_shouldFail_whenScopeIsClosed_andThereAreNoDependencies() { //GIVEN ScopeImpl scope = new ScopeImpl(""); Lazy<Bar> lazy = scope.getLazy(Bar.class); //WHEN scope.close(); lazy.get(); //THEN }
@Test public void installOverrideModules_shouldInstallOverrideBindings_whenCalledOnce() { //GIVEN Foo testFoo = new Foo(); ScopeImpl scope = new ScopeImpl(""); scope.installTestModules(new TestModule(testFoo)); scope.installModules(new ProdModule()); //WHEN Foo instance = scope.getInstance(Foo.class); //THEN assertThat(instance, sameInstance(testFoo)); }