samples/instanceof/test/impl/InstanceProviderTest.java
author Jaroslav Tulach <jtulach@netbeans.org>
Sat, 14 Jun 2008 09:53:33 +0200
changeset 74 84353f1cb4bc
child 263 7e8e995065c5
permissions -rw-r--r--
Moving InstanceProvider into external sample files
jtulach@74
     1
package impl;
jtulach@74
     2
jtulach@74
     3
import api.BetterInstanceProvider;
jtulach@74
     4
import api.InstanceProvider;
jtulach@74
     5
import org.junit.After;
jtulach@74
     6
import org.junit.AfterClass;
jtulach@74
     7
import org.junit.Before;
jtulach@74
     8
import org.junit.BeforeClass;
jtulach@74
     9
import org.junit.Test;
jtulach@74
    10
import static org.junit.Assert.*;
jtulach@74
    11
jtulach@74
    12
public class InstanceProviderTest {
jtulach@74
    13
jtulach@74
    14
    public InstanceProviderTest() {
jtulach@74
    15
    }
jtulach@74
    16
jtulach@74
    17
    @BeforeClass
jtulach@74
    18
    public static void setUpClass() throws Exception {
jtulach@74
    19
    }
jtulach@74
    20
jtulach@74
    21
    @AfterClass
jtulach@74
    22
    public static void tearDownClass() throws Exception {
jtulach@74
    23
    }
jtulach@74
    24
jtulach@74
    25
    @Before
jtulach@74
    26
    public void setUp() {
jtulach@74
    27
    }
jtulach@74
    28
jtulach@74
    29
    @After
jtulach@74
    30
    public void tearDown() {
jtulach@74
    31
    }
jtulach@74
    32
jtulach@74
    33
    @Test
jtulach@74
    34
    public void verifyBehaviourOnOldInterface() {
jtulach@74
    35
        class IP implements InstanceProvider {
jtulach@74
    36
            int instanceClass;
jtulach@74
    37
            int instanceCreate;
jtulach@74
    38
            
jtulach@74
    39
            public Class<?> instanceClass() {
jtulach@74
    40
                instanceClass++;
jtulach@74
    41
                return String.class;
jtulach@74
    42
            }
jtulach@74
    43
jtulach@74
    44
            public Object instanceCreate() {
jtulach@74
    45
                instanceCreate++;
jtulach@74
    46
                return "API Design!";
jtulach@74
    47
            }
jtulach@74
    48
        }
jtulach@74
    49
        IP instance = new IP();
jtulach@74
    50
        
jtulach@74
    51
        boolean isString = checkIsString(instance);
jtulach@74
    52
        assertTrue("Provides string", isString);
jtulach@74
    53
        assertEquals("Class was tested", 1, instance.instanceClass);
jtulach@74
    54
        assertEquals("No instance created", 0, instance.instanceCreate);
jtulach@74
    55
    }
jtulach@74
    56
    
jtulach@74
    57
    @Test
jtulach@74
    58
    public void verifyBehaviourOnNewInterface() {
jtulach@74
    59
        class IP implements BetterInstanceProvider {
jtulach@74
    60
            int isInstanceOf;
jtulach@74
    61
            int instanceClass;
jtulach@74
    62
            int instanceCreate;
jtulach@74
    63
            
jtulach@74
    64
            public Class<?> instanceClass() {
jtulach@74
    65
                instanceClass++;
jtulach@74
    66
                return String.class;
jtulach@74
    67
            }
jtulach@74
    68
jtulach@74
    69
            public Object instanceCreate() {
jtulach@74
    70
                instanceCreate++;
jtulach@74
    71
                return "API Design!";
jtulach@74
    72
            }
jtulach@74
    73
jtulach@74
    74
            public boolean isInstanceOf(Class<?> c) {
jtulach@74
    75
                isInstanceOf++;
jtulach@74
    76
                return c.isAssignableFrom(String.class);
jtulach@74
    77
            }
jtulach@74
    78
        }
jtulach@74
    79
        IP instance = new IP();
jtulach@74
    80
        
jtulach@74
    81
        boolean isString = checkIsString(instance);
jtulach@74
    82
        assertTrue("Provides string", isString);
jtulach@74
    83
        assertEquals("Class was not tested", 0, instance.instanceClass);
jtulach@74
    84
        assertEquals("No instance created", 0, instance.instanceCreate);
jtulach@74
    85
        assertEquals("isInstanceOf called", 1, instance.isInstanceOf);
jtulach@74
    86
    }
jtulach@74
    87
jtulach@74
    88
    private static boolean checkIsString(InstanceProvider instance) {
jtulach@74
    89
        // BEGIN: instanceof.Use
jtulach@74
    90
        if (instance instanceof BetterInstanceProvider) {
jtulach@74
    91
            BetterInstanceProvider bip = (BetterInstanceProvider)instance;
jtulach@74
    92
            return bip.isInstanceOf(String.class);
jtulach@74
    93
        } else {
jtulach@74
    94
            return String.class.isAssignableFrom(instance.instanceClass());
jtulach@74
    95
        }
jtulach@74
    96
        // END: instanceof.Use
jtulach@74
    97
    }
jtulach@74
    98
jtulach@74
    99
}