/*package husaccttest.define;
import static org.junit.Assert.assertTrue;
import husacct.ServiceProvider;
import husacct.define.domain.SoftwareArchitecture;
import husacct.define.domain.appliedrule.AppliedRuleStrategy;
import husacct.define.domain.module.Layer;
import husacct.define.domain.module.Module;
import husacct.define.domain.module.SubSystem;
import husacct.define.domain.softwareunit.SoftwareUnitDefinition;
import husacct.define.domain.softwareunit.SoftwareUnitDefinition.Type;
import husacct.define.task.components.ExternalLibraryComponent;
import org.junit.Test;
public class DefineSoftwareArchitectureTests {
private SoftwareArchitecture sA;
private AppliedRuleStrategy rule;
private Module rootModule;
private Layer moduleFrom;
private Layer moduleTo;
private Layer subModule1;
private Layer subModule2;
private Layer subModule3;
private SubSystem subsubModule1;
private SoftwareUnitDefinition su1;
private SoftwareUnitDefinition su2;
private SoftwareUnitDefinition su3;
private SoftwareUnitDefinition su4;
private SoftwareUnitDefinition su5;
@Test
public void testSoftwareArchitecture(){
setInstance();
addAppliedRule();
getAppliedRule();
getAppliedRulesByModule();
enabledRules();
removeRule();
addModule();
getModule();
getModulesLogicalPath();
getModuleByLogicalPath();
getParentModuleIdByChildId();
moveLayer();
removeModule();
getModuleBySoftwareUnit();
getSoftwareUnitByName();
}
public void setInstance(){
SoftwareArchitecture.setInstance(new SoftwareArchitecture());
sA = SoftwareArchitecture.getInstance();
assertTrue(sA.getName().equals("SoftwareArchitecture"));
assertTrue(sA.getDescription().equals("This is the root of the architecture"));
SoftwareArchitecture.setInstance(new SoftwareArchitecture("Test", "description"));
sA = SoftwareArchitecture.getInstance();
assertTrue(sA.getName().equals("Test"));
assertTrue(sA.getDescription().equals("description"));
}
public void addAppliedRule(){
assertTrue(sA.getAppliedRules().size() == 0);
moduleFrom = new Layer("Presentation");
moduleTo = new Layer("Infrastructure");
// rule = new AppliedRule("IsNotAllowedToUse", "", new String[]{}, "", moduleFrom, moduleTo, true);
//sA.addAppliedRule(rule);
assertTrue(sA.getAppliedRules().size() == 1);
}
public void getAppliedRule(){
assertTrue(rule.equals(sA.getAppliedRuleById(rule.getId())));
}
public void getAppliedRulesByModule(){
assertTrue(sA.getAppliedRulesIdsByModuleFromId(moduleFrom.getId()).size() == 1);
assertTrue(sA.getAppliedRulesIdsByModuleToId(moduleFrom.getId()).size() == 0);
assertTrue(sA.getAppliedRulesIdsByModuleToId(moduleTo.getId()).size() == 1);
assertTrue(sA.getAppliedRulesIdsByModuleFromId(moduleTo.getId()).size() == 0);
}
public void enabledRules(){
assertTrue(sA.getEnabledAppliedRules().size() == 1);
rule.setEnabled(false);
assertTrue(sA.getEnabledAppliedRules().size() == 0);
}
public void removeRule(){
assertTrue(sA.getAppliedRules().size() == 1);
sA.removeAppliedRule(rule.getId());
assertTrue(sA.getAppliedRules().size() == 0);
//sA.addAppliedRule(rule);
assertTrue(sA.getAppliedRules().size() == 1);
sA.removeAppliedRules();
assertTrue(sA.getAppliedRules().size() == 0);
}
public void addModule(){
//getModules.size is equal to all the root modules
assertTrue(sA.getModules().size() == 0);
sA.addSeperatedModule(moduleFrom);
sA.addSeperatedModule(moduleTo);
assertTrue(sA.getModules().size() == 2);
subModule1 = new Layer("subLayer1");
subModule2 = new Layer("subLayer2");
subModule3 = new Layer("subLayer3");
subsubModule1 = new SubSystem("subSystem1");
moduleFrom.addSubModule(subModule1);
moduleFrom.addSubModule(subModule2);
moduleFrom.addSubModule(subModule3);
subModule1.addSubModule(subsubModule1);
assertTrue(sA.getModules().size() == 2);
assertTrue(moduleFrom.getSubModules().size() == 3);
rootModule = sA.getModuleByLogicalPath("**");
SpecialAddModule();
}
private void SpecialAddModule(){
//Add dupicate module
try {
sA.addSeperatedModule(moduleTo);
} catch (RuntimeException e){
if (e.getMessage().equals(ServiceProvider.getInstance().getLocaleService().getTranslatedString("SameNameModule"))){
assertTrue(true);
} else {
assertTrue(false);
}
}
//Add a module with the same name
try {
sA.addSeperatedModule(new SubSystem("Infrastructure"));
} catch (RuntimeException e){
if (e.getMessage().equals(ServiceProvider.getInstance().getLocaleService().getTranslatedString("SameNameModule"))){
assertTrue(true);
} else {
assertTrue(false);
}
}
}
public void getModule(){
assertTrue(rootModule.equals(sA.getModuleById(rootModule.getId())));
assertTrue(moduleFrom.equals(sA.getModuleById(moduleFrom.getId())));
assertTrue(moduleTo.equals(sA.getModuleById(moduleTo.getId())));
assertTrue(subModule1.equals(sA.getModuleById(subModule1.getId())));
assertTrue(subModule2.equals(sA.getModuleById(subModule2.getId())));
assertTrue(subModule3.equals(sA.getModuleById(subModule3.getId())));
}
public void getModulesLogicalPath(){
assertTrue("**".equals(sA.getModulesLogicalPath(rootModule.getId())));
assertTrue("Presentation".equals(sA.getModulesLogicalPath(moduleFrom.getId())));
assertTrue("Infrastructure".equals(sA.getModulesLogicalPath(moduleTo.getId())));
assertTrue("Presentation.subLayer1".equals(sA.getModulesLogicalPath(subModule1.getId())));
assertTrue("Presentation.subLayer2".equals(sA.getModulesLogicalPath(subModule2.getId())));
assertTrue("Presentation.subLayer3".equals(sA.getModulesLogicalPath(subModule3.getId())));
assertTrue("Presentation.subLayer1.subSystem1".equals(sA.getModulesLogicalPath(subsubModule1.getId())));
}
public void getModuleByLogicalPath(){
assertTrue(rootModule.equals(sA.getModuleByLogicalPath("**")));
assertTrue(moduleFrom.equals(sA.getModuleByLogicalPath("Presentation")));
assertTrue(moduleTo.equals(sA.getModuleByLogicalPath("Infrastructure")));
assertTrue(subModule1.equals(sA.getModuleByLogicalPath("Presentation.subLayer1")));
assertTrue(subModule2.equals(sA.getModuleByLogicalPath("Presentation.subLayer2")));
assertTrue(subModule3.equals(sA.getModuleByLogicalPath("Presentation.subLayer3")));
assertTrue(subsubModule1.equals(sA.getModuleByLogicalPath("Presentation.subLayer1.subSystem1")));
}
public void getParentModuleIdByChildId(){
assertTrue(-1 == sA.getParentModuleIdByChildId(rootModule.getId()));
assertTrue(rootModule.getId() == sA.getParentModuleIdByChildId(moduleFrom.getId()));
assertTrue(rootModule.getId() == sA.getParentModuleIdByChildId(moduleTo.getId()));
assertTrue(moduleFrom.getId() == sA.getParentModuleIdByChildId(subModule1.getId()));
assertTrue(moduleFrom.getId() == sA.getParentModuleIdByChildId(subModule2.getId()));
assertTrue(moduleFrom.getId() == sA.getParentModuleIdByChildId(subModule3.getId()));
assertTrue(subModule1.getId() == sA.getParentModuleIdByChildId(subsubModule1.getId()));
}
public void moveLayer() {
assertTrue(moduleFrom.getHierarchicalLevel() == 1);
assertTrue(moduleTo.getHierarchicalLevel() == 2);
sA.moveLayerDown(moduleFrom.getId());
assertTrue(moduleFrom.getHierarchicalLevel() == 2);
assertTrue(moduleTo.getHierarchicalLevel() == 1);
sA.moveLayerUp(moduleFrom.getId());
assertTrue(moduleFrom.getHierarchicalLevel() == 1);
assertTrue(moduleTo.getHierarchicalLevel() == 2);
sA.moveLayerUp(moduleFrom.getId());
assertTrue(moduleFrom.getHierarchicalLevel() == 1);
assertTrue(moduleTo.getHierarchicalLevel() == 2);
moduleTo.setHierarchicalLevel(3);
assertTrue(moduleFrom.getHierarchicalLevel() == 1);
assertTrue(moduleTo.getHierarchicalLevel() == 3);
sA.moveLayerDown(moduleFrom.getId());
assertTrue(moduleFrom.getHierarchicalLevel() == 3);
assertTrue(moduleTo.getHierarchicalLevel() == 1);
//Testing moving subLayers
assertTrue(subModule1.getHierarchicalLevel() == 3);
assertTrue(subModule2.getHierarchicalLevel() == 4);
assertTrue(subModule3.getHierarchicalLevel() == 5);
sA.moveLayerDown(subModule1.getId());
assertTrue(subModule1.getHierarchicalLevel() == 4);
assertTrue(subModule2.getHierarchicalLevel() == 3);
assertTrue(subModule3.getHierarchicalLevel() == 5);
sA.moveLayerUp(subModule3.getId());
assertTrue(subModule1.getHierarchicalLevel() == 5);
assertTrue(subModule2.getHierarchicalLevel() == 3);
assertTrue(subModule3.getHierarchicalLevel() == 4);
}
public void removeModule(){
//Keep in mind that when you remove a module, the related rules should disappear aswell.
//sA.addAppliedRule(rule);
assertTrue(subModule1.getSubModules().size() == 1);
assertTrue(subModule2.getSubModules().size() == 0);
assertTrue(moduleFrom.getSubModules().size() == 3);
assertTrue(moduleTo.getSubModules().size() == 0);
sA.removeSeperatedModule(subsubModule1);
assertTrue(subModule1.getSubModules().size() == 0);
assertTrue(subModule2.getSubModules().size() == 0);
assertTrue(moduleFrom.getSubModules().size() == 3);
assertTrue(moduleTo.getSubModules().size() == 0);
sA.removeSeperatedModule(moduleFrom);
assertTrue(sA.getModules().size() == 1);
assertTrue(moduleTo.getSubModules().size() == 0);
sA.addSeperatedModule(moduleFrom);
sA.removeAllModules();
assertTrue(sA.getModules().size() == 0);
//rootModule should not be removeable
Long id =sA.getModuleById(rootModule.getId()).getId();
assertTrue(rootModule.getId()==id);
sA.removeSeperatedModule(rootModule);
assertTrue(rootModule.equals(sA.getModuleById(rootModule.getId())));
}
public void getModuleBySoftwareUnit(){
su1 = new SoftwareUnitDefinition("presentation", Type.PACKAGE);
moduleFrom.addSUDefinition(su1);
su2 = new SoftwareUnitDefinition("infrastructure", Type.PACKAGE);
moduleTo.addSUDefinition(su2);
sA.addSeperatedModule(moduleFrom);
sA.addSeperatedModule(moduleTo);
su3 = new SoftwareUnitDefinition("presentation.gui", Type.PACKAGE);
su4 = new SoftwareUnitDefinition("presentation.upload", Type.PACKAGE);
su5 = new SoftwareUnitDefinition("presentation.post", Type.PACKAGE);
subModule1.addSUDefinition(su3);
subModule2.addSUDefinition(su4);
subsubModule1.addSUDefinition(su5);
subModule1.addSubModule(subsubModule1);
assertTrue(moduleFrom.equals(sA.getModuleBySoftwareUnit(su1.getName())));
assertTrue(moduleTo.equals(sA.getModuleBySoftwareUnit(su2.getName())));
assertTrue(subModule1.equals(sA.getModuleBySoftwareUnit(su3.getName())));
assertTrue(subModule2.equals(sA.getModuleBySoftwareUnit(su4.getName())));
assertTrue(subsubModule1.equals(sA.getModuleBySoftwareUnit(su5.getName())));
}
public void getSoftwareUnitByName(){
assertTrue(su1.equals(sA.getSoftwareUnitByName(su1.getName())));
assertTrue(su2.equals(sA.getSoftwareUnitByName(su2.getName())));
assertTrue(su3.equals(sA.getSoftwareUnitByName(su3.getName())));
assertTrue(su4.equals(sA.getSoftwareUnitByName(su4.getName())));
assertTrue(su5.equals(sA.getSoftwareUnitByName(su5.getName())));
}
@Test
public void testifunitisremoved()
{
ExternalLibraryComponent testComp = new ExternalLibraryComponent();
ExternalLibraryComponent externaltoberemoved = new ExternalLibraryComponent();
testComp.addChild(externaltoberemoved);
assertTrue(testComp.getChildren().size()==1);
testComp.removeChild(externaltoberemoved);
assertTrue(testComp.getChildren().size()==0);
}
}
*/