From 544ef15e879f02a2427046dfb286f4ce855031f8 Mon Sep 17 00:00:00 2001
From: dblouin <dominique.blouin@telecom-paristech.fr>
Date: Wed, 29 Aug 2018 16:34:34 +0200
Subject: [PATCH] Issue #81: Added automated tests

---
 src/main/java/ui/TDiagramPanel.java           |  17 +-
 ttool/src/test/java/ui/TestTDiagramPanel.java | 149 ++++++++++++------
 2 files changed, 112 insertions(+), 54 deletions(-)

diff --git a/src/main/java/ui/TDiagramPanel.java b/src/main/java/ui/TDiagramPanel.java
index 4edb760bec..5c491bd2d7 100755
--- a/src/main/java/ui/TDiagramPanel.java
+++ b/src/main/java/ui/TDiagramPanel.java
@@ -243,7 +243,7 @@ public abstract class TDiagramPanel extends JPanel implements GenericTree {
 
 
     public boolean drawable = true;
-    public static final int MOVE_SPEED = 1; //Speed of component moving with arrow keys
+    protected static final int MOVE_SPEED = 1; //Speed of component moving with arrow keys
 
 
     // Constructor
@@ -379,6 +379,7 @@ public abstract class TDiagramPanel extends JPanel implements GenericTree {
         return name;
     }
 
+    @Override
     public String toString() {
         return name;
     }
@@ -387,7 +388,6 @@ public abstract class TDiagramPanel extends JPanel implements GenericTree {
         this.componentList = new LinkedList<>();
     }
 
-
     public void setInternalCommentVisible(int mode) {
         internalCommentVisible = mode;
     }
@@ -425,7 +425,6 @@ public abstract class TDiagramPanel extends JPanel implements GenericTree {
         mgui.selectTab(tp, name);
     }
 
-
     @Override
     protected void paintComponent(Graphics g) {
         paintMycomponents(g);
@@ -435,7 +434,7 @@ public abstract class TDiagramPanel extends JPanel implements GenericTree {
         paintMycomponents(g, true, 1, 1);
     }
 
-    public void basicPaintMyComponents(Graphics g) {
+    protected void basicPaintMyComponents(Graphics g) {
         TGComponent tgc;
         for (int i = componentList.size() - 1; i >= 0; i--) {
             tgc = this.componentList.get(i);
@@ -455,7 +454,6 @@ public abstract class TDiagramPanel extends JPanel implements GenericTree {
             return;
         }
 
-
         if (this.fontToUse == null)
             this.fontToUse = g.getFont();
         else
@@ -684,7 +682,6 @@ public abstract class TDiagramPanel extends JPanel implements GenericTree {
         return sb;
     }
 
-
     public void activateActions(boolean b) {
         ttb.setActive(b);
     }
@@ -722,7 +719,6 @@ public abstract class TDiagramPanel extends JPanel implements GenericTree {
         boolean hoveredElementFound = false;
         byte info = 0;
 
-
         TGComponent tmp = componentHovered;
         componentHovered = null;
 
@@ -769,7 +765,6 @@ public abstract class TDiagramPanel extends JPanel implements GenericTree {
         boolean pointedElementFound = false;
         byte info = 0;
 
-
         TGComponent tmp = componentPointed;
         componentPointed = null;
         this.setToolTipText(null);
@@ -1277,15 +1272,17 @@ public abstract class TDiagramPanel extends JPanel implements GenericTree {
         int oldY = ySel;
         xSel = x;
         ySel = y;
-        for (TGComponent tgc : this.componentList)
+        
+        for (TGComponent tgc : this.componentList) {
             if (tgc.isSelected()) {
                 if ((xSel - oldX != 0) || (ySel - oldY != 0)) {
                     /*TraceManager.addDev("" + tgc + " is selected oldX=" + xSel +
                             " oldY=" + oldY + " xSel=" + xSel + " ySel=" + ySel);*/
                 }
+                
                 tgc.forceMove(xSel - oldX, ySel - oldY);
-
             }
+        }
     }
 
     public TGComponent nextSelectedComponent() {
diff --git a/ttool/src/test/java/ui/TestTDiagramPanel.java b/ttool/src/test/java/ui/TestTDiagramPanel.java
index 3e30042828..970c55a482 100644
--- a/ttool/src/test/java/ui/TestTDiagramPanel.java
+++ b/ttool/src/test/java/ui/TestTDiagramPanel.java
@@ -2,65 +2,126 @@ package ui;
 
 import static org.junit.Assert.assertTrue;
 
+import java.awt.Point;
+
 import org.junit.Before;
 import org.junit.Test;
 
-import ui.tmldd.TMLArchiBUSNode;
+import ui.avatarad.AvatarADStopState;
+import ui.tmlcompd.TMLCCompositeComponent;
 import ui.tmldd.TMLArchiDiagramPanel;
 import ui.tmldd.TMLArchiDiagramToolBar;
 
 public class TestTDiagramPanel extends AbstractUITest {
 	static TDiagramPanel diagramPanel;
-	static TGCWithInternalComponent component;
-	
+	static TGCScalableWithoutInternalComponent atomicComponent;
+	static TGCScalableWithInternalComponent compositeComponent;
+
 	public TestTDiagramPanel() {
 		super();
 	}
-	
+
 	@Before
-    public void setUp() throws Exception {
-//		mgui = new MainGUI(false, false, false, false, false, false, false, false, false, false, false, true);
-//		mgui.build();	
-		//PluginManager.pluginManager = new PluginManager();
+	public void setUp() throws Exception {
 		final TToolBar toolBar = new TMLArchiDiagramToolBar( mainGUI );
-        diagramPanel = new TMLArchiDiagramPanel( mainGUI, toolBar );
-        component = new TMLArchiBUSNode( 500, 500, 0, 1400, 0, 1900, true, null, diagramPanel );
-        diagramPanel.setComponentPointed(null);
-    }
-	
+		diagramPanel = new TMLArchiDiagramPanel( mainGUI, toolBar );
+		atomicComponent = new AvatarADStopState( 500, 500, 0, 1400, 0, 1900, true, null, diagramPanel );
+		diagramPanel.addBuiltComponent( atomicComponent );
+
+		compositeComponent = new TMLCCompositeComponent( 500, 500, 0, 1400, 0, 1900, true, null, diagramPanel );
+		diagramPanel.addBuiltComponent( compositeComponent );
+
+		diagramPanel.setComponentPointed(null);
+	}
+
 	@Test
-    public void testMoveUp() {
-       diagramPanel.upComponent();
-       diagramPanel.setComponentPointed(component);
-       diagramPanel.upComponent();
-       assertTrue(component.getY() == 499);
-       assertTrue(component.getX() == 500);
-    }
-	
+	public void testMoveUp() {
+		final Point expectedPos = new Point( atomicComponent.getX(), atomicComponent.getY() - TDiagramPanel.MOVE_SPEED );
+
+		diagramPanel.upComponent();
+		diagramPanel.setComponentPointed(atomicComponent);
+		diagramPanel.upComponent();
+
+		checkResults( expectedPos, atomicComponent );
+//		assertTrue(atomicComponent.getY() == 499);
+//		assertTrue(atomicComponent.getX() == 500);
+	}
+
 	@Test
-    public void testMoveDown() {
-       diagramPanel.downComponent();
-       diagramPanel.setComponentPointed(component);
-       diagramPanel.downComponent();
-       assertTrue(component.getY() == 501);
-       assertTrue(component.getX() == 500);
-    }
-	
+	public void testMoveDown() {
+		final Point expectedPos = new Point( atomicComponent.getX(), atomicComponent.getY() + TDiagramPanel.MOVE_SPEED );
+
+		diagramPanel.downComponent();
+		diagramPanel.setComponentPointed(atomicComponent);
+		diagramPanel.downComponent();
+
+		checkResults( expectedPos, atomicComponent );
+//		assertTrue(atomicComponent.getY() == 501);
+//		assertTrue(atomicComponent.getX() == 500);
+	}
+
 	@Test
-    public void testMoveRight() {
-       diagramPanel.rightComponent();
-       diagramPanel.setComponentPointed(component);
-       diagramPanel.rightComponent();
-       assertTrue(component.getX() == 501);
-       assertTrue(component.getY() == 500);
-    }
-	
+	public void testMoveRight() {
+		final Point expectedPos = new Point( atomicComponent.getX() + TDiagramPanel.MOVE_SPEED, atomicComponent.getY() );
+
+		diagramPanel.rightComponent();
+		diagramPanel.setComponentPointed(atomicComponent);
+		diagramPanel.rightComponent();
+
+		checkResults( expectedPos, atomicComponent );
+//		assertTrue(atomicComponent.getX() == 501);
+//		assertTrue(atomicComponent.getY() == 500);
+	}
+
 	@Test
-    public void testMoveLeft() {
-       diagramPanel.leftComponent();
-       diagramPanel.setComponentPointed(component);
-       diagramPanel.leftComponent();
-       assertTrue(component.getX() == 499);
-       assertTrue(component.getY() == 500);
-    }
+	public void testMoveLeft() {
+		final Point expectedPos = new Point( atomicComponent.getX() - TDiagramPanel.MOVE_SPEED, atomicComponent.getY() );
+		
+		diagramPanel.leftComponent();
+		diagramPanel.setComponentPointed(atomicComponent);
+		diagramPanel.leftComponent();
+
+		checkResults( expectedPos, atomicComponent );
+
+//		assertTrue(atomicComponent.getX() == 499);
+//		assertTrue(atomicComponent.getY() == 500);
+	}
+
+	/**
+	 * Issue #81
+	 */
+	 @Test
+	 public void testMoveAtomicComponentAfterZoom() {
+		diagramPanel.setZoom( 3.0 );
+
+		diagramPanel.setComponentPointed( atomicComponent );
+
+		final Point expectedPos = new Point( atomicComponent.getX() + TDiagramPanel.MOVE_SPEED, atomicComponent.getY() );
+
+		diagramPanel.rightComponent();
+
+		checkResults( expectedPos, atomicComponent );
+	 }
+
+	 /**
+	  * Issue #81
+	  */
+	 @Test
+	 public void testMoveCompositeComponentAfterZoom() {
+		 diagramPanel.setZoom( 3.0 );
+
+		 diagramPanel.setComponentPointed( compositeComponent );
+
+		 final Point expectedPos = new Point( compositeComponent.getX() + TDiagramPanel.MOVE_SPEED, compositeComponent.getY() );
+
+		 diagramPanel.rightComponent();
+
+		 checkResults( expectedPos, compositeComponent );
+	 }
+
+	 private void checkResults( 	final Point expectedPos,
+			 final TGComponent component ) {
+		 assertTrue( "X position is " + component.getX() + " instead of " + expectedPos.x + ".", component.getX() == expectedPos.x );
+		 assertTrue( "Y position is " + component.getY() + " instead of " + expectedPos.y + ".", component.getY() == expectedPos.y );
+	 }
 }
-- 
GitLab