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.awt.GraphicsConfiguration;
10  import java.net.InetSocketAddress;
11  
12  import javax.media.j3d.Canvas3D;
13  
14  import org.sourceforge.jvb3d.Model.IModelNetwork;
15  import org.sourceforge.jvb3d.Model.Model;
16  
17  import com.sun.j3d.utils.universe.SimpleUniverse;
18  
19  import junit.framework.TestCase;
20  
21  /***
22   * @author Develop
23   * 
24   * TODO To change the template for this generated type comment go to Window -
25   * Preferences - Java - Code Style - Code Templates
26   */
27  public class ClientServerTest extends TestCase {
28  	static IModelNetwork modelInterface;
29  	
30  	class TestClient extends Thread {
31  		NetworkClientFacade networkFacade;
32  
33  		boolean terminated = false;
34  		
35  		String avatar;
36  
37  		TestClient() {
38  			NetworkClientFacadeHolder.setNetworkFacade(new ClientFacade());
39  			networkFacade = NetworkClientFacadeHolder.getNetworkFacade();
40  			networkFacade.setModelInterface(modelInterface);
41  		}
42  
43  		public void run() {
44  			try {
45  				avatar = networkFacade.join(new InetSocketAddress(
46  						"localhost", 4000));
47  				assertEquals("Otrzymano z³y ID klienta od serwera", avatar, "0");
48  				networkFacade.sendUpdate("0");
49  				terminated = true;
50  			} catch (Exception e) {
51  				e.printStackTrace();
52  			}
53  		}
54  	}
55  
56  	class TestServer extends Thread {
57  		NetworkServerFacade networkFacade;
58  
59  		boolean terminated = false;
60  
61  		TestServer() {
62  			NetworkServerFacadeHolder.setNetworkFacade(new ServerFacade());
63  			networkFacade = NetworkServerFacadeHolder.getNetworkFacade();
64  			networkFacade.setModelInterface(modelInterface);
65  		}
66  
67  		public void run() {
68  			try {
69  				networkFacade.start(4000);
70  				Thread.sleep(300);
71  				networkFacade.sendAllUpdate();
72  				Thread.sleep(3000);
73  				terminated = true;
74  			} catch (Exception e) {
75  				e.printStackTrace();
76  			}
77  		}
78  	}
79  	
80  	protected void setUp() throws Exception {
81  		super.setUp();
82  		GraphicsConfiguration config =
83  	           SimpleUniverse.getPreferredConfiguration();
84  
85  	    Canvas3D canvas3D = new Canvas3D(config);
86  	    //modelInterface = new TestModel(new Model(canvas3D,"test"));
87  	    modelInterface = new Model(canvas3D,false);
88  	}
89  
90  	/*
91  	 * @see TestCase#tearDown()
92  	 */
93  	protected void tearDown() throws Exception {
94  		modelInterface = null;
95  		super.tearDown();
96  	}
97  	
98  	public void testRun() throws Exception {
99  		TestClient client = new TestClient();
100 		TestServer server = new TestServer();
101 		server.start();
102 		client.start();
103 		while (!client.terminated && !server.terminated)
104 			Thread.sleep(1000);
105 	}
106 }