TestExample.java
01 /*
02  * Created on Jun 28, 2004
03  *
04  * To change the template for this generated file go to
05  * Window - Preferences - Java - Code Generation - Code and Comments
06  */
07 package biz.xsoftware.examples.socket;
08 
09 import java.io.IOException;
10 import java.nio.ByteBuffer;
11 
12 import junit.framework.TestCase;
13 import biz.xsoftware.mock.CalledMethod;
14 import biz.xsoftware.mock.MockObject;
15 import biz.xsoftware.mock.MockObjectFactory;
16 
17 /**
18  * JUnit Suite of TestCases for demonstrating mocking out socket
19  * interfaces to test network failures.
20  
21  @author Dean Hiller
22  */
23 public class TestExample extends TestCase {
24   
25   private SysUnderTest sysUnderTest;
26   private MockObject mockSubsys;
27   private MockObject mockSocket;
28 
29   /**
30    * @showcode
31    */
32   public TestExample(String name) {
33     super(name);
34   }
35   /**
36    * @showcode
37    */
38   public void setUp() throws Exception {
39     mockSubsys = MockObjectFactory.createMock(OtherSubsystem.class);
40     mockSocket = MockObjectFactory.createMock(TCPSocket.class);
41     
42     sysUnderTest = new SysUnderTest((TCPSocket)mockSocket, (OtherSubsystem)mockSubsys);
43   }
44   /**
45    * @showcode
46    */
47   public void tearDown() throws IOException {
48 
49   }
50   
51   /**
52    * Test that upon network problems like IOException when writing to server
53    * that other subsystems get cleaned up properly.  The simple test below 
54    * shows how this can be done and extended to more complicated network
55    * recovery algorithms.
56    
57    * @showcode
58    */
59   public void testNetworkProblems() {
60     mockSocket.addThrowException("write"new IOException("problems writing to server"));
61     ByteBuffer buffer = ByteBuffer.allocate(100);
62     buffer.put(new byte[] { 1234});
63     buffer.flip();
64     mockSubsys.addReturnValue("getUserData", buffer);
65     
66     int id = 10;
67     sysUnderTest.sendUserToServer(10);
68     
69     CalledMethod[] methods = mockSubsys.expect("getUserData""failedToSendUser");
70     CalledMethod getUserData = methods[0];
71     CalledMethod failedToSend = methods[1];
72     
73     assertEquals(new Integer(id), getUserData.getAllParams()[0]);
74     assertEquals(new Integer(id), failedToSend.getParameter(0));
75   }
76 
77   
78 }