blob: 86d08ebf4c571a25f5333c738d2b9f2c34c9310e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2015 Obeo.
* 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:
* Obeo - initial API and implementation and/or initial documentation
* ...
*******************************************************************************/
package org.eclipse.intent.mapping.tests.base;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.intent.mapping.base.ILink;
import org.eclipse.intent.mapping.base.ILocation;
import org.eclipse.intent.mapping.base.IReport;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
/**
* Test {@link ILink}.
*
* @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
*/
public abstract class AbstractLinkTests extends AbstractMappingTests {
@Test
public void setDescriptionNull() throws InstantiationException, IllegalAccessException,
ClassNotFoundException {
final TestLinkListener listener = new TestLinkListener();
final TestLinkListener removedListener = new TestLinkListener();
final ILink link = createLink();
link.addListener(listener);
link.addListener(removedListener);
link.removeListener(removedListener);
link.setDescription(null);
assertNull(link.getDescription());
assertTestLinkListener(listener, 1, 0, 0, 0, 0);
assertTestLinkListener(removedListener, 0, 0, 0, 0, 0);
}
@Test
public void setDescription() throws InstantiationException, IllegalAccessException,
ClassNotFoundException {
final TestLinkListener listener = new TestLinkListener();
final TestLinkListener removedListener = new TestLinkListener();
final ILink link = createLink();
link.addListener(listener);
link.addListener(removedListener);
link.removeListener(removedListener);
link.setDescription("description");
assertEquals("description", link.getDescription());
assertTestLinkListener(listener, 1, 0, 0, 0, 0);
assertTestLinkListener(removedListener, 0, 0, 0, 0, 0);
}
@Test
public void getDescriptionDefault() throws InstantiationException, IllegalAccessException,
ClassNotFoundException {
final ILink link = createLink();
assertNull(link.getDescription());
}
@Test
public void setSourceNull() throws InstantiationException, IllegalAccessException,
ClassNotFoundException {
final TestLinkListener listener = new TestLinkListener();
final TestLinkListener removedListener = new TestLinkListener();
final ILink link = createLink();
link.addListener(listener);
link.addListener(removedListener);
link.removeListener(removedListener);
link.setSource(null);
assertNull(link.getSource());
assertTestLinkListener(listener, 0, 1, 0, 0, 0);
assertTestLinkListener(removedListener, 0, 0, 0, 0, 0);
}
@Test
public void setSource() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
final TestLinkListener listener = new TestLinkListener();
final TestLinkListener removedListener = new TestLinkListener();
final ILink link = createLink();
link.addListener(listener);
link.addListener(removedListener);
link.removeListener(removedListener);
final ILocation source = createLocation();
link.setSource(source);
assertEquals(source, link.getSource());
assertTestLinkListener(listener, 0, 1, 0, 0, 0);
assertTestLinkListener(removedListener, 0, 0, 0, 0, 0);
}
@Test
public void getSourceDefault() throws InstantiationException, IllegalAccessException,
ClassNotFoundException {
final ILink link = createLink();
assertNull(link.getSource());
}
@Test
public void setTargetNull() throws InstantiationException, IllegalAccessException,
ClassNotFoundException {
final TestLinkListener listener = new TestLinkListener();
final TestLinkListener removedListener = new TestLinkListener();
final ILink link = createLink();
link.addListener(listener);
link.addListener(removedListener);
link.removeListener(removedListener);
link.setTarget(null);
assertNull(link.getTarget());
assertTestLinkListener(listener, 0, 0, 1, 0, 0);
assertTestLinkListener(removedListener, 0, 0, 0, 0, 0);
}
@Test
public void setTarget() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
final TestLinkListener listener = new TestLinkListener();
final TestLinkListener removedListener = new TestLinkListener();
final ILink link = createLink();
link.addListener(listener);
link.addListener(removedListener);
link.removeListener(removedListener);
final ILocation target = createLocation();
link.setTarget(target);
assertEquals(target, link.getTarget());
assertTestLinkListener(listener, 0, 0, 1, 0, 0);
assertTestLinkListener(removedListener, 0, 0, 0, 0, 0);
}
@Test
public void getTargetDefault() throws InstantiationException, IllegalAccessException,
ClassNotFoundException {
final ILink link = createLink();
assertNull(link.getTarget());
}
@Test
public void getTypeDefault() throws InstantiationException, IllegalAccessException,
ClassNotFoundException {
final ILink link = createLink();
assertEquals(null, link.getType());
}
@Test
public void setType() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
final ILink link = createLink();
final String type = "Type";
link.setType(type);
assertEquals(type, link.getType());
}
@Test
public void setTypeNull() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
final ILink link = createLink();
link.setType(null);
assertEquals(null, link.getType());
}
@Test
public void addReport() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
final TestLinkListener listener = new TestLinkListener();
final TestLinkListener removedListener = new TestLinkListener();
final ILink link = createLink();
link.addListener(listener);
link.addListener(removedListener);
link.removeListener(removedListener);
final IReport report = createReport();
link.getReports().add(report);
assertEquals(1, link.getReports().size());
assertEquals(report, link.getReports().get(0));
assertTestLinkListener(listener, 0, 0, 0, 1, 0);
assertTestLinkListener(removedListener, 0, 0, 0, 0, 0);
}
@Test
public void addManyReports() throws InstantiationException, IllegalAccessException,
ClassNotFoundException {
final TestLinkListener listener = new TestLinkListener();
final TestLinkListener removedListener = new TestLinkListener();
final ILink link = createLink();
link.addListener(listener);
link.addListener(removedListener);
link.removeListener(removedListener);
final IReport report1 = createReport();
final IReport report2 = createReport();
final List<IReport> reports = new ArrayList<IReport>();
reports.add(report1);
reports.add(report2);
link.getReports().addAll(reports);
assertEquals(2, link.getReports().size());
assertEquals(report1, link.getReports().get(0));
assertEquals(report2, link.getReports().get(1));
assertTestLinkListener(listener, 0, 0, 0, 2, 0);
assertTestLinkListener(removedListener, 0, 0, 0, 0, 0);
}
@Test
public void removeReport() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
final TestLinkListener listener = new TestLinkListener();
final TestLinkListener removedListener = new TestLinkListener();
final ILink link = createLink();
link.addListener(listener);
link.addListener(removedListener);
link.removeListener(removedListener);
final IReport report = createReport();
link.getReports().add(report);
assertEquals(1, link.getReports().size());
assertEquals(report, link.getReports().get(0));
link.getReports().remove(report);
assertEquals(0, link.getReports().size());
assertTestLinkListener(listener, 0, 0, 0, 1, 1);
assertTestLinkListener(removedListener, 0, 0, 0, 0, 0);
}
@Test
public void removeManyReports() throws InstantiationException, IllegalAccessException,
ClassNotFoundException {
final TestLinkListener listener = new TestLinkListener();
final TestLinkListener removedListener = new TestLinkListener();
final ILink link = createLink();
link.addListener(listener);
link.addListener(removedListener);
link.removeListener(removedListener);
final IReport report1 = createReport();
final IReport report2 = createReport();
final List<IReport> reports = new ArrayList<IReport>();
reports.add(report1);
reports.add(report2);
link.getReports().addAll(reports);
assertEquals(2, link.getReports().size());
assertEquals(report1, link.getReports().get(0));
assertEquals(report2, link.getReports().get(1));
link.getReports().removeAll(reports);
assertEquals(0, link.getReports().size());
assertTestLinkListener(listener, 0, 0, 0, 2, 2);
assertTestLinkListener(removedListener, 0, 0, 0, 0, 0);
}
}