View Javadoc
1   package com.atlassian.plugin.hostcontainer;
2   
3   import com.google.common.collect.ImmutableMap;
4   import org.junit.Test;
5   
6   import java.util.Collections;
7   
8   import static org.junit.Assert.assertEquals;
9   
10  public class TestSimpleConstructorModuleFactory {
11  
12      @Test
13      public void testCreateModule() {
14          final SimpleConstructorHostContainer factory = new SimpleConstructorHostContainer(
15                  ImmutableMap.of(String.class, "bob"));
16          final Base world = factory.create(OneArg.class);
17          assertEquals("bob", world.getName());
18      }
19  
20      @Test
21      public void testCreateModuleFindBiggest() {
22          final SimpleConstructorHostContainer factory = new SimpleConstructorHostContainer(
23                  ImmutableMap.of(String.class, "bob", Integer.class, 10));
24          final Base world = factory.create(TwoArg.class);
25          assertEquals("bob 10", world.getName());
26      }
27  
28      @Test
29      public void testCreateModuleFindSmaller() {
30          final SimpleConstructorHostContainer factory = new SimpleConstructorHostContainer(
31                  ImmutableMap.of(String.class, "bob"));
32          final Base world = factory.create(TwoArg.class);
33          assertEquals("bob", world.getName());
34      }
35  
36      @Test(expected = IllegalArgumentException.class)
37      public void testCreateModuleNoMatch() {
38          final SimpleConstructorHostContainer factory = new SimpleConstructorHostContainer(Collections.emptyMap());
39          factory.create(OneArg.class);
40      }
41  
42      public abstract static class Base {
43          private final String name;
44  
45          Base(final String name) {
46              this.name = name;
47          }
48  
49          public String getName() {
50              return name;
51          }
52      }
53  
54      public static class OneArg extends Base {
55          public OneArg(final String name) {
56              super(name);
57          }
58      }
59  
60      public static class TwoArg extends Base {
61          public TwoArg(final String name) {
62              super(name);
63          }
64  
65          public TwoArg(final String name, final Integer age) {
66              super(name + " " + age);
67          }
68      }
69  }