View Javadoc

1   /*
2    * Grapht, an open source dependency injector.
3    * Copyright 2014-2015 various contributors (see CONTRIBUTORS.txt)
4    * Copyright 2010-2014 Regents of the University of Minnesota
5    *
6    * This program is free software; you can redistribute it and/or modify
7    * it under the terms of the GNU Lesser General Public License as
8    * published by the Free Software Foundation; either version 2.1 of the
9    * License, or (at your option) any later version.
10   *
11   * This program is distributed in the hope that it will be useful, but WITHOUT
12   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13   * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
14   * details.
15   *
16   * You should have received a copy of the GNU General Public License along with
17   * this program; if not, write to the Free Software Foundation, Inc., 51
18   * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19   */
20  package org.grouplens.grapht;
21  
22  import org.grouplens.grapht.reflect.internal.types.TypeDftN;
23  import org.junit.Test;
24  
25  import javax.annotation.Nullable;
26  import javax.inject.Inject;
27  
28  import static org.hamcrest.CoreMatchers.not;
29  import static org.hamcrest.CoreMatchers.nullValue;
30  import static org.junit.Assert.assertThat;
31  
32  /**
33   * @author <a href="http://grouplens.org">GroupLens Research</a>
34   */
35  public class NullComponentTest {
36      @Test
37      public void testDefaultNull() throws InjectionException {
38          InjectorBuilder b = InjectorBuilder.create();
39          Injector inj = b.build();
40          OptionalDep obj = inj.getInstance(OptionalDep.class);
41          assertThat(obj, not(nullValue()));
42          assertThat(obj.getDep(), nullValue());
43      }
44  
45      @Test(expected = ConstructionException.class)
46      public void testBadNull() throws InjectionException {
47          InjectorBuilder b = InjectorBuilder.create();
48          Injector inj = b.build();
49          inj.getInstance(RequireDep.class);
50      }
51  
52      private static class OptionalDep {
53          private TypeDftN depend;
54          @Inject
55          public OptionalDep(@Nullable TypeDftN dep) {
56              depend = dep;
57          }
58          public TypeDftN getDep() {
59              return depend;
60          }
61      }
62  
63      private static class RequireDep {
64          @Inject
65          public RequireDep(TypeDftN dep) {
66          }
67      }
68  }