// This product is provided under the terms of EPL (Eclipse Public License)
// version 1.0.
//
// The full license text can be read from: http://www.eclipse.org/org/documents/epl-v10.php
package org.dtangler.core.acceptancetests.dsm;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import org.dtangler.core.dependencies.DependencyGraph;
import org.dtangler.core.dsm.Dsm;
import org.dtangler.core.dsmengine.DsmEngine;
import org.dtangler.core.testutil.dependenciesbuilder.DependencyGraphBuilder;
import org.dtangler.core.testutil.dsmdriver.DsmDriver;
import org.junit.Before;
import org.junit.Test;
public class DsmAcceptanceTest {
private DependencyGraphBuilder builder;
@Before
public void setUp() {
builder = new DependencyGraphBuilder();
}
private DsmDriver createDsm() {
DependencyGraph dependencies = builder.getDependencies();
Dsm dsm = new DsmEngine(dependencies).createDsm();
return new DsmDriver(dsm);
}
@Test
public void testEmptyDsm() {
DsmDriver dsm = createDsm();
assertTrue(dsm.getRowNames().isEmpty());
}
@Test
public void testDsmWithNoDependencies() {
builder.add("foo");
builder.add("bar");
DsmDriver dsm = createDsm();
assertTrue(dsm.getRowNames().contains("foo"));
assertTrue(dsm.getRowNames().contains("bar"));
assertEquals(0, dsm.row("foo").col("bar").getWeight());
assertEquals(0, dsm.row("bar").col("foo").getWeight());
}
@Test
public void testDsmWithGoodDependencies() {
builder.add("serviceimpl").dependsOn("dao").and("daoimpl", 2)
.dependsOn("dao");
DsmDriver dsm = createDsm();
assertEquals(Arrays.asList("serviceimpl", "daoimpl", "dao"), dsm
.getRowNames());
assertEquals(0, dsm.row("serviceimpl").col("daoimpl").getWeight());
assertEquals(0, dsm.row("serviceimpl").col("dao").getWeight());
assertEquals(2, dsm.row("daoimpl").col("serviceimpl").getWeight());
assertEquals(0, dsm.row("daoimpl").col("dao").getWeight());
assertEquals(1, dsm.row("dao").col("serviceimpl").getWeight());
assertEquals(1, dsm.row("dao").col("daoimpl").getWeight());
}
@Test
public void testDsmWithOuterDependencies() {
builder.add("foo").dependsOn("bar");
builder.addOuterDependant("externalFooUser", "foo");
builder.addOuterDependee("foo", "externalUsedByFoo");
DsmDriver dsm = createDsm();
assertEquals(Arrays.asList("foo", "bar"), dsm.getRowNames());
assertEquals(1, dsm.row("bar").col("foo").getWeight());
assertEquals(0, dsm.row("foo").col("bar").getWeight());
}
}