Don't use mockito in Nebula Grid tests

As Nebula Grid tests are executed against signed RAP Runtime Nightly
build, mocking RAP Runtime classes is not possible.
diff --git a/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/gridcolumngroupkip/GridColumnGroupLCA_Test.java b/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/gridcolumngroupkip/GridColumnGroupLCA_Test.java
index 0670431..fc79bac 100644
--- a/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/gridcolumngroupkip/GridColumnGroupLCA_Test.java
+++ b/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/gridcolumngroupkip/GridColumnGroupLCA_Test.java
@@ -14,12 +14,9 @@
 import static org.eclipse.nebula.widgets.grid.GridTestUtil.loadImage;
 import static org.eclipse.nebula.widgets.grid.internal.gridkit.GridLCATestUtil.jsonEquals;
 import static org.eclipse.rap.rwt.lifecycle.WidgetUtil.getId;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
 import java.io.IOException;
 import java.util.Arrays;
+import java.util.LinkedList;
 import java.util.List;
 
 import org.eclipse.nebula.widgets.grid.Grid;
@@ -34,18 +31,16 @@
 import org.eclipse.rap.rwt.testfixture.Message.DestroyOperation;
 import org.eclipse.rap.rwt.testfixture.Message.Operation;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.TreeEvent;
-import org.eclipse.swt.events.TreeListener;
 import org.eclipse.swt.graphics.Font;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.internal.graphics.ImageFactory;
 import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Shell;
 import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
-import org.mockito.ArgumentCaptor;
-
 import junit.framework.TestCase;
 
 
@@ -246,31 +241,29 @@
   }
 
   public void testProcessTreeEvent_Expanded() {
-    TreeListener treeListener = mock( TreeListener.class );
-    group.addTreeListener( treeListener );
+    List<Event> events = new LinkedList<Event>();
+    group.addListener( SWT.Expand, new LoggingTreeListener( events ) );
     group.setExpanded( false );
 
     Fixture.fakeNotifyOperation( getId( group ), ClientMessageConst.EVENT_TREE_EXPANDED, null );
     Fixture.readDataAndProcessAction( group );
 
-    ArgumentCaptor<TreeEvent> captor = ArgumentCaptor.forClass( TreeEvent.class );
-    verify( treeListener, times( 1 ) ).treeExpanded( captor.capture() );
-    TreeEvent event = captor.getValue();
-    assertEquals( group, event.getSource() );
+    assertEquals( 1, events.size() );
+    Event event = events.get( 0 );
+    assertEquals( group, event.widget );
     assertTrue( group.getExpanded() );
   }
 
   public void testProcessTreeEvent_Collapsed() {
-    TreeListener treeListener = mock( TreeListener.class );
-    group.addTreeListener( treeListener );
+    List<Event> events = new LinkedList<Event>();
+    group.addListener( SWT.Collapse, new LoggingTreeListener( events ) );
 
     Fixture.fakeNotifyOperation( getId( group ), ClientMessageConst.EVENT_TREE_COLLAPSED, null );
     Fixture.readDataAndProcessAction( group );
 
-    ArgumentCaptor<TreeEvent> captor = ArgumentCaptor.forClass( TreeEvent.class );
-    verify( treeListener, times( 1 ) ).treeCollapsed( captor.capture() );
-    TreeEvent event = captor.getValue();
-    assertEquals( group, event.getSource() );
+    assertEquals( 1, events.size() );
+    Event event = events.get( 0 );
+    assertEquals( group, event.widget );
     assertFalse( group.getExpanded() );
   }
 
@@ -430,4 +423,17 @@
     assertNull( message.findSetOperation( group, "customVariant" ) );
   }
 
+  //////////////////
+  // Helping classes
+
+  private static class LoggingTreeListener implements Listener {
+    private final List<Event> events;
+    private LoggingTreeListener( List<Event> events ) {
+      this.events = events;
+    }
+    public void handleEvent( Event event ) {
+      events.add( event );
+    }
+  }
+
 }
diff --git a/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/gridcolumnkit/GridColumnLCA_Test.java b/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/gridcolumnkit/GridColumnLCA_Test.java
index 64afc1c..5231437 100644
--- a/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/gridcolumnkit/GridColumnLCA_Test.java
+++ b/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/gridcolumnkit/GridColumnLCA_Test.java
@@ -14,11 +14,6 @@
 import static org.eclipse.nebula.widgets.grid.GridTestUtil.loadImage;
 import static org.eclipse.nebula.widgets.grid.internal.gridkit.GridLCATestUtil.jsonEquals;
 import static org.eclipse.rap.rwt.lifecycle.WidgetUtil.getId;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.LinkedList;
@@ -37,8 +32,6 @@
 import org.eclipse.rap.rwt.testfixture.Message.DestroyOperation;
 import org.eclipse.rap.rwt.testfixture.Message.Operation;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ControlEvent;
-import org.eclipse.swt.events.ControlListener;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
@@ -46,6 +39,8 @@
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.internal.graphics.ImageFactory;
 import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Shell;
 import org.json.JSONArray;
 import org.json.JSONException;
@@ -523,11 +518,10 @@
   }
 
   public void testReadWidth() {
+    final List<Event> events = new LinkedList<Event>();
     GridColumn[] columns = createGridColumns( grid, 2, SWT.NONE );
-    ControlListener controlListener0 = mock( ControlListener.class );
-    columns[ 0 ].addControlListener( controlListener0 );
-    ControlListener controlListener1 = mock( ControlListener.class );
-    columns[ 1 ].addControlListener( controlListener1 );
+    columns[ 0 ].addListener( SWT.Resize, new LoggingControlListener( events ) );
+    columns[ 1 ].addListener( SWT.Move, new LoggingControlListener( events ) );
 
     // Simulate request that initializes widgets
     Fixture.fakeNewRequest( display );
@@ -541,22 +535,23 @@
     Fixture.fakeCallOperation( getId( columns[ 0 ] ), "resize", parameters );
     Fixture.executeLifeCycleFromServerThread();
 
-    verify( controlListener0, times( 1 ) ).controlResized( any( ControlEvent.class ) );
+    assertEquals( 2, events.size() );
+    Event event = events.get( 0 );
+    assertSame( columns[ 0 ], event.widget );
     assertEquals( newWidth, columns[ 0 ].getWidth() );
-    verify( controlListener1, times( 1 ) ).controlMoved( any( ControlEvent.class ) );
+    event = events.get( 1 );
+    assertSame( columns[ 1 ], event.widget );
     Message message = Fixture.getProtocolMessage();
     assertEquals( Integer.valueOf( newWidth ), message.findSetProperty( columns[ 0 ], "width" ) );
     assertEquals( Integer.valueOf( newLeft ), message.findSetProperty( columns[ 1 ], "left" ) );
   }
 
   public void testReadLeft() {
+    final List<Event> events = new LinkedList<Event>();
     GridColumn[] columns = createGridColumns( grid, 2, SWT.NONE );
-    ControlListener controlListener = mock( ControlListener.class );
-    column.addControlListener( controlListener );
-    ControlListener controlListener0 = mock( ControlListener.class );
-    columns[ 0 ].addControlListener( controlListener0 );
-    ControlListener controlListener1 = mock( ControlListener.class );
-    columns[ 1 ].addControlListener( controlListener1 );
+    column.addListener( SWT.Move, new LoggingControlListener( events ) );
+    columns[ 0 ].addListener( SWT.Move, new LoggingControlListener( events ) );
+    columns[ 1 ].addListener( SWT.Move, new LoggingControlListener( events ) );
 
     // Simulate request that initializes widgets
     Fixture.fakeNewRequest( display );
@@ -569,9 +564,11 @@
     Fixture.fakeCallOperation( getId( columns[ 0 ] ), "move", parameters );
     Fixture.executeLifeCycleFromServerThread();
 
-    verify( controlListener, times( 1 ) ).controlMoved( any( ControlEvent.class ) );
-    verify( controlListener0, times( 1 ) ).controlMoved( any( ControlEvent.class ) );
-    verify( controlListener1, times( 0 ) ).controlMoved( any( ControlEvent.class ) );
+    assertEquals( 2, events.size() );
+    Event event = events.get( 0 );
+    assertSame( columns[ 0 ], event.widget );
+    event = events.get( 1 );
+    assertSame( column, event.widget );
     Message message = Fixture.getProtocolMessage();
     assertEquals( Integer.valueOf( 20 ), message.findSetProperty( column, "left" ) );
     assertEquals( Integer.valueOf( 0 ), message.findSetProperty( columns[ 0 ], "left" ) );
@@ -976,4 +973,17 @@
     assertEquals( JSONObject.NULL, message.findSetProperty( column, "footerImage" ) );
   }
 
+  //////////////////
+  // Helping classes
+
+  private static class LoggingControlListener implements Listener {
+    private final List<Event> events;
+    private LoggingControlListener( List<Event> events ) {
+      this.events = events;
+    }
+    public void handleEvent( Event event ) {
+      events.add( event );
+    }
+  }
+
 }
diff --git a/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/griditemkit/GridItemLCA_Test.java b/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/griditemkit/GridItemLCA_Test.java
index 14c3f77..67a3dfa 100644
--- a/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/griditemkit/GridItemLCA_Test.java
+++ b/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/griditemkit/GridItemLCA_Test.java
@@ -16,11 +16,10 @@
 import static org.eclipse.nebula.widgets.grid.internal.gridkit.GridLCATestUtil.jsonEquals;
 import static org.eclipse.rap.rwt.internal.protocol.ClientMessageConst.EVENT_TREE_EXPANDED;
 import static org.eclipse.rap.rwt.lifecycle.WidgetUtil.getId;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
 import java.io.IOException;
+import java.util.LinkedList;
+import java.util.List;
+
 import org.eclipse.nebula.widgets.grid.Grid;
 import org.eclipse.nebula.widgets.grid.GridItem;
 import org.eclipse.rap.rwt.RWT;
@@ -32,17 +31,15 @@
 import org.eclipse.rap.rwt.testfixture.Message.CreateOperation;
 import org.eclipse.rap.rwt.testfixture.Message.DestroyOperation;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.TreeEvent;
-import org.eclipse.swt.events.TreeListener;
 import org.eclipse.swt.graphics.Font;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Shell;
 import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
-import org.mockito.ArgumentCaptor;
-
 import junit.framework.TestCase;
 
 
@@ -620,34 +617,32 @@
   }
 
   public void testProcessTreeEvent_Expanded() {
-    TreeListener treeListener = mock( TestTreeListener.class );
-    grid.addTreeListener( treeListener );
+    List<Event> events = new LinkedList<Event>();
+    grid.addListener( SWT.Expand, new LoggingTreeListener( events ) );
     new GridItem( item, SWT.NONE );
 
     Fixture.fakeNotifyOperation( getId( item ), ClientMessageConst.EVENT_TREE_EXPANDED, null );
     Fixture.readDataAndProcessAction( item );
 
-    ArgumentCaptor<TreeEvent> captor = ArgumentCaptor.forClass( TreeEvent.class );
-    verify( treeListener, times( 1 ) ).treeExpanded( captor.capture() );
-    TreeEvent event = captor.getValue();
-    assertEquals( grid, event.getSource() );
+    assertEquals( 1, events.size() );
+    Event event = events.get( 0 );
+    assertEquals( grid, event.widget );
     assertEquals( item, event.item );
     assertTrue( item.isExpanded() );
   }
 
   public void testProcessTreeEvent_Collapsed() {
-    TreeListener treeListener = mock( TestTreeListener.class );
-    grid.addTreeListener( treeListener );
+    List<Event> events = new LinkedList<Event>();
+    grid.addListener( SWT.Collapse, new LoggingTreeListener( events ) );
     new GridItem( item, SWT.NONE );
     item.setExpanded( true );
 
     Fixture.fakeNotifyOperation( getId( item ), ClientMessageConst.EVENT_TREE_COLLAPSED, null );
     Fixture.readDataAndProcessAction( item );
 
-    ArgumentCaptor<TreeEvent> captor = ArgumentCaptor.forClass( TreeEvent.class );
-    verify( treeListener, times( 1 ) ).treeCollapsed( captor.capture() );
-    TreeEvent event = captor.getValue();
-    assertEquals( grid, event.getSource() );
+    assertEquals( 1, events.size() );
+    Event event = events.get( 0 );
+    assertEquals( grid, event.widget );
     assertEquals( item, event.item );
     assertFalse( item.isExpanded() );
   }
@@ -669,12 +664,13 @@
   //////////////////
   // Helping classes
 
-  // [if] Workaround for mockito exception on the build server:
-  // "Mockito cannot mock this class: interface org.eclipse.swt.events.TreeListener"
-  public static class TestTreeListener implements TreeListener {
-    public void treeCollapsed( TreeEvent event ) {
+  private static class LoggingTreeListener implements Listener {
+    private final List<Event> events;
+    private LoggingTreeListener( List<Event> events ) {
+      this.events = events;
     }
-    public void treeExpanded( TreeEvent event ) {
+    public void handleEvent( Event event ) {
+      events.add( event );
     }
   }