1   /*
2    * Created on 2004-12-04
3    *
4    * TODO To change the template for this generated file go to
5    * Window - Preferences - Java - Code Style - Code Templates
6    */
7   package org.sourceforge.jvb3d.Network;
8   
9   import junit.framework.TestCase;
10  
11  import java.net.InetSocketAddress;
12  import java.net.SocketException;
13  import java.net.UnknownHostException;
14  import java.net.DatagramSocket;
15  import java.net.DatagramPacket;
16  import java.net.InetAddress;
17  import java.io.ByteArrayOutputStream;
18  import java.io.IOException;
19  import java.io.ObjectOutputStream;
20  
21  /***
22   * @author Develop
23   *
24   * TODO To change the template for this generated type comment go to
25   * Window - Preferences - Java - Code Style - Code Templates
26   */
27  public class NetworkReceiverTest extends TestCase {
28  	private ReceivedPacketBuffer packetBuffer = new ReceivedPacketBuffer();
29  	private DatagramSocket recvSocket;
30  	private static final int receiverPort = 2001;
31  	
32  	public void testNetworkReceiver() {
33  		NetworkReceiver receiver1 = null;
34  		try {
35  			receiver1 = new NetworkReceiver(55535);
36  		}
37  		catch(Exception e) {
38  			e.printStackTrace();
39  			fail("Exception - SocketException przy tworzeniu 1 socketa");
40  		}
41  		
42  		try {
43  			NetworkReceiver receiver2 = new NetworkReceiver(55535);
44  			fail("Utworzono dwa sockety na jednym porcie");
45  		}
46  		catch(Exception e) {
47  		}
48  		receiver1.terminate();
49  		try {
50  			NetworkReceiver receiver3 = new NetworkReceiver(55536);
51  			receiver3.terminate();
52  		}
53  		catch(Exception e) {
54  			fail("Exception - SocketException przy tworzeniu 2 socketa");
55  		}
56  	}
57  
58  	/***
59  	 * Wysy³a pakiet join na socket, i czeka a¿ zostanie odebrany
60  	 * 
61  	 */
62  	public void testRun() {
63  		try {
64  			TestObserver observer = new TestObserver();
65  			NetworkReceiver receiver = new NetworkReceiver(receiverPort);
66  			
67  			UpdatePacket sendPacket = new UpdatePacket();
68  			sendPacket.setUpdateData("update".getBytes());
69  			
70  			ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
71  			ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
72  			DatagramSocket sendSocket = new DatagramSocket();
73  			
74  			objectOutputStream.writeObject(sendPacket);
75  			DatagramPacket sendDatagramPacket = new DatagramPacket(byteArrayOutputStream.toByteArray(), byteArrayOutputStream.size(), InetAddress.getByName("localhost"), receiverPort);
76  			packetBuffer.addObserver(observer);
77  			receiver.connectToBuffer(packetBuffer);
78  			receiver.start();
79  			sendSocket.send(sendDatagramPacket);
80  			UpdatePacket packet = null;
81  			while ((packet = (UpdatePacket)observer.getPacket()) == null)
82  				Thread.sleep(100);
83  			receiver.finish();
84  			assertEquals(new String(packet.getUpdateData()), "update");
85  		}
86  		catch(Exception e) {
87  			fail(e.toString());
88  		}
89  	}
90  }