/*******************************************************************************
* Copyright (c) 2012 Bundlemaker project team.
* 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:
* Bundlemaker project team - initial API and implementation
******************************************************************************/
package org.bundlemaker.core.itest.misc_models.selectors;
import java.io.IOException;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.spi.AbstractSelectableChannel;
import java.nio.channels.spi.AbstractSelector;
import java.util.List;
import java.util.Set;
import org.bundlemaker.core.analysis.DependencyKind;
import org.bundlemaker.core.analysis.IBundleMakerArtifact;
import org.bundlemaker.core.analysis.selectors.TransitiveClosureSelector;
import org.junit.Test;
/**
* @author Nils Hartmann (nils@nilshartmann.net)
*
*/
public class TransitiveClosureSelectorTest extends AbstractSelectorTest {
/* (non-Javadoc)
* @see org.bundlemaker.core.itest.selectors.AbstractSelectorTest#ensureCorrectTestModel()
*/
@Override
protected void ensureCorrectTestModel() throws Exception {
assertDependencyTo("a.Aa", "a.A", DependencyKind.USES);
}
@Override
protected String computeTestProjectName() {
return "ReferencesSelectorTest";
}
@Test
public void directReference() throws Exception {
TransitiveClosureSelector selector = new TransitiveClosureSelector(getTypeArtifact("a.Aa"));
List<? extends IBundleMakerArtifact> result = selector.getBundleMakerArtifacts();
assertTypeArtifacts(result, "a.A");
}
@Test
public void indirectlyReferenced() throws Exception {
TransitiveClosureSelector selector = new TransitiveClosureSelector(getTypeArtifact("a.Aaa"));
List<? extends IBundleMakerArtifact> result = selector.getBundleMakerArtifacts();
assertTypeArtifacts(result, "a.A", "a.Aa");
}
@Test
public void multipleReferences() {
TransitiveClosureSelector selector = new TransitiveClosureSelector(getTypeArtifact("b.AB"));
List<? extends IBundleMakerArtifact> result = selector.getBundleMakerArtifacts();
assertTypeArtifacts(result, "a.Aaa", "a.Aa", "a.A", "b.Bb", "b.B");
}
@Test
public void packageReferences() {
TransitiveClosureSelector selector = new TransitiveClosureSelector(getPackageArtifact("b"));
List<? extends IBundleMakerArtifact> result = selector.getBundleMakerArtifacts();
System.out.println("RESULT: " + result);
assertTypeArtifacts(result, "a.Aaa", "a.Aa", "a.A", "b.Bb", "b.B");
}
}