| /* |
| * Copyright 2009 Google Inc. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| * use this file except in compliance with the License. You may obtain a copy of |
| * the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| * License for the specific language governing permissions and limitations under |
| * the License. |
| */ |
| package com.google.gwt.user.client.ui; |
| |
| import com.google.gwt.event.dom.client.ChangeEvent; |
| import com.google.gwt.event.dom.client.ClickEvent; |
| import com.google.gwt.event.dom.client.ClickHandler; |
| import com.google.gwt.event.shared.HandlerRegistration; |
| import com.google.gwt.junit.client.GWTTestCase; |
| |
| /** |
| * Tests the basic widget infrastructure. |
| * |
| */ |
| public class WidgetTest extends GWTTestCase { |
| |
| ClickHandler handlerA = new ClickHandler() { |
| |
| public void onClick(ClickEvent event) { |
| } |
| }; |
| |
| ClickHandler handlerB = new ClickHandler() { |
| |
| public void onClick(ClickEvent event) { |
| } |
| }; |
| |
| @Override |
| public String getModuleName() { |
| return "com.google.gwt.user.User"; |
| } |
| |
| @SuppressWarnings("deprecation") |
| public void testCreateHandlerManager() { |
| final com.google.gwt.event.shared.HandlerManager manager = new com.google.gwt.event.shared.HandlerManager( |
| null); |
| Widget w = new Widget() { |
| @Override |
| protected com.google.gwt.event.shared.HandlerManager createHandlerManager() { |
| return manager; |
| } |
| }; |
| w.ensureHandlers(); |
| assertEquals(manager, w.getHandlerManager()); |
| } |
| |
| public void testAsWidget() { |
| Widget a = new Widget(); |
| assertSame(a, a.asWidget()); |
| } |
| |
| public void testHandlerCount() { |
| Widget a = new Widget(); |
| assertEquals(0, a.getHandlerCount(ClickEvent.getType())); |
| HandlerRegistration r1 = a.addDomHandler(handlerA, ClickEvent.getType()); |
| assertEquals(1, a.getHandlerCount(ClickEvent.getType())); |
| HandlerRegistration r2 = a.addHandler(handlerB, ClickEvent.getType()); |
| assertEquals(2, a.getHandlerCount(ClickEvent.getType())); |
| |
| assertEquals(0, a.getHandlerCount(ChangeEvent.getType())); |
| r1.removeHandler(); |
| r2.removeHandler(); |
| assertEquals(0, a.getHandlerCount(ClickEvent.getType())); |
| } |
| |
| public void testOnAttachWithErrorDoAttachChildren() { |
| // Create a panel that will throw an exception doAttachChildren |
| BadWidget w = new BadWidget(); |
| w.setFailAttachChildren(true); |
| assertFalse(w.isAttached()); |
| assertNull(w.getParent()); |
| |
| // Attach the widget. |
| try { |
| RootPanel.get().add(w); |
| fail("Expected AttachDetachException"); |
| } catch (AttachDetachException e) { |
| // Expected. |
| } |
| assertTrue(w.isAttached()); |
| assertEquals(RootPanel.get(), w.getParent()); |
| |
| // Detach the widget. |
| RootPanel.get().remove(w); |
| assertFalse(w.isAttached()); |
| assertNull(w.getParent()); |
| } |
| |
| public void testOnAttachWithErrorOnLoad() { |
| // Create a widget that will throw an exception onLoad. |
| BadWidget w = new BadWidget(); |
| w.setFailOnLoad(true); |
| assertFalse(w.isAttached()); |
| assertNull(w.getParent()); |
| |
| // Attach the widget. |
| try { |
| RootPanel.get().add(w); |
| fail("Expected IllegalArgumentException"); |
| } catch (IllegalArgumentException e) { |
| // Expected. |
| } |
| assertTrue(w.isAttached()); |
| assertEquals(RootPanel.get(), w.getParent()); |
| |
| // Detach the widget. |
| RootPanel.get().remove(w); |
| assertFalse(w.isAttached()); |
| assertNull(w.getParent()); |
| } |
| |
| public void testOnDetachWithErrorDoDetachChildren() { |
| // Create a widget that will throw an exception onUnload. |
| BadWidget w = new BadWidget(); |
| w.setFailDetachChildren(true); |
| assertFalse(w.isAttached()); |
| assertNull(w.getParent()); |
| |
| // Attach the widget. |
| RootPanel.get().add(w); |
| assertTrue(w.isAttached()); |
| assertEquals(RootPanel.get(), w.getParent()); |
| |
| // Detach the widget. |
| try { |
| RootPanel.get().remove(w); |
| fail("Expected AttachDetachException"); |
| } catch (AttachDetachException e) { |
| // Expected. |
| } |
| assertFalse(w.isAttached()); |
| assertNull(w.getParent()); |
| } |
| |
| public void testOnDetachWithErrorOnUnload() { |
| // Create a widget that will throw an exception onUnload. |
| BadWidget w = new BadWidget(); |
| w.setFailOnUnload(true); |
| assertFalse(w.isAttached()); |
| assertNull(w.getParent()); |
| |
| // Attach the widget. |
| RootPanel.get().add(w); |
| assertTrue(w.isAttached()); |
| assertEquals(RootPanel.get(), w.getParent()); |
| |
| // Detach the widget. |
| try { |
| RootPanel.get().remove(w); |
| fail("Expected IllegalArgumentException"); |
| } catch (IllegalArgumentException e) { |
| // Expected. |
| } |
| assertFalse(w.isAttached()); |
| assertNull(w.getParent()); |
| } |
| |
| public void testSetParentWithErrorOnUnload() { |
| // Create a widget that will throw an exception onUnload. |
| BadWidget w = new BadWidget(); |
| w.setFailOnUnload(true); |
| assertFalse(w.isAttached()); |
| assertNull(w.getParent()); |
| |
| // Attach the widget. |
| RootPanel.get().add(w); |
| assertTrue(w.isAttached()); |
| assertEquals(RootPanel.get(), w.getParent()); |
| |
| // Detach the widget. |
| try { |
| w.removeFromParent(); |
| fail("Expected IllegalArgumentException"); |
| } catch (IllegalArgumentException e) { |
| // Expected. |
| } |
| assertFalse(w.isAttached()); |
| assertNull(w.getParent()); |
| } |
| } |