Added tests for proxy pattern
This commit is contained in:
		@@ -14,5 +14,10 @@
 | 
			
		||||
      <artifactId>junit</artifactId>
 | 
			
		||||
      <scope>test</scope>
 | 
			
		||||
    </dependency>
 | 
			
		||||
    <dependency>
 | 
			
		||||
      <groupId>org.mockito</groupId>
 | 
			
		||||
      <artifactId>mockito-core</artifactId>
 | 
			
		||||
      <scope>test</scope>
 | 
			
		||||
    </dependency>
 | 
			
		||||
  </dependencies>
 | 
			
		||||
</project>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										53
									
								
								proxy/src/test/java/com/iluwatar/proxy/StdOutTest.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								proxy/src/test/java/com/iluwatar/proxy/StdOutTest.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
			
		||||
package com.iluwatar.proxy;
 | 
			
		||||
 | 
			
		||||
import org.junit.After;
 | 
			
		||||
import org.junit.Before;
 | 
			
		||||
 | 
			
		||||
import java.io.PrintStream;
 | 
			
		||||
 | 
			
		||||
import static org.mockito.Mockito.mock;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Date: 12/10/15 - 8:37 PM
 | 
			
		||||
 *
 | 
			
		||||
 * @author Jeroen Meulemeester
 | 
			
		||||
 */
 | 
			
		||||
public abstract class StdOutTest {
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * The mocked standard out {@link PrintStream}, required since some actions don't have any
 | 
			
		||||
   * influence on accessible objects, except for writing to std-out using {@link System#out}
 | 
			
		||||
   */
 | 
			
		||||
  private final PrintStream stdOutMock = mock(PrintStream.class);
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Keep the original std-out so it can be restored after the test
 | 
			
		||||
   */
 | 
			
		||||
  private final PrintStream stdOutOrig = System.out;
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Inject the mocked std-out {@link PrintStream} into the {@link System} class before each test
 | 
			
		||||
   */
 | 
			
		||||
  @Before
 | 
			
		||||
  public void setUp() {
 | 
			
		||||
    System.setOut(this.stdOutMock);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Removed the mocked std-out {@link PrintStream} again from the {@link System} class
 | 
			
		||||
   */
 | 
			
		||||
  @After
 | 
			
		||||
  public void tearDown() {
 | 
			
		||||
    System.setOut(this.stdOutOrig);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Get the mocked stdOut {@link PrintStream}
 | 
			
		||||
   *
 | 
			
		||||
   * @return The stdOut print stream mock, renewed before each test
 | 
			
		||||
   */
 | 
			
		||||
  final PrintStream getStdOutMock() {
 | 
			
		||||
    return this.stdOutMock;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										22
									
								
								proxy/src/test/java/com/iluwatar/proxy/WizardTest.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								proxy/src/test/java/com/iluwatar/proxy/WizardTest.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
package com.iluwatar.proxy;
 | 
			
		||||
 | 
			
		||||
import org.junit.Test;
 | 
			
		||||
 | 
			
		||||
import static org.junit.Assert.assertEquals;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Date: 12/28/15 - 9:02 PM
 | 
			
		||||
 *
 | 
			
		||||
 * @author Jeroen Meulemeester
 | 
			
		||||
 */
 | 
			
		||||
public class WizardTest {
 | 
			
		||||
 | 
			
		||||
  @Test
 | 
			
		||||
  public void testToString() throws Exception {
 | 
			
		||||
    final String[] wizardNames = {"Gandalf", "Dumbledore", "Oz", "Merlin"};
 | 
			
		||||
    for (final String name : wizardNames) {
 | 
			
		||||
      assertEquals(name, new Wizard(name).toString());
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,38 @@
 | 
			
		||||
package com.iluwatar.proxy;
 | 
			
		||||
 | 
			
		||||
import org.junit.Test;
 | 
			
		||||
import org.mockito.InOrder;
 | 
			
		||||
 | 
			
		||||
import static org.mockito.Mockito.inOrder;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Date: 12/28/15 - 9:18 PM
 | 
			
		||||
 *
 | 
			
		||||
 * @author Jeroen Meulemeester
 | 
			
		||||
 */
 | 
			
		||||
public class WizardTowerProxyTest extends StdOutTest {
 | 
			
		||||
 | 
			
		||||
  @Test
 | 
			
		||||
  public void testEnter() throws Exception {
 | 
			
		||||
    final Wizard[] wizards = new Wizard[]{
 | 
			
		||||
            new Wizard("Gandalf"),
 | 
			
		||||
            new Wizard("Dumbledore"),
 | 
			
		||||
            new Wizard("Oz"),
 | 
			
		||||
            new Wizard("Merlin")
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    final WizardTowerProxy tower = new WizardTowerProxy();
 | 
			
		||||
    for (final Wizard wizard : wizards) {
 | 
			
		||||
      tower.enter(wizard);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    final InOrder inOrder = inOrder(getStdOutMock());
 | 
			
		||||
    inOrder.verify(getStdOutMock()).println("Gandalf enters the tower.");
 | 
			
		||||
    inOrder.verify(getStdOutMock()).println("Dumbledore enters the tower.");
 | 
			
		||||
    inOrder.verify(getStdOutMock()).println("Oz enters the tower.");
 | 
			
		||||
    inOrder.verify(getStdOutMock()).println("Merlin is not allowed to enter!");
 | 
			
		||||
    inOrder.verifyNoMoreInteractions();
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										38
									
								
								proxy/src/test/java/com/iluwatar/proxy/WizardTowerTest.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								proxy/src/test/java/com/iluwatar/proxy/WizardTowerTest.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
			
		||||
package com.iluwatar.proxy;
 | 
			
		||||
 | 
			
		||||
import org.junit.Test;
 | 
			
		||||
import org.mockito.InOrder;
 | 
			
		||||
 | 
			
		||||
import static org.mockito.Mockito.inOrder;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Date: 12/28/15 - 9:18 PM
 | 
			
		||||
 *
 | 
			
		||||
 * @author Jeroen Meulemeester
 | 
			
		||||
 */
 | 
			
		||||
public class WizardTowerTest extends StdOutTest {
 | 
			
		||||
 | 
			
		||||
  @Test
 | 
			
		||||
  public void testEnter() throws Exception {
 | 
			
		||||
    final Wizard[] wizards = new Wizard[]{
 | 
			
		||||
            new Wizard("Gandalf"),
 | 
			
		||||
            new Wizard("Dumbledore"),
 | 
			
		||||
            new Wizard("Oz"),
 | 
			
		||||
            new Wizard("Merlin")
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    final WizardTower tower = new WizardTower();
 | 
			
		||||
    for (final Wizard wizard : wizards) {
 | 
			
		||||
      tower.enter(wizard);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    final InOrder inOrder = inOrder(getStdOutMock());
 | 
			
		||||
    inOrder.verify(getStdOutMock()).println("Gandalf enters the tower.");
 | 
			
		||||
    inOrder.verify(getStdOutMock()).println("Dumbledore enters the tower.");
 | 
			
		||||
    inOrder.verify(getStdOutMock()).println("Oz enters the tower.");
 | 
			
		||||
    inOrder.verify(getStdOutMock()).println("Merlin enters the tower.");
 | 
			
		||||
    inOrder.verifyNoMoreInteractions();
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user