1   /*
2    * Created on 2004-12-22
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 java.io.ByteArrayInputStream;
10  import java.net.DatagramPacket;
11  import java.net.DatagramSocket;
12  import java.net.InetAddress;
13  import java.net.InetSocketAddress;
14  import java.net.SocketAddress;
15  
16  import junit.framework.TestCase;
17  
18  /***
19   * @author Develop
20   * 
21   * TODO To change the template for this generated type comment go to Window -
22   * Preferences - Java - Code Style - Code Templates
23   */
24  public class ServerDataTest extends TestCase {
25  	boolean connectReceived = false;
26  
27  	class TestClient extends Thread {
28  		ServerData serverdata;
29  
30  		String connectData;
31  
32  		ServerDataTest parent;
33  
34  		public TestClient(ServerDataTest test) {
35  			parent = test;
36  		}
37  
38  		public void run() {
39  			try {
40  				//tworzymy nowy testowany obiekt
41  				serverdata = new ServerData();
42  
43  				//tworzymy socketa na którym będzie on słuchać
44  				NetworkReceiver clientReceiver = new NetworkReceiver(0);
45  				ReceivedPacketBuffer clientBuffer = new ReceivedPacketBuffer();
46  				clientReceiver.connectToBuffer(clientBuffer);
47  				clientBuffer.addObserver(serverdata);
48  				clientReceiver.start();
49  
50  				//odpalamy testowaną metodę
51  				connectData = serverdata.join(serverAddress);
52  				parent.connectReceived = true;
53  			} catch (Exception e) {
54  
55  			}
56  		}
57  	}
58  
59  	NetworkReceiver receiver;
60  
61  	ReceivedPacketBuffer buffer;
62  
63  	NetworkSender sender;
64  
65  	InetSocketAddress serverAddress = new InetSocketAddress("localhost", 4000);
66  
67  	TestObserver observer;
68  
69  	TestClientFacade clientFacade;
70  
71  	/*
72  	 * @see TestCase#setUp()
73  	 */
74  	protected void setUp() throws Exception {
75  		super.setUp();
76  
77  		NetworkClientFacadeHolder.setNetworkFacade(new TestClientFacade());
78  		clientFacade = (TestClientFacade) NetworkClientFacadeHolder
79  				.getNetworkFacade();
80  
81  		buffer = new ReceivedPacketBuffer();
82  		sender = new NetworkSender();
83  	}
84  
85  	/*
86  	 * @see TestCase#tearDown()
87  	 */
88  	protected void tearDown() throws Exception {
89  		receiver = null;
90  		buffer = null;
91  		observer = null;
92  		sender = null;
93  		super.tearDown();
94  	}
95  
96  	public void testServerData() {
97  
98  	}
99  
100 	public void testJoin() throws Exception {
101 		/*receiver = new NetworkReceiver(4000);
102 		receiver.connectToBuffer(buffer);
103 		observer = new TestObserver();
104 		buffer.addObserver(observer);
105 
106 		receiver.start();
107 		TestClient client = new TestClient(this);
108 		client.start();
109 
110 		JoinPacket packet = null;
111 		while ((packet = (JoinPacket) observer.getPacket()) == null)
112 			;
113 		assertEquals("Niepoprawne dane odebrane z JoinPacket", packet
114 				.getSourceAddress().getAddress().getHostName(), "localhost");
115 
116 		ConnectPacket connectPacket = new ConnectPacket();
117 		connectPacket.setAvatarID("avatar0");
118 		sender
119 				.send(connectPacket, packet.getSourceAddress().getAddress(),
120 						2000);
121 		while (!connectReceived)
122 			;
123 		assertEquals("Niepoprawne dane zwrócone przez join klienta", "avatar0",
124 				client.connectData);
125 */
126 	}
127 
128 	public void testUpdate() throws Exception {
129 /*
130 		ServerData serverData = new ServerData();
131 		buffer.addObserver(serverData);
132 		UpdatePacket updatePacket = new UpdatePacket();
133 		updatePacket.setUpdateData("update".getBytes());
134 		updatePacket.setSeqNumber(1);
135 		assertEquals("Zagubione pakiety w buforze", buffer.getPacketCount(), 0);
136 
137 		buffer.addPacket(updatePacket); //dodajemy pakiet "update" z
138 		// localhosta
139 		buffer.notifyObservers();
140 		assertEquals("Błedny pakiet przesłany przez fasadę", new String(
141 				clientFacade.getLastUpdate().getUpdateData()), "update");
142 
143 		updatePacket.setUpdateData("update".getBytes());
144 		updatePacket.setSeqNumber(2);
145 		buffer.addPacket(updatePacket); //dodajemy pakiet "update" z
146 		// localhosta
147 		buffer.notifyObservers(); //i wysyłamy go do ClientManagera
148 
149 		assertEquals("Błedny pakiet przesłany przez fasadę", new String(
150 				clientFacade.getLastUpdate().getUpdateData()), "update");
151 
152 		//trzeci pakiet dla localhosta - z mniejszym numerem seq niż ostatni
153 		updatePacket.setSourceAddress(new InetSocketAddress(InetAddress
154 				.getByName("localhost"), 2000));
155 		updatePacket.setUpdateData("update".getBytes());
156 		updatePacket.setSeqNumber(1);
157 		buffer.addPacket(updatePacket); //dodajemy pakiet "update" z
158 		// localhosta
159 		buffer.notifyObservers(); //i wysyłamy go do ClientManagera*/
160 	}
161 
162 	public void testSendUpdate() throws Exception {
163 		/*receiver = new NetworkReceiver(3000);
164 		receiver.connectToBuffer(buffer);
165 		observer = new TestObserver();
166 		buffer.addObserver(observer);
167 
168 		receiver.start();
169 
170 		UpdatePacket packet;
171 
172 		ServerData serverData = new ServerData();
173 		serverData.setServerAddress(new InetSocketAddress("localhost", 3000));
174 		serverData.sendUpdate("update1".getBytes());
175 		while ((packet = (UpdatePacket) observer.getPacket()) == null)
176 			;
177 		assertEquals("Błędna zawartość pakietu update 1", new String(packet
178 				.getUpdateData()), "update1");
179 
180 		serverData.sendUpdate("update2".getBytes());
181 		while ((packet = (UpdatePacket) observer.getPacket()) == null)
182 			;
183 		assertEquals("Błędna zawartość pakietu update 1", new String(packet
184 				.getUpdateData()), "update2");
185 
186 		serverData.sendUpdate("update3".getBytes());
187 		serverData.sendUpdate("update4".getBytes());
188 		while ((packet = (UpdatePacket) observer.getPacket()) == null)
189 			;
190 		assertEquals("Błędna zawartość pakietu update 1", new String(packet
191 				.getUpdateData()), "update4");*/
192 	}
193 
194 }