1
2
3
4
5
6
7 package org.sourceforge.jvb3d.Network;
8
9 import junit.framework.TestCase;
10 import java.net.InetAddress;
11 import java.net.InetSocketAddress;
12 import java.net.SocketAddress;
13 import java.util.NoSuchElementException;
14
15
16 /***
17 * @author £ukasz Krzy¿ak
18 *
19 * TODO To change the template for this generated type comment go to
20 * Window - Preferences - Java - Code Style - Code Templates
21 */
22 public class ReceivedPacketBufferTest extends TestCase {
23
24 static final int datagramCount = 10;
25 JoinPacket[] sendDatagrams;
26 JoinPacket[] recvDatagrams;
27
28 ReceivedPacketBuffer recvPacketBuffer;
29
30 TestObserver testObserver;
31 TestSender testSender;
32
33
34
35 protected void setUp() throws Exception {
36 super.setUp();
37 sendDatagrams = new JoinPacket[datagramCount];
38 recvDatagrams = new JoinPacket[datagramCount];
39
40 for(int i=0; i<datagramCount; i++) {
41 byte buf[] = new byte[100];
42 byte address[] = new byte[4];
43 address[0] = (byte)192; address[1] = (byte)168; address[2] = 1; address[3] = (byte)i;
44 recvDatagrams[i] = new JoinPacket();
45 recvDatagrams[i].setSourceAddress(new InetSocketAddress(InetAddress.getByAddress(address), 2000));
46 sendDatagrams[i] = new JoinPacket();
47 sendDatagrams[i].setSourceAddress(new InetSocketAddress(InetAddress.getByAddress(address), 2000));
48 }
49
50 recvPacketBuffer = new ReceivedPacketBuffer();
51 testSender = new TestSender(recvPacketBuffer);
52 testObserver = new TestObserver();
53 }
54
55
56
57
58 protected void tearDown() throws Exception {
59 recvDatagrams = null;
60 sendDatagrams = null;
61 super.tearDown();
62 }
63
64 public void testAddPacket() {
65 for(int i=0; i < datagramCount; i++) {
66 assertEquals(recvPacketBuffer.getPacketCount(), i);
67 recvPacketBuffer.addPacket(sendDatagrams[i]);
68 assertEquals(recvPacketBuffer.getPacketCount(), i+1);
69 }
70 }
71
72 public void testGetNextPacket() {
73 for(int i=0; i < datagramCount; i++)
74 recvPacketBuffer.addPacket(sendDatagrams[i]);
75 assertEquals(recvPacketBuffer.getPacketCount(), datagramCount);
76
77 for(int i=0; i < datagramCount; i++) {
78 assertEquals(recvPacketBuffer.getPacketCount(), datagramCount-i);
79 recvDatagrams[i] = (JoinPacket)recvPacketBuffer.getNextPacket();
80 InetSocketAddress dataFromDatagram = (InetSocketAddress)recvDatagrams[i].getSourceAddress();
81 byte address[] = new byte[4];
82 address[0] = (byte)192; address[1] = (byte)168; address[2] = 1; address[3] = (byte)i;
83 assertEquals(dataFromDatagram.getAddress().getHostAddress(), "192.168.1."+i);
84 }
85 assertEquals(recvPacketBuffer.getPacketCount(), 0);
86
87 try {
88 recvPacketBuffer.getNextPacket();
89 fail("Should raise a NoSuchElementException");
90
91 } catch(NoSuchElementException success) {
92
93 }
94 }
95
96 public void testNotifyObservers() {
97 recvPacketBuffer.addObserver(testObserver);
98 testSender.start();
99 JoinPacket packet = null;
100 try {
101
102 int j = 0;
103 while ((packet = (JoinPacket)testObserver.getPacket()) == null
104 && j++ < 10)
105 Thread.sleep(100);
106 }
107 catch(Exception e) {
108 fail("InterruptedException thrown "+e);
109 }
110 InetSocketAddress dataFromDatagram = (InetSocketAddress)packet.getSourceAddress();
111 assertEquals(dataFromDatagram.getAddress().getHostAddress(), "127.0.0.1");
112 }
113
114 }