/** * Validate if the freeTextGraphNode is valid for actions that relates to Free Text graph nodes. * * @param freeTextGraphNode the freeTextGraphNode to validate * @throws IllegalArgumentException If freeTextGraphNode is null, or the freeTextGraphNode doesn't * contain a semanticModel attribute (<code>SimpleSemanticModelElement</code> object) with * typeInfo attribute equal to "FreeText", or it doesn't contain a <code>TextElement</code> * object in its contained attribute. */ static void validateGraphNodeForFreeTextAction(GraphNode freeTextGraphNode) { if (freeTextGraphNode == null) { throw new IllegalArgumentException("freeTextGraphNode cannot be null!"); } // Validate the SemanticModel SemanticModelBridge smb = freeTextGraphNode.getSemanticModel(); if (!(smb instanceof SimpleSemanticModelElement)) { throw new IllegalArgumentException( "SemanticModel of the freeTextGraphNode should be SimpleSemanticModelElement!"); } SimpleSemanticModelElement ssme = (SimpleSemanticModelElement) smb; if (!FREE_TEXT.equals(ssme.getTypeInfo())) { throw new IllegalArgumentException( "typeInfo of freeTextGraphNode's SemanticModel should be '" + FREE_TEXT + "'!"); } // Validate if the freeTextGraphNode contains a TextElement boolean valid = false; for (DiagramElement de : freeTextGraphNode.getContaineds()) { if (de instanceof TextElement) { valid = true; break; } } if (!valid) { throw new IllegalArgumentException("freeTextGraphNode should contain a TextElement!"); } }
/** * Basic stress test of <code>notifyGraphNodeChange()</code> method. * * @throws Exception if if any exception occurs when testing. */ public void testUseCaseNode_notifyGraphNodeChange_AbsolutePosition() throws Exception { GraphNode dv = new GraphNode(); dv.setPosition(StressTestHelper.createPoint(0, 0)); GraphNode ssNode = StressTestHelper.getGraphNode(1); ssNode.setSize(StressTestHelper.createDimension(400, 800)); ssNode.setPosition(StressTestHelper.createPoint(100, 200)); ssNode.setContainer(dv); graphNode.setContainer(ssNode); ssNode.addContained(graphNode); // create a use case node here. node = new UseCaseNode(graphNode, properties); // change the node and test it. for (int i = 0; i < LOOPTIMES; i++) { int width = 40 + i; int height = 80 + i; graphNode.setSize(StressTestHelper.createDimension(width, height)); int x = 10 + i; int y = 20 + i; graphNode.setPosition(StressTestHelper.createPoint(x, y)); // notify the node change here. node.notifyGraphNodeChange("node changed."); // check the Node here. // get the location to test. assertEquals("The notifyGraphNodeChange method is incorrect.", 105 + i, node.getLocation().x); assertEquals("The notifyGraphNodeChange method is incorrect.", 215 + i, node.getLocation().y); } }
/** * Test constructor <code>PasteCommentGraphNodeAction(Object content, GraphNode diagram)</code> * for failure with invalid commentGraphNode that contains illegal semantic * model(non-Uml1SemanticModelBridge), <code>IllegalArgumentException</code> is expected. */ public void testCtor_CommentGraphNodeWithIllegalSemanticModel1() { GraphNode node = new GraphNode(); node.setSemanticModel(new SimpleSemanticModelElement()); try { new PasteCommentGraphNodeAction(node, this.diagram); fail("IllegalArgumentException is expected!"); } catch (IllegalArgumentException e) { // expected } }
/** * Test constructor <code>AddFreeTextAction(GraphNode freeTextGraphNode, GraphNode diagram, * UMLModelManager modelManager)</code> for failure with freeTextGraphNode which has no semantic * model, <code>IllegalArgumentException</code> is expected. */ public void testCtor_FreeTextGraphNodeWithoutSemanticModel() { GraphNode node = new GraphNode(); node.addContained(new TextElement()); try { new AddFreeTextAction(node, this.diagram, this.manager); fail("IllegalArgumentException is expected!"); } catch (IllegalArgumentException e) { // expected } }
/** * Test constructor <code>PasteCommentGraphNodeAction(Object content, GraphNode diagram)</code> * for failure with invalid commentGraphNode that contains illegal semantic model(without Comment * element), <code>IllegalArgumentException</code> is expected. */ public void testCtor_CommentGraphNodeWithIllegalSemanticModel2() { GraphNode node = new GraphNode(); Uml1SemanticModelBridge usmb = new Uml1SemanticModelBridge(); node.setSemanticModel(usmb); try { new PasteCommentGraphNodeAction(node, this.diagram); fail("IllegalArgumentException is expected!"); } catch (IllegalArgumentException e) { // expected } }
/** * Test constructor <code>AddFreeTextAction(GraphNode freeTextGraphNode, GraphNode diagram, * UMLModelManager modelManager)</code> for failure with freeTextGraphNode has no TextElement, * <code>IllegalArgumentException</code> is expected. */ public void testCtor_FreeTextGraphNodeWithoutTextElement() { GraphNode node = new GraphNode(); SimpleSemanticModelElement ssme = new SimpleSemanticModelElement(); ssme.setTypeInfo("FreeText"); node.setSemanticModel(ssme); try { new AddFreeTextAction(node, this.diagram, this.manager); fail("IllegalArgumentException is expected!"); } catch (IllegalArgumentException e) { // expected } }
/** * Tests constructor CutFreeTextAction(freeTextGraphNode, clipboard) if freeTextGraphNode contains * a semanticModel attribute, but not SimpleSemanticModelElement object. IllegalArgumentException * is expected. */ public void testCtorIfFreeTextNodeContainInvalidSemanticModelAttribute() { try { freeTextGraphNode.addContained(new TextElement()); freeTextGraphNode.setSemanticModel(new Uml1SemanticModelBridge()); new CutFreeTextAction(freeTextGraphNode, null); fail( "IllegalArgumentException is expected because freeTextGraphNode contains invalid semanticModel" + "attribute (non-SimpleSemanticModelElement object)."); } catch (IllegalArgumentException e) { // success } }
/** * Test method <code>GraphElement extractStereotype() </code>. * * <p>Mainly check the size of the stereotype node. * * @throws Exception to junit. */ public void testExtractStereotype() throws Exception { GraphEdge root = HelperUtil.createGraphEdgeInstance(); extractor = new DefaultEdgeCompartmentExtractor(root); GraphNode back = (GraphNode) extractor.extractStereotype(); Dimension d = back.getSize(); assertTrue("The height should be 100.", d.getHeight() == 100); assertTrue("The width should be 1000.", d.getWidth() == 1000); }
/** * Setup test environment. * * @throws Exception to JUnit */ protected void setUp() throws Exception { TestHelper.loadXMLConfig(TestHelper.CONFIG_FILE); mapping = new PropertyMapping(VALID_NAMESPACE); graphNode = new GraphNode(); usmb = new Uml1SemanticModelBridge(); usmb.setElement(new CommentImpl()); graphNode.setSemanticModel(usmb); graphNode.setPosition(new com.topcoder.diagraminterchange.Point()); graphNode.setSize(new com.topcoder.diagraminterchange.Dimension()); node = new CommentNode(graphNode, mapping); connector = new CommentConnector(node); }
/** * Tests method copyToClipboard(node, clipboard) if node is null. IllegalArgumentException is * expected * * @throws Exception exception */ public void testCopyToClipboardIfNodeNull() throws Exception { SimpleSemanticModelElement semanticModelBridge = new SimpleSemanticModelElement(); semanticModelBridge.setTypeInfo("FreeText"); freeTextGraphNode.setSemanticModel(semanticModelBridge); freeTextGraphNode.addContained(new TextElement()); CutFreeTextActionExt cutFreeTextAction = new CutFreeTextActionExt(freeTextGraphNode, null); try { cutFreeTextAction.copyToClipboard(null, null); fail("IllegalArgumentException is expected because node cannot be null."); } catch (IllegalArgumentException e) { // success } }
/** Helper method use to add some textField to the edge. */ public void addTextFieldToEdge() { graphNode1 = new GraphNode(); graphNode1.setContainer(graphEdge); graphNode1.setPosition(TestHelper.getWaypoint(25, 13)); textField1 = test.addTextField(graphNode1, text, AnchorType.LeftEnding); graphNode2 = new GraphNode(); graphNode2.setContainer(graphEdge); graphNode2.setPosition(TestHelper.getWaypoint(12, 13)); // the anchorage will be set to (12, 10). textField2 = test.addTextField(graphNode2, text, AnchorType.Line); graphNode3 = new GraphNode(); graphNode3.setContainer(graphEdge); graphNode3.setPosition(TestHelper.getWaypoint(8, 6)); // the anchorage will be set to (7, 7). textField3 = test.addTextField(graphNode3, text, AnchorType.Line); graphNode4 = new GraphNode(); graphNode4.setContainer(graphEdge); graphNode4.setPosition(TestHelper.getWaypoint(5, 7)); textField4 = test.addTextField(graphNode4, text, AnchorType.RightEnding); }
/** * Tests constructor CutFreeTextAction(freeTextGraphNode, clipboard) if freeTextGraphNode contains * a semanticModel attribute (SimpleSemanticModelElement object), but its typeInfo attribute is * not equal to "FreeText". IllegalArgumentException is expected. */ public void testCtorITypeInfoInvalid() { try { freeTextGraphNode.addContained(new TextElement()); SimpleSemanticModelElement semanticModelBridge = new SimpleSemanticModelElement(); semanticModelBridge.setTypeInfo("invalid_type_info"); freeTextGraphNode.setSemanticModel(semanticModelBridge); new CutFreeTextAction(freeTextGraphNode, null); fail( "IllegalArgumentException is expected because semanticModel's typeInfo is not equal " + "to 'FreeText'."); } catch (IllegalArgumentException e) { // success } }
/** Accuracy Test of the <code>addTextField()</code> method. */ public void testAddTextField_Line() { graphNode.setPosition(TestHelper.getWaypoint(12, 13)); graphNode.setContainer(graphEdge); TextField textField = test.addTextField(graphNode, text, AnchorType.Line); // get the contained graphNode to check the constructor. assertEquals("The contained graphNode should be equals.", graphNode, textField.getGraphNode()); // get the anchorage point. Point anchorage = textField.getAnchorage(); // get the position of the anchorage point to check the method. assertEquals("The anchorage point should be at (12, 10).", 12, anchorage.x); assertEquals("The anchorage point should be at (12, 10).", 10, anchorage.y); }
/** * Set up environment. * * @throws Exception exception */ public void setUp() throws Exception { Helper.clearNamespace(); Helper.initNamespace(); freeTextGraphNode = new GraphNode(); freeTextGraphNode.setContainer(new GraphElement() {}); }
/** * Basic stress test of <code>notifyGraphNodeChange()</code> method. * * @throws Exception if if any exception occurs when testing. */ public void testUseCaseNode_notifyGraphNodeChange_Text() throws Exception { for (int i = 0; i < LOOPTIMES; i++) { int width = 50 + i; int height = 30 + i; graphNode.setSize(StressTestHelper.createDimension(width, height)); node = new UseCaseNode(graphNode, properties); // notify the node change here. node.notifyGraphNodeChange("node changed."); // check the result here. assertEquals( "The UseCaseNode notifyGraphNodeChange method is incorrect.", "topcoderSoft", node.getNameCompartment().getText()); assertEquals( "The UseCaseNode notifyGraphNodeChange method is incorrect.", "<<type1, type2>>", node.getStereotypeCompartment().getText()); assertEquals( "The UseCaseNode notifyGraphNodeChange method is incorrect.", "com.topcoder.soft", node.getNamespaceCompartment().getText()); } }
/** * Test method <code>void updateName(GraphElement newElement) </code>. * * <p>In this test case, the logic is simple. First creat a valid GraphNode instance. Set the * visible to true (the default value should be false), and expected that the extractor graph * element has the visible value of true. * * <p>For update, an element with visible false is created and should be updated correctly. * * <p>Also the dimension size should be updated too. * * @throws Exception to junit. */ public void testUpdateName() throws Exception { GraphEdge root = HelperUtil.createGraphEdgeInstance(); extractor = new DefaultEdgeCompartmentExtractor(root); GraphNode back = (GraphNode) extractor.extractName(); assertTrue("The visible should be true for this GraphElement.", back.isVisible()); GraphNode node = new GraphNode(); SimpleSemanticModelElement semanticModel = new SimpleSemanticModelElement(); semanticModel.setTypeinfo(EnumUtil.NAME); node.setSemanticModel(semanticModel); Dimension dimension = new Dimension(); dimension.setHeight(new Double(10)); dimension.setWidth(new Double(100)); node.setSize(dimension); // update the Name compartment. extractor.updateName(node); back = (GraphNode) extractor.extractName(); assertFalse("The visible should be false as it is updated.", back.isVisible()); // check the dimension size. Dimension d = back.getSize(); assertTrue("The height should be 10.", d.getHeight() == 10); assertTrue("The width should be 100.", d.getWidth() == 100); }
/** Creates the graph node for new node. */ protected void createGraphNode() { graphNode = DeployHelper.createGraphNodeForClass(element, position, size); NodeContainer nodeContainer = getNodeContainer(); if (nodeContainer != null) { GraphNode container = nodeContainer.getGraphNode(); GraphNode bodyCompartment = (GraphNode) container.getContaineds().get(1); setAddDiagramElementAction( new AddDiagramElementAction( bodyCompartment, graphNode, modelManager.getProjectConfigurationManager())); } else { setAddDiagramElementAction( new AddDiagramElementAction( getDiagramView().getDiagram(), graphNode, modelManager.getProjectConfigurationManager())); } }
/** * Tests constructor CutFreeTextAction(freeTextGraphNode, clipboard) if freeTextGraphNode doesn't * contain a semanticModel attribute (SimpleSemanticModelElement object). IllegalArgumentException * is expected. */ public void testCtorIfFreeTextNodeNotContainSemanticModelAttribute() { try { freeTextGraphNode.addContained(new TextElement()); new CutFreeTextAction(freeTextGraphNode, null); fail( "IllegalArgumentException is expected because freeTextGraphNode doesn't contain a semanticModel" + "attribute (SimpleSemanticModelElement object)."); } catch (IllegalArgumentException e) { // success } }
/** Accuracy Test of the <code>addTextField()</code> method. */ public void testAddTextField_RightEnding() { graphNode.setPosition(TestHelper.getWaypoint(5, 7)); TextField textField = test.addTextField(graphNode, text, AnchorType.RightEnding); // get the contained graphNode to check the constructor. assertEquals("The contained graphNode should be equals.", graphNode, textField.getGraphNode()); // get the anchorage point. Point anchorage = textField.getAnchorage(); // get the position of the anchorage point to check the method. assertEquals("The anchorage point should be at (30, 0).", 30, anchorage.x); assertEquals("The anchorage point should be at (0, 0).", 0, anchorage.y); }
/** * Tests constructor CutFreeTextAction(freeTextGraphNode, clipboard) if freeTextGraphNode doesn't * contain a TextElement object in its contained attribute. IllegalArgumentException is expected. */ public void testCtorIfFreeTextNotContainedTextElementObject() { try { SimpleSemanticModelElement semanticModelBridge = new SimpleSemanticModelElement(); semanticModelBridge.setTypeInfo("FreeText"); freeTextGraphNode.setSemanticModel(semanticModelBridge); new CutFreeTextAction(freeTextGraphNode, null); fail( "IllegalArgumentException is expected because freeTextGraphNode must contain a TextElement " + "object in its contained attribute."); } catch (IllegalArgumentException e) { // success } }
/** * Basic stress test of <code>UseCaseNode</code>'s constructor. * * @throws Exception if if any exception occurs when testing. */ public void testUseCaseNodeCtor_Times() throws Exception { for (int i = 0; i < LOOPTIMES; i++) { int width = 50 + i; int height = 30 + i; graphNode.setSize(StressTestHelper.createDimension(width, height)); node = new UseCaseNode(graphNode, properties); // check the result here. assertNotNull("The UseCaseNode constructor is incorrect.", node); assertEquals( "The UseCaseNode constructor is incorrect.", nameNode, node.getNameCompartment().getGraphNode()); assertEquals( "The UseCaseNode constructor is incorrect.", stereotypeNode, node.getStereotypeCompartment().getGraphNode()); assertEquals( "The UseCaseNode constructor is incorrect.", namespaceNode, node.getNamespaceCompartment().getGraphNode()); // check the compartment text here. assertEquals( "The UseCaseNode constructor is incorrect.", "topcoderSoft", node.getNameCompartment().getText()); assertEquals( "The UseCaseNode constructor is incorrect.", "<<type1, type2>>", node.getStereotypeCompartment().getText()); assertEquals( "The UseCaseNode constructor is incorrect.", "com.topcoder.soft", node.getNamespaceCompartment().getText()); } }
/** * Test method <code>void updateStereotype(GraphElement newElement) </code>. * * @throws Exception to junit. */ public void testUpdateStereotype() throws Exception { GraphEdge root = HelperUtil.createGraphEdgeInstance(); extractor = new DefaultEdgeCompartmentExtractor(root); GraphNode back = (GraphNode) extractor.extractStereotype(); Dimension d = back.getSize(); assertTrue("The height should be 100.", d.getHeight() == 100); assertTrue("The width should be 1000.", d.getWidth() == 1000); GraphNode node = new GraphNode(); SimpleSemanticModelElement semanticModel = new SimpleSemanticModelElement(); semanticModel.setTypeinfo(EnumUtil.STEREOTYPE_COMPARTMENT); node.setSemanticModel(semanticModel); Dimension dimension = new Dimension(); dimension.setHeight(new Double(10)); dimension.setWidth(new Double(100)); node.setSize(dimension); // update the stereotype node. extractor.updateStereotype(node); back = (GraphNode) extractor.extractStereotype(); d = back.getSize(); assertTrue("The height should be 10.", d.getHeight() == 10); assertTrue("The width should be 100.", d.getWidth() == 100); }
/** * Creates a new GraphNode instance for stereotype compartment to update. * * @return a new GraphNode instance for stereotype compartment to update. */ private GraphNode getStereotypeNodeForUpdate() { GraphNode stereotypeNode = new GraphNode(); stereotypeNode.setSemanticModel(TestHelper.createSimpleSemanticModel("StereotypeCompartment")); return stereotypeNode; }
/** * Creates a new GraphNode instance for name compartment to update. * * @return a new GraphNode instance for name compartment to update. */ private GraphNode getNameNodeForUpdate() { GraphNode nameNode = new GraphNode(); nameNode.setSemanticModel(TestHelper.createSimpleSemanticModel("Name")); return nameNode; }
/** * Creates a new GraphNode instance for association end compartment to update. * * @return a new GraphNode instance for association end compartment to update. */ private GraphNode getAssociationEndNodeForUpdate() { GraphNode node = new GraphNode(); node.setSemanticModel(TestHelper.createUmlSemanticModel(new AssociationEndImpl())); return node; }
/** Set up the stress testing environment. */ protected void setUp() { // create the properties map of BaseNode. properties = StressTestHelper.getProperties(); // get the graphNode here. graphNode = StressTestHelper.getGraphNode(2); // create the structure of the Subsystem here. nameNode = new GraphNode(); stereotypeNode = new GraphNode(); namespaceNode = new GraphNode(); // set the initializing size and position. nameNode.setPosition(StressTestHelper.createPoint(0, 0)); nameNode.setSize(StressTestHelper.createDimension(10, 10)); stereotypeNode.setPosition(StressTestHelper.createPoint(0, 0)); stereotypeNode.setSize(StressTestHelper.createDimension(10, 10)); namespaceNode.setPosition(StressTestHelper.createPoint(0, 0)); namespaceNode.setSize(StressTestHelper.createDimension(10, 10)); // create the NameCompartment here. GraphNode nameCompartment = new GraphNode(); nameCompartment.addContained(stereotypeNode); nameCompartment.addContained(nameNode); nameCompartment.addContained(namespaceNode); graphNode.addContained(nameCompartment); }