/**
* <copyright>
*
* Copyright (c) 2010 Springsite BV (The Netherlands) and others
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Martin Taal - Initial API and implementation
*
* </copyright>
*
* $Id: TestBidirectionalAssociationSupport.java,v 1.2 2011/08/25 12:42:19 mtaal Exp $
*/
package org.eclipse.emf.texo.test;
import junit.framework.TestCase;
import org.eclipse.emf.texo.test.model.issues.bz371509.Bz371509ModelPackage;
import org.eclipse.emf.texo.test.model.issues.bz371509.EClass0;
import org.eclipse.emf.texo.test.model.issues.bz371509.EClass1;
/**
* Tests support of bi-directional associations.
*
* @author <a href="mailto:mtaal@elver.org">Martin Taal</a>
* @version $Revision: 1.2 $
*/
public class TestBidirectionalAssociationSupport extends TestCase {
public void testManyBidirectionalAssociations() {
final EClass0 c0_0 = Bz371509ModelPackage.INSTANCE.getModelFactory().createEClass0();
final EClass1 c1_0 = Bz371509ModelPackage.INSTANCE.getModelFactory().createEClass1();
final EClass0 c0_1 = Bz371509ModelPackage.INSTANCE.getModelFactory().createEClass0();
final EClass1 c1_1 = Bz371509ModelPackage.INSTANCE.getModelFactory().createEClass1();
final EClass0 c0_2 = Bz371509ModelPackage.INSTANCE.getModelFactory().createEClass0();
final EClass1 c1_2 = Bz371509ModelPackage.INSTANCE.getModelFactory().createEClass1();
// set one, check many
c0_0.setToClass1(c1_0);
assertTrue(c1_0.getToClass0().contains(c0_0));
// add to many, check one
c1_0.addToToClass0(c0_1);
assertTrue(c0_1.getToClass1() == c1_0);
// clear one, check many
c0_0.setToClass1(null);
assertFalse(c1_0.getToClass0().contains(c0_0));
assertTrue(c1_0.getToClass0().size() == 1);
// replace one, check many
assertTrue(c1_0.getToClass0().contains(c0_1));
c0_1.setToClass1(c1_1);
assertFalse(c1_0.getToClass0().contains(c0_1));
assertTrue(c1_1.getToClass0().contains(c0_1));
// and back
c1_0.addToToClass0(c0_1);
assertTrue(c1_0.getToClass0().contains(c0_1));
assertFalse(c1_1.getToClass0().contains(c0_1));
// many-to-many
c0_2.addToMany(c1_2);
c0_1.addToMany(c1_2);
assertTrue(c1_2.getMany().contains(c0_2));
assertTrue(c1_2.getMany().contains(c0_1));
c0_1.removeFromMany(c1_2);
assertFalse(c1_2.getMany().contains(c0_1));
}
}