Added tests for prototype pattern
This commit is contained in:
parent
a3b1265921
commit
9d4c3154b1
@ -14,5 +14,10 @@
|
|||||||
<artifactId>junit</artifactId>
|
<artifactId>junit</artifactId>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.mockito</groupId>
|
||||||
|
<artifactId>mockito-core</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
||||||
|
@ -0,0 +1,39 @@
|
|||||||
|
package com.iluwatar.prototype;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertNull;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.verifyNoMoreInteractions;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Date: 12/28/15 - 8:34 PM
|
||||||
|
*
|
||||||
|
* @author Jeroen Meulemeester
|
||||||
|
*/
|
||||||
|
public class HeroFactoryImplTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testFactory() throws Exception {
|
||||||
|
final Mage mage = mock(Mage.class);
|
||||||
|
final Warlord warlord = mock(Warlord.class);
|
||||||
|
final Beast beast = mock(Beast.class);
|
||||||
|
|
||||||
|
when(mage.clone()).thenThrow(CloneNotSupportedException.class);
|
||||||
|
when(warlord.clone()).thenThrow(CloneNotSupportedException.class);
|
||||||
|
when(beast.clone()).thenThrow(CloneNotSupportedException.class);
|
||||||
|
|
||||||
|
final HeroFactoryImpl factory = new HeroFactoryImpl(mage, warlord, beast);
|
||||||
|
assertNull(factory.createMage());
|
||||||
|
assertNull(factory.createWarlord());
|
||||||
|
assertNull(factory.createBeast());
|
||||||
|
|
||||||
|
verify(mage).clone();
|
||||||
|
verify(warlord).clone();
|
||||||
|
verify(beast).clone();
|
||||||
|
verifyNoMoreInteractions(mage, warlord, beast);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,66 @@
|
|||||||
|
package com.iluwatar.prototype;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.junit.runners.Parameterized;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
import static org.junit.Assert.assertNotSame;
|
||||||
|
import static org.junit.Assert.assertSame;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Date: 12/28/15 - 8:45 PM
|
||||||
|
*
|
||||||
|
* @author Jeroen Meulemeester
|
||||||
|
*/
|
||||||
|
@RunWith(Parameterized.class)
|
||||||
|
public class PrototypeTest<P extends Prototype> {
|
||||||
|
|
||||||
|
@Parameterized.Parameters
|
||||||
|
public static Collection<Object[]> data() {
|
||||||
|
return Arrays.asList(
|
||||||
|
new Object[]{new OrcBeast(), "Orcish wolf"},
|
||||||
|
new Object[]{new OrcMage(), "Orcish mage"},
|
||||||
|
new Object[]{new OrcWarlord(), "Orcish warlord"},
|
||||||
|
new Object[]{new ElfBeast(), "Elven eagle"},
|
||||||
|
new Object[]{new ElfMage(), "Elven mage"},
|
||||||
|
new Object[]{new ElfWarlord(), "Elven warlord"}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The tested prototype instance
|
||||||
|
*/
|
||||||
|
private final Prototype testedPrototype;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The expected {@link Prototype#toString()} value
|
||||||
|
*/
|
||||||
|
private final String expectedToString;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new test instance, using the given test object and expected value
|
||||||
|
*
|
||||||
|
* @param testedPrototype The tested prototype instance
|
||||||
|
* @param expectedToString The expected {@link Prototype#toString()} value
|
||||||
|
*/
|
||||||
|
public PrototypeTest(final Prototype testedPrototype, final String expectedToString) {
|
||||||
|
this.expectedToString = expectedToString;
|
||||||
|
this.testedPrototype = testedPrototype;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testPrototype() throws Exception {
|
||||||
|
assertEquals(this.expectedToString, this.testedPrototype.toString());
|
||||||
|
|
||||||
|
final Object clone = this.testedPrototype.clone();
|
||||||
|
assertNotNull(clone);
|
||||||
|
assertNotSame(clone, this.testedPrototype);
|
||||||
|
assertSame(this.testedPrototype.getClass(), clone.getClass());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user