/*******************************************************************************
* Copyright (c) 2004, 2008 John Krasnay 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:
* John Krasnay - initial API and implementation
*******************************************************************************/
package test.net.sf.vex.eclipse;
import java.util.Collection;
import junit.framework.TestCase;
import net.sf.vex.editor.Association;
public class AssociationTest extends TestCase {
public void testAddRemove() throws Exception {
Association assoc = new Association();
Collection c;
c = assoc.getRightsForLeft("l0");
assertNotNull(c);
assertEquals(0, c.size());
c = assoc.getLeftsForRight("r0");
assertNotNull(c);
assertEquals(0, c.size());
assoc.add("l0", "r0");
c = assoc.getRightsForLeft("l0");
assertNotNull(c);
assertEquals(1, c.size());
assertEquals("r0", c.toArray()[0]);
c = assoc.getLeftsForRight("r0");
assertNotNull(c);
assertEquals(1, c.size());
assertEquals("l0", c.toArray()[0]);
assoc.add("l0", "r1");
assoc.add("l1", "r0");
assoc.add("l1", "r1");
c = assoc.getRightsForLeft("l0");
assertNotNull(c);
assertEquals(2, c.size());
assertTrue(c.contains("r0"));
assertTrue(c.contains("r1"));
c = assoc.getRightsForLeft("l1");
assertNotNull(c);
assertEquals(2, c.size());
assertTrue(c.contains("r0"));
assertTrue(c.contains("r1"));
c = assoc.getLeftsForRight("r0");
assertNotNull(c);
assertEquals(2, c.size());
assertTrue(c.contains("l0"));
assertTrue(c.contains("l1"));
c = assoc.getLeftsForRight("r1");
assertNotNull(c);
assertEquals(2, c.size());
assertTrue(c.contains("l0"));
assertTrue(c.contains("l1"));
assoc.remove("l0", "r0");
c = assoc.getRightsForLeft("l0");
assertNotNull(c);
assertEquals(1, c.size());
assertTrue(c.contains("r1"));
c = assoc.getRightsForLeft("l1");
assertNotNull(c);
assertEquals(2, c.size());
assertTrue(c.contains("r0"));
assertTrue(c.contains("r1"));
c = assoc.getLeftsForRight("r0");
assertNotNull(c);
assertEquals(1, c.size());
assertTrue(c.contains("l1"));
c = assoc.getLeftsForRight("r1");
assertNotNull(c);
assertEquals(2, c.size());
assertTrue(c.contains("l0"));
assertTrue(c.contains("l1"));
assoc.remove("l0", "r1");
c = assoc.getRightsForLeft("l0");
assertNotNull(c);
assertEquals(0, c.size());
c = assoc.getRightsForLeft("l1");
assertNotNull(c);
assertEquals(2, c.size());
assertTrue(c.contains("r0"));
assertTrue(c.contains("r1"));
c = assoc.getLeftsForRight("r0");
assertNotNull(c);
assertEquals(1, c.size());
assertTrue(c.contains("l1"));
c = assoc.getLeftsForRight("r1");
assertNotNull(c);
assertEquals(1, c.size());
assertTrue(c.contains("l1"));
assoc.remove("l1", "r0");
c = assoc.getRightsForLeft("l0");
assertNotNull(c);
assertEquals(0, c.size());
c = assoc.getRightsForLeft("l1");
assertNotNull(c);
assertEquals(1, c.size());
assertTrue(c.contains("r1"));
c = assoc.getLeftsForRight("r0");
assertNotNull(c);
assertEquals(0, c.size());
c = assoc.getLeftsForRight("r1");
assertNotNull(c);
assertEquals(1, c.size());
assertTrue(c.contains("l1"));
assoc.remove("l1", "r1");
c = assoc.getRightsForLeft("l0");
assertNotNull(c);
assertEquals(0, c.size());
c = assoc.getRightsForLeft("l1");
assertNotNull(c);
assertEquals(0, c.size());
c = assoc.getLeftsForRight("r0");
assertNotNull(c);
assertEquals(0, c.size());
c = assoc.getLeftsForRight("r1");
assertNotNull(c);
assertEquals(0, c.size());
}
public void testRemoveLeft() throws Exception {
Association assoc = new Association();
Collection c;
assoc.add("l0", "r0");
assoc.add("l0", "r1");
assoc.add("l1", "r0");
assoc.add("l1", "r1");
// These should be no-ops
assoc.removeLeft("r0");
assoc.removeLeft("r1");
assoc.removeRight("l0");
assoc.removeRight("l1");
c = assoc.getRightsForLeft("l0");
assertNotNull(c);
assertEquals(2, c.size());
assertTrue(c.contains("r0"));
assertTrue(c.contains("r1"));
c = assoc.getRightsForLeft("l1");
assertNotNull(c);
assertEquals(2, c.size());
assertTrue(c.contains("r0"));
assertTrue(c.contains("r1"));
c = assoc.getLeftsForRight("r0");
assertNotNull(c);
assertEquals(2, c.size());
assertTrue(c.contains("l0"));
assertTrue(c.contains("l1"));
c = assoc.getLeftsForRight("r1");
assertNotNull(c);
assertEquals(2, c.size());
assertTrue(c.contains("l0"));
assertTrue(c.contains("l1"));
assoc.removeLeft("l0");
c = assoc.getRightsForLeft("l0");
assertNotNull(c);
assertEquals(0, c.size());
c = assoc.getRightsForLeft("l1");
assertNotNull(c);
assertEquals(2, c.size());
assertTrue(c.contains("r0"));
assertTrue(c.contains("r1"));
c = assoc.getLeftsForRight("r0");
assertNotNull(c);
assertEquals(1, c.size());
assertTrue(c.contains("l1"));
c = assoc.getLeftsForRight("r1");
assertNotNull(c);
assertEquals(1, c.size());
assertTrue(c.contains("l1"));
assoc.removeLeft("l1");
c = assoc.getRightsForLeft("l0");
assertNotNull(c);
assertEquals(0, c.size());
c = assoc.getRightsForLeft("l1");
assertNotNull(c);
assertEquals(0, c.size());
c = assoc.getLeftsForRight("r0");
assertNotNull(c);
assertEquals(0, c.size());
c = assoc.getLeftsForRight("r1");
assertNotNull(c);
assertEquals(0, c.size());
}
public void testRemoveRight() throws Exception {
Association assoc = new Association();
Collection c;
assoc.add("l0", "r0");
assoc.add("l0", "r1");
assoc.add("l1", "r0");
assoc.add("l1", "r1");
assoc.removeRight("r0");
c = assoc.getRightsForLeft("l0");
assertNotNull(c);
assertEquals(1, c.size());
assertTrue(c.contains("r1"));
c = assoc.getRightsForLeft("l1");
assertNotNull(c);
assertEquals(1, c.size());
assertTrue(c.contains("r1"));
c = assoc.getLeftsForRight("r0");
assertNotNull(c);
assertEquals(0, c.size());
c = assoc.getLeftsForRight("r1");
assertNotNull(c);
assertEquals(2, c.size());
assertTrue(c.contains("l0"));
assertTrue(c.contains("l1"));
assoc.removeRight("r1");
c = assoc.getRightsForLeft("l0");
assertNotNull(c);
assertEquals(0, c.size());
c = assoc.getRightsForLeft("l1");
assertNotNull(c);
assertEquals(0, c.size());
c = assoc.getLeftsForRight("r0");
assertNotNull(c);
assertEquals(0, c.size());
c = assoc.getLeftsForRight("r1");
assertNotNull(c);
assertEquals(0, c.size());
}
}