Bug 497491: [UnitTest] Make Unittest/getTest work in Test Setup code

  fixed calls to getTest() in all setup/teardown stages

Change-Id: Ib83805003d3889d6e26f9b889a84599f86c4f649
diff --git a/plugins/org.eclipse.ease.modules.unittest/src/org/eclipse/ease/modules/unittest/components/Test.java b/plugins/org.eclipse.ease.modules.unittest/src/org/eclipse/ease/modules/unittest/components/Test.java
index 5e6da18..a65fba1 100644
--- a/plugins/org.eclipse.ease.modules.unittest/src/org/eclipse/ease/modules/unittest/components/Test.java
+++ b/plugins/org.eclipse.ease.modules.unittest/src/org/eclipse/ease/modules/unittest/components/Test.java
@@ -31,9 +31,9 @@
 	private String fDescription;
 	private List<IScriptDebugFrame> fTestLocation = null;
 
-	private final List<TestResult> fResults = new ArrayList<TestResult>();
+	private final List<TestResult> fResults = new ArrayList<>();
 
-	private final Map<String, String> fMetaData = new HashMap<String, String>();
+	private final Map<String, String> fMetaData = new HashMap<>();
 	private boolean fTransient = false;
 
 	public Test(final TestComposite parent, final String title, final String description) {
@@ -81,7 +81,7 @@
 
 	public void setTestLocation(final List<IScriptDebugFrame> stackTrace) {
 		// we need to create a carbon copy of the stack as it gets modified when the script continues
-		fTestLocation = new ArrayList<IScriptDebugFrame>();
+		fTestLocation = new ArrayList<>();
 		for (final IScriptDebugFrame frame : stackTrace)
 			fTestLocation.add(new ScriptDebugFrame(frame));
 	}
@@ -131,7 +131,7 @@
 	 * @return messages with given <i>status</i>
 	 */
 	public Collection<TestResult> getMessages(final TestStatus status) {
-		final ArrayList<TestResult> result = new ArrayList<TestResult>();
+		final ArrayList<TestResult> result = new ArrayList<>();
 
 		for (final TestResult message : getMessages())
 			if (message.getStatus().equals(status))
@@ -150,7 +150,7 @@
 					final Object file = element.getScript().getFile();
 					if ((file instanceof IFile) && (((IFile) file).exists())) {
 						try {
-							final HashMap<String, Object> attributes = new HashMap<String, Object>();
+							final HashMap<String, Object> attributes = new HashMap<>();
 							attributes.put(IMarker.LINE_NUMBER, element.getLineNumber());
 							attributes.put(IMarker.SEVERITY, IMarker.SEVERITY_ERROR);
 							attributes.put(IMarker.MESSAGE, result.getDescription());
@@ -177,4 +177,9 @@
 	public Map<String, String> getMetaData() {
 		return Collections.unmodifiableMap(fMetaData);
 	}
+
+	@Override
+	public String toString() {
+		return getTitle();
+	}
 }
diff --git a/plugins/org.eclipse.ease.modules.unittest/src/org/eclipse/ease/modules/unittest/components/TestSuite.java b/plugins/org.eclipse.ease.modules.unittest/src/org/eclipse/ease/modules/unittest/components/TestSuite.java
index 33e8125..69c049c 100644
--- a/plugins/org.eclipse.ease.modules.unittest/src/org/eclipse/ease/modules/unittest/components/TestSuite.java
+++ b/plugins/org.eclipse.ease.modules.unittest/src/org/eclipse/ease/modules/unittest/components/TestSuite.java
@@ -10,6 +10,7 @@
  *******************************************************************************/
 package org.eclipse.ease.modules.unittest.components;
 
+import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -436,4 +437,16 @@
 	public Object getFile() {
 		return getModel().getFile();
 	}
+
+	@Override
+	public String toString() {
+		final Object file = getFile();
+		if (file instanceof IFile)
+			return ((IFile) file).getName();
+
+		if (file instanceof File)
+			return ((File) file).getName();
+
+		return super.toString();
+	}
 }
diff --git a/plugins/org.eclipse.ease.modules.unittest/src/org/eclipse/ease/modules/unittest/modules/UnitTestModule.java b/plugins/org.eclipse.ease.modules.unittest/src/org/eclipse/ease/modules/unittest/modules/UnitTestModule.java
index becfef0..02e4cf8 100644
--- a/plugins/org.eclipse.ease.modules.unittest/src/org/eclipse/ease/modules/unittest/modules/UnitTestModule.java
+++ b/plugins/org.eclipse.ease.modules.unittest/src/org/eclipse/ease/modules/unittest/modules/UnitTestModule.java
@@ -211,8 +211,6 @@
 		fAssertionsToBeIgnored = 0;
 		fAssertionEnablement = true;
 
-		executeUserCode(TestSuiteModel.CODE_LOCATION_TEST_SETUP);
-
 		final TestComposite testObject = getTestObject();
 		if (testObject != null) {
 			final Test test = new Test(testObject, title, description);
@@ -224,6 +222,8 @@
 
 			testObject.addTest(test);
 		}
+
+		executeUserCode(TestSuiteModel.CODE_LOCATION_TEST_SETUP);
 	}
 
 	/**
@@ -231,11 +231,11 @@
 	 */
 	@WrapToScript
 	public final void endTest() {
+		executeUserCode(TestSuiteModel.CODE_LOCATION_TEST_TEARDOWN);
+
 		final TestComposite testObject = getTestObject();
 		if (testObject != null)
 			testObject.endTest();
-
-		executeUserCode(TestSuiteModel.CODE_LOCATION_TEST_TEARDOWN);
 	}
 
 	/**
@@ -327,10 +327,11 @@
 	 */
 	@WrapToScript
 	public Test getTest(@ScriptParameter(defaultValue = ScriptParameter.NULL) final String name) {
+		final TestComposite owner = (getTestFile() != null) ? getTestFile() : getTestSuite();
 		if (name == null)
-			return getTestFile().getCurrentTest();
+			return owner.getCurrentTest();
 
-		for (final TestEntity test : getTestFile().getChildren()) {
+		for (final TestEntity test : owner.getChildren()) {
 			if ((test instanceof Test) && (name.equals(((Test) test).getTitle())))
 				return (Test) test;
 		}