protected void write(ContainerView view, Writer writer) { try { writeHeader(view, writer); view.getElements().stream() .filter(ev -> !(ev.getElement() instanceof Container)) .map(ElementView::getElement) .sorted((e1, e2) -> e1.getName().compareTo(e2.getName())) .forEach(e -> write(view, e, writer, false)); writer.write("package \"" + view.getSoftwareSystem().getName() + "\" <<" + typeOf(view.getSoftwareSystem()) + ">> {"); writer.write(System.lineSeparator()); view.getElements().stream() .filter(ev -> ev.getElement() instanceof Container) .map(ElementView::getElement) .sorted((e1, e2) -> e1.getName().compareTo(e2.getName())) .forEach(e -> write(view, e, writer, true)); writer.write("}"); writer.write(System.lineSeparator()); writeRelationships(view, writer); writeFooter(writer); } catch (IOException e) { e.printStackTrace(); } }
@Test public void test_addAllSoftwareSystems_DoesNothing_WhenThereAreNoOtherSoftwareSystems() { assertEquals(0, view.getElements().size()); view.addAllSoftwareSystems(); assertEquals(0, view.getElements().size()); }
@Test public void test_addAllContainers_DoesNothing_WhenThereAreNoContainers() { assertEquals(0, view.getElements().size()); view.addAllContainers(); assertEquals(0, view.getElements().size()); }
@Test public void test_addAllPeople_DoesNothing_WhenThereAreNoPeople() { assertEquals(0, view.getElements().size()); view.addAllPeople(); assertEquals(0, view.getElements().size()); }
@Test public void test_addAllElements_DoesNothing_WhenThereAreNoSoftwareSystemsOrPeople() { assertEquals(0, view.getElements().size()); view.addAllElements(); assertEquals(0, view.getElements().size()); }
@Test public void test_remove_RemovesContainer() { Container webApplication = softwareSystem.addContainer("Web Application", "", ""); Container database = softwareSystem.addContainer("Database", "", ""); view.addAllContainers(); assertEquals(2, view.getElements().size()); view.remove(webApplication); assertEquals(1, view.getElements().size()); assertTrue(view.getElements().contains(new ElementView(database))); }
@Test public void test_addAllSoftwareSystems_AddsAllSoftwareSystems_WhenThereAreSomeSoftwareSystemsInTheModel() { SoftwareSystem softwareSystemA = model.addSoftwareSystem(Location.External, "System A", "Description"); SoftwareSystem softwareSystemB = model.addSoftwareSystem(Location.External, "System B", "Description"); view.addAllSoftwareSystems(); assertEquals(2, view.getElements().size()); assertTrue(view.getElements().contains(new ElementView(softwareSystemA))); assertTrue(view.getElements().contains(new ElementView(softwareSystemB))); }
@Test public void test_addNearestNeightbours_DoesNothing_WhenANullElementIsSpecified() { view.addNearestNeighbours(null); assertEquals(0, view.getElements().size()); }
@Test public void test_remove_ElementsWithTag() { final String TAG = "myTag"; Container webApplication = softwareSystem.addContainer("Web Application", "", ""); Container database = softwareSystem.addContainer("Database", "", ""); database.addTags(TAG); view.addAllContainers(); assertEquals(2, view.getElements().size()); view.removeElementsWithTag(TAG); assertEquals(1, view.getElements().size()); assertEquals(webApplication, view.getElements().iterator().next().getElement()); }
@Test public void test_addAllPeople_AddsAllPeople_WhenThereAreSomePeopleInTheModel() { Person userA = model.addPerson(Location.External, "User A", "Description"); Person userB = model.addPerson(Location.External, "User B", "Description"); view.addAllPeople(); assertEquals(2, view.getElements().size()); assertTrue(view.getElements().contains(new ElementView(userA))); assertTrue(view.getElements().contains(new ElementView(userB))); }
@Test public void test_addNearestNeighbours_DoesNothing_WhenThereAreNoNeighbours() { view.addNearestNeighbours(softwareSystem); assertEquals(1, view.getElements().size()); }
@Test public void test_addAllContainers_AddsAllContainers_WhenThereAreSomeContainers() { Container webApplication = softwareSystem.addContainer("Web Application", "Does something", "Apache Tomcat"); Container database = softwareSystem.addContainer("Database", "Does something", "MySQL"); view.addAllContainers(); assertEquals(2, view.getElements().size()); assertTrue(view.getElements().contains(new ElementView(webApplication))); assertTrue(view.getElements().contains(new ElementView(database))); }
@Test public void test_addAllElements_AddsAllSoftwareSystemsAndPeopleAndContainers_WhenThereAreSomeSoftwareSystemsAndPeopleAndContainersInTheModel() { SoftwareSystem softwareSystemA = model.addSoftwareSystem(Location.External, "System A", "Description"); SoftwareSystem softwareSystemB = model.addSoftwareSystem(Location.External, "System B", "Description"); Person userA = model.addPerson(Location.External, "User A", "Description"); Person userB = model.addPerson(Location.External, "User B", "Description"); Container webApplication = softwareSystem.addContainer("Web Application", "Does something", "Apache Tomcat"); Container database = softwareSystem.addContainer("Database", "Does something", "MySQL"); view.addAllElements(); assertEquals(6, view.getElements().size()); assertTrue(view.getElements().contains(new ElementView(softwareSystemA))); assertTrue(view.getElements().contains(new ElementView(softwareSystemB))); assertTrue(view.getElements().contains(new ElementView(userA))); assertTrue(view.getElements().contains(new ElementView(userB))); assertTrue(view.getElements().contains(new ElementView(webApplication))); assertTrue(view.getElements().contains(new ElementView(database))); }
@Test public void test_addDependentSoftwareSystem() { assertEquals(0, view.getElements().size()); assertEquals(0, view.getRelationships().size()); view.addDependentSoftwareSystems(); SoftwareSystem softwareSystem2 = model.addSoftwareSystem(Location.External, "SoftwareSystem 2", ""); view.addDependentSoftwareSystems(); assertEquals(0, view.getElements().size()); assertEquals(0, view.getRelationships().size()); softwareSystem2.uses(softwareSystem, ""); view.addDependentSoftwareSystems(); assertEquals(1, view.getElements().size()); }
@Test public void test_remove_RelationshipWithTag() { final String TAG = "myTag"; Container webApplication = softwareSystem.addContainer("Web Application", "", ""); Container database = softwareSystem.addContainer("Database", "", ""); webApplication.uses(database, "").addTags(TAG); view.addAllContainers(); assertEquals(2, view.getElements().size()); assertEquals(1, view.getRelationships().size()); view.removeRelationshipsWithTag(TAG); assertEquals(2, view.getElements().size()); assertEquals(0, view.getRelationships().size()); }
assertEquals(3, view.getElements().size()); assertTrue(view.getElements().contains(new ElementView(softwareSystemA))); assertTrue(view.getElements().contains(new ElementView(softwareSystem))); assertTrue(view.getElements().contains(new ElementView(softwareSystemB))); assertEquals(4, view.getElements().size()); assertTrue(view.getElements().contains(new ElementView(userA))); assertTrue(view.getElements().contains(new ElementView(softwareSystemA))); assertTrue(view.getElements().contains(new ElementView(softwareSystem))); assertTrue(view.getElements().contains(new ElementView(webApplication))); assertEquals(4, view.getElements().size()); assertTrue(view.getElements().contains(new ElementView(softwareSystemA))); assertTrue(view.getElements().contains(new ElementView(webApplication))); assertTrue(view.getElements().contains(new ElementView(database))); assertTrue(view.getElements().contains(new ElementView(softwareSystemB)));
@Test public void test_addDependentSoftwareSystem2() { Container container1a = softwareSystem.addContainer("Container 1A", "", ""); SoftwareSystem softwareSystem2 = model.addSoftwareSystem(Location.External, "SoftwareSystem 2", ""); Container container2a = softwareSystem2.addContainer("Container 2-A", "", ""); container2a.uses(container1a, ""); model.addImplicitRelationships(); view.addDependentSoftwareSystems(); view.addAllContainers(); assertEquals(2, view.getElements().size()); assertEquals(1, view.getRelationships().size()); } }
@Test public void test_copyLayoutInformationFrom_WhenTheContainerViewKeysMatch() { Workspace workspace1 = createWorkspace(); SoftwareSystem softwareSystem1 = workspace1.getModel().getSoftwareSystemWithName("Software System"); ContainerView view1 = workspace1.getViews().createContainerView(softwareSystem1, "containers", "Description"); view1.addAllElements(); view1.getElements().iterator().next().setX(100); view1.setPaperSize(PaperSize.A3_Landscape); Workspace workspace2 = createWorkspace(); SoftwareSystem softwareSystem2 = workspace2.getModel().getSoftwareSystemWithName("Software System"); ContainerView view2 = workspace2.getViews().createContainerView(softwareSystem2, "containers", "Description"); view2.addAllElements(); workspace2.getViews().copyLayoutInformationFrom(workspace1.getViews()); assertEquals(100, view2.getElements().iterator().next().getX()); assertEquals(PaperSize.A3_Landscape, view2.getPaperSize()); }
@Test public void test_copyLayoutInformationFrom_DoesNotDoAnythingIfThereIsNoContainerViewToCopyInformationFrom() { Workspace workspace1 = createWorkspace(); Workspace workspace2 = createWorkspace(); SoftwareSystem softwareSystem2 = workspace2.getModel().getSoftwareSystemWithName("Software System"); ContainerView view2 = workspace2.getViews().createContainerView(softwareSystem2, "containers", "Description"); view2.addAllElements(); workspace2.getViews().copyLayoutInformationFrom(workspace1.getViews()); assertEquals(0, view2.getElements().iterator().next().getX()); // default assertNull(view2.getPaperSize()); // default }
@Test public void test_construction() { assertEquals("The System - Containers", view.getName()); assertEquals("Description", view.getDescription()); assertEquals(0, view.getElements().size()); assertSame(softwareSystem, view.getSoftwareSystem()); assertEquals(softwareSystem.getId(), view.getSoftwareSystemId()); assertSame(model, view.getModel()); }