001: /*
002: * JBoss, Home of Professional Open Source.
003: * Copyright 2006, Red Hat Middleware LLC, and individual contributors
004: * as indicated by the @author tags. See the copyright.txt file in the
005: * distribution for a full listing of individual contributors.
006: *
007: * This is free software; you can redistribute it and/or modify it
008: * under the terms of the GNU Lesser General Public License as
009: * published by the Free Software Foundation; either version 2.1 of
010: * the License, or (at your option) any later version.
011: *
012: * This software is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this software; if not, write to the Free
019: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
021: */
022: package org.jboss.test.cmp2.relationship.manyToManyUnidirectional;
023:
024: import java.util.Collection;
025: import java.util.Iterator;
026: import javax.naming.InitialContext;
027: import junit.framework.Test;
028: import junit.framework.TestCase;
029: import org.jboss.test.util.ejb.EJBTestCase;
030: import org.jboss.test.JBossTestCase;
031:
032: public class ABTest extends EJBTestCase {
033: static org.apache.log4j.Category log = org.apache.log4j.Category
034: .getInstance(ABTest.class);
035:
036: public static Test suite() throws Exception {
037: return JBossTestCase.getDeploySetup(ABTest.class,
038: "cmp2-relationship.jar");
039: }
040:
041: public ABTest(String name) {
042: super (name);
043: }
044:
045: private AHome getAHome() {
046: try {
047: InitialContext jndiContext = new InitialContext();
048:
049: return (AHome) jndiContext
050: .lookup("relation/manyToMany/unidirectional/A");
051: } catch (Exception e) {
052: log.debug("failed", e);
053: fail("Exception in getAHome: " + e.getMessage());
054: }
055: return null;
056: }
057:
058: private BHome getBHome() {
059: try {
060: InitialContext jndiContext = new InitialContext();
061:
062: return (BHome) jndiContext
063: .lookup("relation/manyToMany/unidirectional/B");
064: } catch (Exception e) {
065: log.debug("failed", e);
066: fail("Exception in getBHome: " + e.getMessage());
067: }
068: return null;
069: }
070:
071: // a1.setB(a3.getB());
072: public void test_a1SetB_a3GetB() throws Exception {
073: AHome aHome = getAHome();
074: BHome bHome = getBHome();
075:
076: // Before change:
077: A a1 = aHome.create(new Integer(1));
078: A a2 = aHome.create(new Integer(2));
079: A a3 = aHome.create(new Integer(3));
080: A a4 = aHome.create(new Integer(4));
081: A a5 = aHome.create(new Integer(5));
082:
083: B b1 = bHome.create(new Integer(-1));
084: B b2 = bHome.create(new Integer(-2));
085: B b3 = bHome.create(new Integer(-3));
086: B b4 = bHome.create(new Integer(-4));
087: B b5 = bHome.create(new Integer(-5));
088:
089: a1.getB().add(b1);
090: a1.getB().add(b2);
091: a2.getB().add(b1);
092: a2.getB().add(b2);
093: a2.getB().add(b3);
094: a3.getB().add(b2);
095: a3.getB().add(b3);
096: a3.getB().add(b4);
097: a4.getB().add(b3);
098: a4.getB().add(b4);
099: a4.getB().add(b5);
100: a5.getB().add(b4);
101: a5.getB().add(b5);
102:
103: assertTrue(a1.getB().contains(b1));
104: assertTrue(a1.getB().contains(b2));
105: assertTrue(a2.getB().contains(b1));
106: assertTrue(a2.getB().contains(b2));
107: assertTrue(a2.getB().contains(b3));
108: assertTrue(a3.getB().contains(b2));
109: assertTrue(a3.getB().contains(b3));
110: assertTrue(a3.getB().contains(b4));
111: assertTrue(a4.getB().contains(b3));
112: assertTrue(a4.getB().contains(b4));
113: assertTrue(a4.getB().contains(b5));
114: assertTrue(a5.getB().contains(b4));
115: assertTrue(a5.getB().contains(b5));
116:
117: // Change:
118: a1.setB(a3.getB());
119:
120: // Expected result:
121: assertTrue(!a1.getB().contains(b1));
122: assertTrue(a1.getB().contains(b2));
123: assertTrue(a1.getB().contains(b3));
124: assertTrue(a1.getB().contains(b4));
125:
126: assertTrue(a2.getB().contains(b1));
127: assertTrue(a2.getB().contains(b2));
128: assertTrue(a2.getB().contains(b3));
129:
130: assertTrue(a3.getB().contains(b2));
131: assertTrue(a3.getB().contains(b3));
132: assertTrue(a3.getB().contains(b4));
133:
134: assertTrue(a4.getB().contains(b3));
135: assertTrue(a4.getB().contains(b4));
136: assertTrue(a4.getB().contains(b5));
137:
138: assertTrue(a5.getB().contains(b4));
139: assertTrue(a5.getB().contains(b5));
140: }
141:
142: // a1.getB().add(b3);
143: public void test_a1GetB_addB3() throws Exception {
144: AHome aHome = getAHome();
145: BHome bHome = getBHome();
146:
147: // Before change:
148: A a1 = aHome.create(new Integer(1));
149: A a2 = aHome.create(new Integer(2));
150: A a3 = aHome.create(new Integer(3));
151: A a4 = aHome.create(new Integer(4));
152: A a5 = aHome.create(new Integer(5));
153:
154: B b1 = bHome.create(new Integer(-1));
155: B b2 = bHome.create(new Integer(-2));
156: B b3 = bHome.create(new Integer(-3));
157: B b4 = bHome.create(new Integer(-4));
158: B b5 = bHome.create(new Integer(-5));
159:
160: a1.getB().add(b1);
161: a1.getB().add(b2);
162: a2.getB().add(b1);
163: a2.getB().add(b2);
164: a2.getB().add(b3);
165: a3.getB().add(b2);
166: a3.getB().add(b3);
167: a3.getB().add(b4);
168: a4.getB().add(b3);
169: a4.getB().add(b4);
170: a4.getB().add(b5);
171: a5.getB().add(b4);
172: a5.getB().add(b5);
173:
174: assertTrue(a1.getB().contains(b1));
175: assertTrue(a1.getB().contains(b2));
176: assertTrue(a2.getB().contains(b1));
177: assertTrue(a2.getB().contains(b2));
178: assertTrue(a2.getB().contains(b3));
179: assertTrue(a3.getB().contains(b2));
180: assertTrue(a3.getB().contains(b3));
181: assertTrue(a3.getB().contains(b4));
182: assertTrue(a4.getB().contains(b3));
183: assertTrue(a4.getB().contains(b4));
184: assertTrue(a4.getB().contains(b5));
185: assertTrue(a5.getB().contains(b4));
186: assertTrue(a5.getB().contains(b5));
187:
188: // Change:
189: a1.getB().add(b3);
190:
191: // Expected result:
192: assertTrue(a1.getB().contains(b1));
193: assertTrue(a1.getB().contains(b2));
194: assertTrue(a1.getB().contains(b3));
195:
196: assertTrue(a2.getB().contains(b1));
197: assertTrue(a2.getB().contains(b2));
198: assertTrue(a2.getB().contains(b3));
199:
200: assertTrue(a3.getB().contains(b2));
201: assertTrue(a3.getB().contains(b3));
202: assertTrue(a3.getB().contains(b4));
203:
204: assertTrue(a4.getB().contains(b3));
205: assertTrue(a4.getB().contains(b4));
206: assertTrue(a4.getB().contains(b5));
207:
208: assertTrue(a5.getB().contains(b4));
209: assertTrue(a5.getB().contains(b5));
210: }
211:
212: // a2.getB().remove(b2);
213: public void test_a2GetB_removeB2() throws Exception {
214: AHome aHome = getAHome();
215: BHome bHome = getBHome();
216:
217: // Before change:
218: A a1 = aHome.create(new Integer(1));
219: A a2 = aHome.create(new Integer(2));
220: A a3 = aHome.create(new Integer(3));
221: A a4 = aHome.create(new Integer(4));
222: A a5 = aHome.create(new Integer(5));
223:
224: B b1 = bHome.create(new Integer(-1));
225: B b2 = bHome.create(new Integer(-2));
226: B b3 = bHome.create(new Integer(-3));
227: B b4 = bHome.create(new Integer(-4));
228: B b5 = bHome.create(new Integer(-5));
229:
230: a1.getB().add(b1);
231: a1.getB().add(b2);
232: a2.getB().add(b1);
233: a2.getB().add(b2);
234: a2.getB().add(b3);
235: a3.getB().add(b2);
236: a3.getB().add(b3);
237: a3.getB().add(b4);
238: a4.getB().add(b3);
239: a4.getB().add(b4);
240: a4.getB().add(b5);
241: a5.getB().add(b4);
242: a5.getB().add(b5);
243:
244: assertTrue(a1.getB().contains(b1));
245: assertTrue(a1.getB().contains(b2));
246: assertTrue(a2.getB().contains(b1));
247: assertTrue(a2.getB().contains(b2));
248: assertTrue(a2.getB().contains(b3));
249: assertTrue(a3.getB().contains(b2));
250: assertTrue(a3.getB().contains(b3));
251: assertTrue(a3.getB().contains(b4));
252: assertTrue(a4.getB().contains(b3));
253: assertTrue(a4.getB().contains(b4));
254: assertTrue(a4.getB().contains(b5));
255: assertTrue(a5.getB().contains(b4));
256: assertTrue(a5.getB().contains(b5));
257:
258: // Change:
259: a2.getB().remove(b2);
260:
261: // Expected result:
262: assertTrue(a1.getB().contains(b1));
263: assertTrue(a1.getB().contains(b2));
264:
265: assertTrue(a2.getB().contains(b1));
266: assertTrue(!a2.getB().contains(b2));
267: assertTrue(a2.getB().contains(b3));
268:
269: assertTrue(a3.getB().contains(b2));
270: assertTrue(a3.getB().contains(b3));
271: assertTrue(a3.getB().contains(b4));
272:
273: assertTrue(a4.getB().contains(b3));
274: assertTrue(a4.getB().contains(b4));
275: assertTrue(a4.getB().contains(b5));
276:
277: assertTrue(a5.getB().contains(b4));
278: assertTrue(a5.getB().contains(b5));
279: }
280:
281: public void setUpEJB() throws Exception {
282: deleteAllAsAndBs(getAHome(), getBHome());
283: }
284:
285: public void tearDownEJB() throws Exception {
286: }
287:
288: public void deleteAllAsAndBs(AHome aHome, BHome bHome)
289: throws Exception {
290: // delete all As
291: Iterator currentAs = aHome.findAll().iterator();
292: while (currentAs.hasNext()) {
293: A a = (A) currentAs.next();
294: a.remove();
295: }
296:
297: // delete all Bs
298: Iterator currentBs = bHome.findAll().iterator();
299: while (currentBs.hasNext()) {
300: B b = (B) currentBs.next();
301: b.remove();
302: }
303: }
304: }
|