Revision: 9913
Author:   rj...@google.com
Date:     Tue Mar 29 12:31:22 2011
Log:      Add tests of nesting semantics for ResettableEventBus

Review at http://gwt-code-reviews.appspot.com/1395802

Review by: jlaba...@google.com
http://code.google.com/p/google-web-toolkit/source/detail?r=9913

Modified:
 /trunk/user/test/com/google/gwt/event/shared/ResettableEventBusTest.java

=======================================
--- /trunk/user/test/com/google/gwt/event/shared/ResettableEventBusTest.java Fri Sep 10 17:56:09 2010 +++ /trunk/user/test/com/google/gwt/event/shared/ResettableEventBusTest.java Tue Mar 29 12:31:22 2011
@@ -58,4 +58,62 @@
     });
     assertNotFired(mouse1, mouse2, mouse3);
   }
-}
+
+  public void testNestedResetInnerFirst() {
+    CountingEventBus wrapped = new CountingEventBus();
+    ResettableEventBus wideScope = new ResettableEventBus(wrapped);
+    ResettableEventBus narrowScope = new ResettableEventBus(wideScope);
+
+    Type<MouseDownHandler> type = MouseDownEvent.getType();
+
+    wideScope.addHandler(type, mouse1);
+    narrowScope.addHandler(type, mouse2);
+
+    wrapped.fireEvent(new MouseDownEvent() {
+    });
+    assertFired(mouse1, mouse2);
+
+    reset();
+
+    /*
+ * When I remove handlers from the narrow resettable, it should have no effect
+     * on handlers registered with the wider instance.
+     */
+
+    narrowScope.removeHandlers();
+
+    wrapped.fireEvent(new MouseDownEvent() {
+    });
+    assertFired(mouse1);
+    assertNotFired(mouse2);
+  }
+
+  public void testNestedResetOuterFirst() {
+    CountingEventBus wrapped = new CountingEventBus();
+    ResettableEventBus wideScope = new ResettableEventBus(wrapped);
+    ResettableEventBus narrowScope = new ResettableEventBus(wideScope);
+
+    Type<MouseDownHandler> type = MouseDownEvent.getType();
+
+    wideScope.addHandler(type, mouse1);
+    narrowScope.addHandler(type, mouse2);
+
+    wrapped.fireEvent(new MouseDownEvent() {
+    });
+    assertFired(mouse1, mouse2);
+
+    reset();
+
+    /*
+ * When I remove handlers from the first resettable, handlers registered
+     * by the narrower scoped one that wraps it should also be severed.
+     */
+
+    wideScope.removeHandlers();
+
+    wrapped.fireEvent(new MouseDownEvent() {
+    });
+    assertNotFired(mouse1);
+    assertNotFired(mouse2);
+  }
+}

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to