3 import api.BetterInstanceProvider;
4 import api.InstanceProvider;
5 import org.junit.After;
6 import org.junit.AfterClass;
7 import org.junit.Before;
8 import org.junit.BeforeClass;
10 import static org.junit.Assert.*;
12 public class InstanceProviderTest {
14 public InstanceProviderTest() {
18 public static void setUpClass() throws Exception {
22 public static void tearDownClass() throws Exception {
30 public void tearDown() {
34 public void verifyBehaviourOnOldInterface() {
35 class IP implements InstanceProvider {
39 public Class<?> instanceClass() {
44 public Object instanceCreate() {
49 IP instance = new IP();
51 boolean isString = checkIsString(instance);
52 assertTrue("Provides string", isString);
53 assertEquals("Class was tested", 1, instance.instanceClass);
54 assertEquals("No instance created", 0, instance.instanceCreate);
58 public void verifyBehaviourOnNewInterface() {
59 class IP implements BetterInstanceProvider {
64 public Class<?> instanceClass() {
69 public Object instanceCreate() {
74 public boolean isInstanceOf(Class<?> c) {
76 return c.isAssignableFrom(String.class);
79 IP instance = new IP();
81 boolean isString = checkIsString(instance);
82 assertTrue("Provides string", isString);
83 assertEquals("Class was not tested", 0, instance.instanceClass);
84 assertEquals("No instance created", 0, instance.instanceCreate);
85 assertEquals("isInstanceOf called", 1, instance.isInstanceOf);
88 private static boolean checkIsString(InstanceProvider instance) {
89 // BEGIN: instanceof.Use
90 if (instance instanceof BetterInstanceProvider) {
91 BetterInstanceProvider bip = (BetterInstanceProvider)instance;
92 return bip.isInstanceOf(String.class);
94 return String.class.isAssignableFrom(instance.instanceClass());
96 // END: instanceof.Use