Added tests for iterator pattern
This commit is contained in:
		| @@ -0,0 +1,108 @@ | |||||||
|  | package com.iluwatar.iterator; | ||||||
|  |  | ||||||
|  | import org.junit.Test; | ||||||
|  | import org.junit.runner.RunWith; | ||||||
|  | import org.junit.runners.Parameterized; | ||||||
|  |  | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
|  | import static org.junit.Assert.assertEquals; | ||||||
|  | import static org.junit.Assert.assertNotNull; | ||||||
|  | import static org.junit.Assert.fail; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Date: 12/14/15 - 2:58 PM | ||||||
|  |  * | ||||||
|  |  * @author Jeroen Meulemeester | ||||||
|  |  */ | ||||||
|  | @RunWith(Parameterized.class) | ||||||
|  | public class TreasureChestTest { | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * Create a list of all expected items in the chest. | ||||||
|  |    * | ||||||
|  |    * @return The set of all expected items in the chest | ||||||
|  |    */ | ||||||
|  |   @Parameterized.Parameters | ||||||
|  |   public static List<Object[]> data() { | ||||||
|  |     final List<Object[]> parameters = new ArrayList<>(); | ||||||
|  |     parameters.add(new Object[]{new Item(ItemType.POTION, "Potion of courage")}); | ||||||
|  |     parameters.add(new Object[]{new Item(ItemType.RING, "Ring of shadows")}); | ||||||
|  |     parameters.add(new Object[]{new Item(ItemType.POTION, "Potion of wisdom")}); | ||||||
|  |     parameters.add(new Object[]{new Item(ItemType.POTION, "Potion of blood")}); | ||||||
|  |     parameters.add(new Object[]{new Item(ItemType.WEAPON, "Sword of silver +1")}); | ||||||
|  |     parameters.add(new Object[]{new Item(ItemType.POTION, "Potion of rust")}); | ||||||
|  |     parameters.add(new Object[]{new Item(ItemType.POTION, "Potion of healing")}); | ||||||
|  |     parameters.add(new Object[]{new Item(ItemType.RING, "Ring of armor")}); | ||||||
|  |     parameters.add(new Object[]{new Item(ItemType.WEAPON, "Steel halberd")}); | ||||||
|  |     parameters.add(new Object[]{new Item(ItemType.WEAPON, "Dagger of poison")}); | ||||||
|  |     return parameters; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * One of the expected items in the chest | ||||||
|  |    */ | ||||||
|  |   private final Item expectedItem; | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * Create a new test instance, test if the given expected item can be retrieved from the chest | ||||||
|  |    * | ||||||
|  |    * @param expectedItem One of the items that should be in the chest | ||||||
|  |    */ | ||||||
|  |   public TreasureChestTest(final Item expectedItem) { | ||||||
|  |     this.expectedItem = expectedItem; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * Test if the expected item can be retrieved from the chest using the {@link ItemIterator} | ||||||
|  |    */ | ||||||
|  |   @Test | ||||||
|  |   public void testIterator() { | ||||||
|  |     final TreasureChest chest = new TreasureChest(); | ||||||
|  |     final ItemIterator iterator = chest.Iterator(expectedItem.getType()); | ||||||
|  |     assertNotNull(iterator); | ||||||
|  |  | ||||||
|  |     while (iterator.hasNext()) { | ||||||
|  |       final Item item = iterator.next(); | ||||||
|  |       assertNotNull(item); | ||||||
|  |       assertEquals(this.expectedItem.getType(), item.getType()); | ||||||
|  |  | ||||||
|  |       final String name = item.toString(); | ||||||
|  |       assertNotNull(name); | ||||||
|  |       if (this.expectedItem.toString().equals(name)) { | ||||||
|  |         return; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     fail("Expected to find item [" + this.expectedItem + "] using iterator, but we didn't."); | ||||||
|  |  | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * Test if the expected item can be retrieved from the chest using the {@link | ||||||
|  |    * TreasureChest#getItems()} method | ||||||
|  |    */ | ||||||
|  |   @Test | ||||||
|  |   public void testGetItems() throws Exception { | ||||||
|  |     final TreasureChest chest = new TreasureChest(); | ||||||
|  |     final List<Item> items = chest.getItems(); | ||||||
|  |     assertNotNull(items); | ||||||
|  |  | ||||||
|  |     for (final Item item : items) { | ||||||
|  |       assertNotNull(item); | ||||||
|  |       assertNotNull(item.getType()); | ||||||
|  |       assertNotNull(item.toString()); | ||||||
|  |  | ||||||
|  |       final boolean sameType = this.expectedItem.getType() == item.getType(); | ||||||
|  |       final boolean sameName = this.expectedItem.toString().equals(item.toString()); | ||||||
|  |       if (sameType && sameName) { | ||||||
|  |         return; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     fail("Expected to find item [" + this.expectedItem + "] in the item list, but we didn't."); | ||||||
|  |  | ||||||
|  |   } | ||||||
|  |  | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user