package org.bundlemaker.core.itest.simple_artifact_model.analysis;
import static org.bundlemaker.core.itestframework.simple_artifact_model.ArtifactAssert.assertResourceModuleCount;
import static org.bundlemaker.core.itestframework.simple_artifact_model.ArtifactAssert.assertResourceModuleCountInModularizedSystem;
import org.bundlemaker.core.analysis.IGroupArtifact;
import org.bundlemaker.core.itestframework.simple_artifact_model.AbstractSimpleArtifactModelTest;
import org.bundlemaker.core.itestframework.simple_artifact_model.NoModificationAssertion;
import org.junit.Assert;
import org.junit.Test;
/**
* <p>
* </p>
*
* @author Gerd Wütherich (gerd@gerd-wuetherich.de)
*/
public class Undo_AddArtifactsToGroup_Test extends AbstractSimpleArtifactModelTest {
/**
* <p>
* </p>
*
* @throws Exception
*/
@Test
public void tryToAddGroupToGroupArtifact_1() throws Exception {
perform(new AddToGroup() {
@Override
public void addToGroup(IGroupArtifact groupArtifact) {
groupArtifact.addArtifact(getBinModel().getGroup1Artifact());
}
});
}
/**
* <p>
* </p>
*
* @throws Exception
*/
@Test
public void tryToAddGroupToGroupArtifact_2() throws Exception {
perform(new AddToGroup() {
@Override
public void addToGroup(IGroupArtifact groupArtifact) {
groupArtifact.addArtifact(getBinModel().getGroup2Artifact());
}
});
}
/**
* <p>
* </p>
*
* @throws Exception
*/
@Test
public void tryToAddModuleToGroup() throws Exception {
perform(new AddToGroup() {
@Override
public void addToGroup(IGroupArtifact groupArtifact) {
groupArtifact.addArtifact(getBinModel().getMainModuleArtifact());
}
});
}
/**
* <p>
* </p>
*
* @throws Exception
*/
private void perform(final AddToGroup addToGroup) throws Exception {
//
NoModificationAssertion.assertNoModification(this, new NoModificationAssertion.Action() {
/**
* {@inheritDoc}
*/
@Override
public void prePostCondition() {
Assert.assertEquals(2, getModularizedSystem().getGroups().size());
assertResourceModuleCountInModularizedSystem(getModularizedSystem(), 2);
assertResourceModuleCount(getBinModel(), 2);
assertResourceModuleCount(getSrcModel(), 2);
Assert.assertEquals(2, getModularizedSystem().getTransformations().size());
}
/**
* {@inheritDoc}
*/
@Override
public void execute() {
// STEP 1: create a new group
IGroupArtifact groupArtifact = getBinModel().getRootArtifact().getOrCreateGroup("newTestGroup");
Assert.assertEquals("newTestGroup", groupArtifact.getQualifiedName());
// assert that we three groups
Assert.assertEquals(3, getModularizedSystem().getGroups().size());
assertResourceModuleCountInModularizedSystem(getModularizedSystem(), 2);
assertResourceModuleCount(getSrcModel(), 2);
assertResourceModuleCount(getBinModel(), 2);
Assert.assertEquals(getBinModel().getRootArtifact(), groupArtifact.getParent());
addToGroup.addToGroup(groupArtifact);
//
Assert.assertEquals(3, getModularizedSystem().getGroups().size());
assertResourceModuleCountInModularizedSystem(getModularizedSystem(),2);
assertResourceModuleCount(getSrcModel(), 2);
assertResourceModuleCount(getBinModel(), 2);
Assert.assertEquals(getBinModel().getRootArtifact(), groupArtifact.getParent());
}
});
}
/**
* <p>
* </p>
*
* @author Gerd Wütherich (gerd@gerd-wuetherich.de)
*/
private static interface AddToGroup {
/**
* <p>
* </p>
*
* @param newModuleArtifact
*/
public void addToGroup(IGroupArtifact groupArtifact);
}
}