swtbot: Fix TestTraceOffsetting
authorPatrick Tasse <patrick.tasse@gmail.com>
Fri, 27 Mar 2015 22:54:19 +0000 (18:54 -0400)
committerPatrick Tasse <patrick.tasse@gmail.com>
Tue, 31 Mar 2015 15:29:19 +0000 (11:29 -0400)
The keystroke for enter key is fixed.

The test waits for project element to exist before opening trace.

The test waits for the trace editor to be opened or closed.

The old event table is disposed after reopening the trace and cannot be
reused. The new trace editor and its event table must be used.

The test now checks correctly that the timestamp is actually offset.

Change-Id: I069b406698207f2ca7d08f4ca87dcf0d45a4385e
Signed-off-by: Patrick Tasse <patrick.tasse@gmail.com>
Reviewed-on: https://git.eclipse.org/r/44791
Reviewed-by: Hudson CI
org.eclipse.tracecompass.tmf.ui.swtbot.tests/shared/org/eclipse/tracecompass/tmf/ui/swtbot/tests/shared/ConditionHelpers.java
org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/viewers/events/TestTraceOffsetting.java

index f4bef92e864d432439d9f42f7ff1859c4b3dd7fb..a0eb9b186d6a7bc48ca70927a2525d1b16d351ca 100644 (file)
@@ -9,16 +9,19 @@
  * Contributors:
  *   Matthew Khouzam - Initial API and implementation
  *   Alexandre Montplaisir - Replaced separate Condition objects by anonymous classes
- *   Patrick Tasse - Add projectElementHasChild condition
+ *   Patrick Tasse - Add projectElementHasChild and isEditorOpened conditions
  *******************************************************************************/
 
 package org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared;
 
 
+import static org.eclipse.swtbot.eclipse.finder.matchers.WidgetMatcherFactory.withPartName;
+
 import org.eclipse.jface.wizard.IWizardContainer;
 import org.eclipse.jface.wizard.IWizardPage;
 import org.eclipse.jface.wizard.Wizard;
 import org.eclipse.osgi.util.NLS;
+import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
 import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
 import org.eclipse.swtbot.swt.finder.SWTBot;
 import org.eclipse.swtbot.swt.finder.waits.DefaultCondition;
@@ -26,6 +29,8 @@ import org.eclipse.swtbot.swt.finder.waits.ICondition;
 import org.eclipse.swtbot.swt.finder.widgets.SWTBotTable;
 import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
 import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
+import org.eclipse.ui.IEditorReference;
+import org.hamcrest.Matcher;
 
 /**
  * Is a tree node available
@@ -249,4 +254,23 @@ public final class ConditionHelpers {
             return fItem;
         }
     }
-}
\ No newline at end of file
+
+    /**
+     * Condition to check if an editor with the specified title is opened.
+     *
+     * @param bot
+     *            a workbench bot
+     * @param title
+     *            the editor title
+     * @return ICondition for verification
+     */
+    public static ICondition isEditorOpened(final SWTWorkbenchBot bot, final String title) {
+        return new SWTBotTestCondition() {
+            @Override
+            public boolean test() throws Exception {
+                Matcher<IEditorReference> withPartName = withPartName(title);
+                return !bot.editors(withPartName).isEmpty();
+            }
+        };
+    }
+}
index db18091a17ca9f5e6d6b71bb7e147d375555034d..703f622cf79d4ec699abbed555c1762ef70dd82c 100644 (file)
@@ -8,6 +8,7 @@
  *
  * Contributors:
  *   Matthew Khouzam - Initial API and implementation
+ *   Patrick Tasse - Fix editor handling
  *******************************************************************************/
 
 package org.eclipse.tracecompass.tmf.ui.swtbot.tests.viewers.events;
@@ -21,23 +22,27 @@ import org.apache.log4j.ConsoleAppender;
 import org.apache.log4j.Logger;
 import org.apache.log4j.SimpleLayout;
 import org.eclipse.jface.bindings.keys.KeyStroke;
-import org.eclipse.swt.SWT;
 import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
+import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotEditor;
+import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner;
 import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences;
 import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell;
 import org.eclipse.swtbot.swt.finder.widgets.SWTBotTable;
 import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
 import org.eclipse.tracecompass.tmf.core.io.BufferedRandomAccessFile;
+import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.ConditionHelpers;
 import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.SWTBotUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
 
 /**
  * Test trace offsetting
  *
  * @author Matthew Khouzam
  */
+@RunWith(SWTBotJunit4ClassRunner.class)
 public class TestTraceOffsetting {
 
     private static final String TRACE_START = "<trace>";
@@ -105,13 +110,15 @@ public class TestTraceOffsetting {
     @Test
     public void testOffsetting() {
         SWTBotUtils.createProject(PROJET_NAME);
+        SWTBotTreeItem traceFolderItem = SWTBotUtils.selectTracesFolder(fBot, PROJET_NAME);
         SWTBotUtils.openTrace(PROJET_NAME, fLocation.getAbsolutePath(), "org.eclipse.linuxtools.tmf.core.tests.xmlstub");
-        SWTBotTreeItem treeItem = SWTBotUtils.selectTracesFolder(fBot, PROJET_NAME);
-        SWTBotTable eventsTableBot = fBot.activeEditor().bot().table();
+        SWTBotEditor editor = fBot.editorByTitle(fLocation.getName());
+        SWTBotTable eventsTableBot = editor.bot().table();
         String timestamp = eventsTableBot.cell(1, 1);
         assertEquals("19:00:00.000 000 000", timestamp);
-        treeItem.select();
-        treeItem.getItems()[0].contextMenu("Apply Time Offset...").click();
+        SWTBotTreeItem traceItem = SWTBotUtils.getTraceProjectItem(fBot, traceFolderItem, fLocation.getName());
+        traceItem.select();
+        traceItem.contextMenu("Apply Time Offset...").click();
         SWTBotUtils.waitForJobs();
         // set offset to 99 ns
         SWTBotShell shell = fBot.shell("Apply time offset");
@@ -120,21 +127,21 @@ public class TestTraceOffsetting {
         final SWTBotTreeItem swtBotTreeItem = allItems[0];
         swtBotTreeItem.select();
         swtBotTreeItem.click(1);
-        KeyStroke[] keyStrokes = new KeyStroke[1];
-        keyStrokes[0] = KeyStroke.getInstance('9');
-        swtBotTreeItem.pressShortcut(keyStrokes);
-        keyStrokes[0] = KeyStroke.getInstance('9');
-        swtBotTreeItem.pressShortcut(keyStrokes);
-        keyStrokes[0] = KeyStroke.getInstance(SWT.CR);
-        swtBotTreeItem.pressShortcut(keyStrokes);
+        swtBotTreeItem.pressShortcut(KeyStroke.getInstance('9'));
+        swtBotTreeItem.pressShortcut(KeyStroke.getInstance('9'));
+        swtBotTreeItem.pressShortcut(KeyStroke.getInstance('\n'));
         SWTBotUtils.waitForJobs();
         fBot.button("OK").click();
+
+        // wait for trace to close
+        fBot.waitWhile(ConditionHelpers.isEditorOpened(fBot, fLocation.getName()));
+
         // re-open trace
         SWTBotUtils.openTrace(PROJET_NAME, fLocation.getAbsolutePath(), "org.eclipse.linuxtools.tmf.core.tests.xmlstub");
-        SWTBotUtils.waitForJobs();
-
+        editor = fBot.editorByTitle(fLocation.getName());
+        eventsTableBot = editor.bot().table();
         timestamp = eventsTableBot.cell(1, 1);
-        assertEquals("19:00:00.000 000 000", timestamp);
+        assertEquals("19:00:00.000 000 099", timestamp);
         SWTBotUtils.deleteProject(PROJET_NAME, fBot);
     }
 
This page took 0.028802 seconds and 5 git commands to generate.