View Javadoc

1   /*
2    * EL4J, the Extension Library for the J2EE, adds incremental enhancements to
3    * the spring framework, http://el4j.sf.net
4    * Copyright (C) 2005 by ELCA Informatique SA, Av. de la Harpe 22-24,
5    * 1000 Lausanne, Switzerland, http://www.elca.ch
6    *
7    * EL4J is published under the GNU Lesser General Public License (LGPL)
8    * Version 2.1. See http://www.gnu.org/licenses/
9    *
10   * This program is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13   * GNU Lesser General Public License for more details.
14   *
15   * For alternative licensing, please contact info@elca.ch
16   */
17  
18  package ch.elca.el4j.tests.core.contextpassing;
19  
20  import static org.junit.Assert.assertEquals;
21  import static org.junit.Assert.assertFalse;
22  
23  import java.util.HashMap;
24  import java.util.Map;
25  
26  import org.junit.Test;
27  
28  import ch.elca.el4j.core.contextpassing.DefaultImplicitContextPassingRegistry;
29  
30  /**
31   * This class tests the context passing classes.
32   *
33   * @svnLink $Revision: 3873 $;$Date: 2009-08-04 13:59:45 +0200 (Di, 04. Aug 2009) $;$Author: swismer $;$URL: https://el4j.svn.sourceforge.net/svnroot/el4j/branches/el4j_3_1/el4j/framework/modules/core/src/test/java/ch/elca/el4j/tests/core/contextpassing/ContextPassingTest.java $
34   *
35   * @author Martin Zeltner (MZE)
36   */
37  public class ContextPassingTest {
38  
39  	/**
40  	 * This test simulates implicit context passing with two registered passers
41  	 * on server and client side.
42  	 */
43  	@Test
44  	public void testTwoRegisteredPassersOnBothSides() {
45  		ImplicitContextPasserA passerClientA = new ImplicitContextPasserA();
46  		ImplicitContextPasserB passerClientB = new ImplicitContextPasserB();
47  		DefaultImplicitContextPassingRegistry registryClient
48  			= new DefaultImplicitContextPassingRegistry();
49  		passerClientA.setImplicitContextPassingRegistry(registryClient);
50  		passerClientB.setImplicitContextPassingRegistry(registryClient);
51  
52  		ImplicitContextPasserA passerServerA = new ImplicitContextPasserA();
53  		ImplicitContextPasserB passerServerB = new ImplicitContextPasserB();
54  		DefaultImplicitContextPassingRegistry registryServer
55  			= new DefaultImplicitContextPassingRegistry();
56  		passerServerA.setImplicitContextPassingRegistry(registryServer);
57  		passerServerB.setImplicitContextPassingRegistry(registryServer);
58  
59  		Map contextClient = registryClient.getAssembledImplicitContext();
60  		Map contextServer = new HashMap(contextClient);
61  		registryServer.pushAssembledImplicitContext(contextServer);
62  
63  		String sentDataA = passerClientA.getTestData();
64  		String receivedDataA = passerServerA.getReceivedData();
65  		assertEquals("Sent and received data of passer A is not the same.",
66  				sentDataA, receivedDataA);
67  
68  		double sentDataB = passerClientB.getTestData();
69  		double receivedDataB = passerServerB.getReceivedData();
70  		assertEquals("Sent and received data of passer B is not the same.",
71  				sentDataB, receivedDataB, 0);
72  	}
73  
74  	/**
75  	 * This test simulates implicit context passing with two registered passers
76  	 * on client and only one on server side.
77  	 */
78  	@Test
79  	public void testTwoRegisteredPassersOnClientSideAndOneOnServerSide() {
80  		ImplicitContextPasserA passerClientA = new ImplicitContextPasserA();
81  		ImplicitContextPasserB passerClientB = new ImplicitContextPasserB();
82  		DefaultImplicitContextPassingRegistry registryClient
83  			= new DefaultImplicitContextPassingRegistry();
84  		passerClientA.setImplicitContextPassingRegistry(registryClient);
85  		passerClientB.setImplicitContextPassingRegistry(registryClient);
86  
87  		ImplicitContextPasserA passerServerA = new ImplicitContextPasserA();
88  		ImplicitContextPasserB passerServerB = new ImplicitContextPasserB();
89  		DefaultImplicitContextPassingRegistry registryServer
90  			= new DefaultImplicitContextPassingRegistry();
91  		//passerServerA.setImplicitContextPassingRegistry(registryServer);
92  		passerServerB.setImplicitContextPassingRegistry(registryServer);
93  
94  		Map contextClient = registryClient.getAssembledImplicitContext();
95  		Map contextServer = new HashMap(contextClient);
96  		registryServer.pushAssembledImplicitContext(contextServer);
97  
98  		String sentDataA = passerClientA.getTestData();
99  		String receivedDataA = passerServerA.getReceivedData();
100 		assertFalse("Sent and received data of passer A is the same!",
101 				sentDataA.equals(receivedDataA));
102 
103 		double sentDataB = passerClientB.getTestData();
104 		double receivedDataB = passerServerB.getReceivedData();
105 		assertEquals("Sent and received data of passer B is not the same.",
106 				sentDataB, receivedDataB, 0);
107 	}
108 
109 	/**
110 	 * This test simulates implicit context passing with one registered passer
111 	 * on client and two on server side.
112 	 */
113 	@Test
114 	public void testOneRegisteredPasserOnClientSideAndTwoOnServerSide() {
115 		ImplicitContextPasserA passerClientA = new ImplicitContextPasserA();
116 		ImplicitContextPasserB passerClientB = new ImplicitContextPasserB();
117 		DefaultImplicitContextPassingRegistry registryClient
118 			= new DefaultImplicitContextPassingRegistry();
119 		passerClientA.setImplicitContextPassingRegistry(registryClient);
120 		//passerClientB.setImplicitContextPassingRegistry(registryClient);
121 
122 		ImplicitContextPasserA passerServerA = new ImplicitContextPasserA();
123 		ImplicitContextPasserB passerServerB = new ImplicitContextPasserB();
124 		DefaultImplicitContextPassingRegistry registryServer
125 			= new DefaultImplicitContextPassingRegistry();
126 		passerServerA.setImplicitContextPassingRegistry(registryServer);
127 		passerServerB.setImplicitContextPassingRegistry(registryServer);
128 
129 		Map contextClient = registryClient.getAssembledImplicitContext();
130 		Map contextServer = new HashMap(contextClient);
131 		registryServer.pushAssembledImplicitContext(contextServer);
132 
133 		String sentDataA = passerClientA.getTestData();
134 		String receivedDataA = passerServerA.getReceivedData();
135 		assertEquals("Sent and received data of passer A is not the same.",
136 				sentDataA, receivedDataA);
137 
138 		double sentDataB = passerClientB.getTestData();
139 		double receivedDataB = passerServerB.getReceivedData();
140 		assertFalse("Sent and received data of passer B is the same!",
141 				sentDataB == receivedDataB);
142 	}
143 
144 	/**
145 	 * This test uses the <code>DefaultImplicitContextPassingRegistry</code>
146 	 * without any registered passers.
147 	 */
148 	@Test
149 	public void testDefaultImplicitContextPassingRegistryStandalone() {
150 		ImplicitContextPasserA passerClientA = new ImplicitContextPasserA();
151 		ImplicitContextPasserB passerClientB = new ImplicitContextPasserB();
152 		DefaultImplicitContextPassingRegistry registryClient
153 			= new DefaultImplicitContextPassingRegistry();
154 		//passerClientA.setImplicitContextPassingRegistry(registryClient);
155 		//passerClientB.setImplicitContextPassingRegistry(registryClient);
156 
157 		ImplicitContextPasserA passerServerA = new ImplicitContextPasserA();
158 		ImplicitContextPasserB passerServerB = new ImplicitContextPasserB();
159 		DefaultImplicitContextPassingRegistry registryServer
160 			= new DefaultImplicitContextPassingRegistry();
161 		//passerServerA.setImplicitContextPassingRegistry(registryServer);
162 		//passerServerB.setImplicitContextPassingRegistry(registryServer);
163 
164 		Map contextClient = registryClient.getAssembledImplicitContext();
165 		Map contextServer = new HashMap(contextClient);
166 		registryServer.pushAssembledImplicitContext(contextServer);
167 
168 		String sentDataA = passerClientA.getTestData();
169 		String receivedDataA = passerServerA.getReceivedData();
170 		assertFalse("Sent and received data of passer A is the same!",
171 				sentDataA.equals(receivedDataA));
172 
173 		double sentDataB = passerClientB.getTestData();
174 		double receivedDataB = passerServerB.getReceivedData();
175 		assertFalse("Sent and received data of passer B is the same!",
176 				sentDataB == receivedDataB);
177 	}
178 }