| /* |
| * Copyright 2010 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.dom.client.Style.Unit; |
| import com.google.gwt.user.client.ui.DockLayoutPanel.Direction; |
| |
| /** |
| * Tests for {@link DockLayoutPanel}. |
| */ |
| public class DockLayoutPanelTest extends WidgetTestBase { |
| |
| public void testGetResolvedDirection() { |
| DockLayoutPanel panel = createDockLayoutPanel(); |
| assertEquals(Direction.WEST, |
| panel.getResolvedDirection(Direction.LINE_START)); |
| assertEquals(Direction.EAST, panel.getResolvedDirection(Direction.LINE_END)); |
| } |
| |
| public void testAddLineEnd() { |
| DockLayoutPanel panel = createDockLayoutPanel(); |
| Widget widget = new Label(); |
| panel.addLineEnd(widget, 10); |
| assertEquals(Direction.LINE_END, panel.getWidgetDirection(widget)); |
| } |
| |
| public void testAddLineStart() { |
| DockLayoutPanel panel = createDockLayoutPanel(); |
| Widget widget = new Label(); |
| panel.addLineStart(widget, 10); |
| assertEquals(Direction.LINE_START, panel.getWidgetDirection(widget)); |
| } |
| |
| /** |
| * Tests {@link DockLayoutPanel#addEast(Widget, double)}. |
| */ |
| public void testAddEast() { |
| DockLayoutPanel panel = createDockLayoutPanel(); |
| Widget widget = new Label(); |
| |
| panel.addEast(widget, 10); |
| |
| assertWidgetDirection(panel, widget, Direction.EAST); |
| assertLogicalPaternity(panel, widget); |
| assertPhysicalPaternity(panel, widget); |
| } |
| |
| /** |
| * Tests {@link DockLayoutPanel#addEast(IsWidget, double)}. |
| */ |
| public void testAddEastAsIsWidget() { |
| DockLayoutPanel panel = createDockLayoutPanel(); |
| Widget widget = new Label(); |
| |
| // IsWidget cast to call the overloaded version |
| panel.addEast((IsWidget) widget, 10); |
| |
| assertWidgetDirection(panel, widget, Direction.EAST); |
| assertLogicalPaternity(panel, widget); |
| assertPhysicalPaternity(panel, widget); |
| } |
| |
| /** |
| * Tests {@link DockLayoutPanel#addNorth(Widget, double)}. |
| */ |
| public void testAddNorth() { |
| DockLayoutPanel panel = createDockLayoutPanel(); |
| Widget widget = new Label(); |
| |
| panel.addNorth(widget, 10); |
| |
| assertWidgetDirection(panel, widget, Direction.NORTH); |
| assertLogicalPaternity(panel, widget); |
| assertPhysicalPaternity(panel, widget); |
| } |
| |
| /** |
| * Tests {@link DockLayoutPanel#addNorth(IsWidget, double)}. |
| */ |
| public void testAddNorthAsIsWidget() { |
| DockLayoutPanel panel = createDockLayoutPanel(); |
| Widget widget = new Label(); |
| |
| // IsWidget cast to call the overloaded version |
| panel.addNorth((IsWidget) widget, 10); |
| |
| assertWidgetDirection(panel, widget, Direction.NORTH); |
| assertLogicalPaternity(panel, widget); |
| assertPhysicalPaternity(panel, widget); |
| } |
| |
| /** |
| * Tests {@link DockLayoutPanel#addSouth(Widget, double)}. |
| */ |
| public void testAddSouth() { |
| DockLayoutPanel panel = createDockLayoutPanel(); |
| Widget widget = new Label(); |
| |
| panel.addSouth(widget, 10); |
| |
| assertWidgetDirection(panel, widget, Direction.SOUTH); |
| assertLogicalPaternity(panel, widget); |
| assertPhysicalPaternity(panel, widget); |
| } |
| |
| /** |
| * Tests {@link DockLayoutPanel#addSouth(IsWidget, double)}. |
| */ |
| public void testAddSouthAsIsWidget() { |
| DockLayoutPanel panel = createDockLayoutPanel(); |
| Widget widget = new Label(); |
| |
| // IsWidget cast to call the overloaded version |
| panel.addSouth((IsWidget) widget, 10); |
| |
| assertWidgetDirection(panel, widget, Direction.SOUTH); |
| assertLogicalPaternity(panel, widget); |
| assertPhysicalPaternity(panel, widget); |
| } |
| |
| /** |
| * Tests {@link DockLayoutPanel#addWest(Widget, double)}. |
| */ |
| public void testAddWest() { |
| DockLayoutPanel panel = createDockLayoutPanel(); |
| Widget widget = new Label(); |
| |
| panel.addWest(widget, 10); |
| |
| assertWidgetDirection(panel, widget, Direction.WEST); |
| assertLogicalPaternity(panel, widget); |
| assertPhysicalPaternity(panel, widget); |
| } |
| |
| /** |
| * Tests {@link DockLayoutPanel#addWest(IsWidget, double)}. |
| */ |
| public void testAddWestAsIsWidget() { |
| DockLayoutPanel panel = createDockLayoutPanel(); |
| Widget widget = new Label(); |
| |
| // IsWidget cast to call the overloaded version |
| panel.addWest((IsWidget) widget, 10); |
| |
| assertWidgetDirection(panel, widget, Direction.WEST); |
| assertLogicalPaternity(panel, widget); |
| assertPhysicalPaternity(panel, widget); |
| } |
| |
| public void testInsertLineEnd() { |
| DockLayoutPanel panel = createDockLayoutPanel(); |
| Widget widget = new Label(); |
| panel.insertLineEnd(widget, 10, null); |
| assertEquals(Direction.LINE_END, panel.getWidgetDirection(widget)); |
| } |
| |
| public void testInsertLineStart() { |
| DockLayoutPanel panel = createDockLayoutPanel(); |
| Widget widget = new Label(); |
| panel.insertLineStart(widget, 10, null); |
| assertEquals(Direction.LINE_START, panel.getWidgetDirection(widget)); |
| } |
| |
| protected DockLayoutPanel createDockLayoutPanel() { |
| return new DockLayoutPanel(Unit.PX); |
| } |
| |
| /** |
| * Asserts that <b>panel</b> is the logical parent of <b>expectedChild</b>. |
| * |
| * @param panel the parent panel |
| * @param expectedChild the expected child of <b>panel</b> |
| */ |
| private void assertLogicalPaternity(ComplexPanel panel, Widget expectedChild) { |
| assertSame("The parent and the panel must be the same", panel, |
| expectedChild.getParent()); |
| assertTrue("The child must be in the childen collection of the panel", |
| panel.getChildren().contains(expectedChild)); |
| } |
| |
| /** |
| * Asserts that <b>expectedFirstChild</b> is the first physical child of |
| * <b>panel</b>. |
| * |
| * @param panel the parent panel |
| * @param expectedFirstChild the expected first child of <b>panel</b> |
| */ |
| private void assertPhysicalPaternity(DockLayoutPanel panel, |
| Widget expectedFirstChild) { |
| assertSame( |
| "The parent's Element of the child must be the panel's container Element", |
| expectedFirstChild.getElement().getParentElement(), |
| panel.getWidgetContainerElement(expectedFirstChild)); |
| assertSame( |
| "The child's Element must be first child of the panel's container Element", |
| panel.getWidgetContainerElement(expectedFirstChild).getFirstChildElement(), |
| expectedFirstChild.getElement()); |
| } |
| |
| /** |
| * Asserts that the {@link DockLayoutPanel.Direction} of <b>widget</b> in |
| * <b>panel</b> is <b>expectedDirection</b>. |
| * |
| * @param panel the panel containing <b>widget</b> |
| * @param widget the widget being tested |
| * @param expectedDirection the expected direction |
| */ |
| private void assertWidgetDirection(DockLayoutPanel panel, Widget widget, |
| DockLayoutPanel.Direction expectedDirection) { |
| assertEquals("The direction of the widget in the panel should be " |
| + expectedDirection, expectedDirection, |
| panel.getWidgetDirection(widget)); |
| } |
| |
| } |