| /* | |
| * 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)); | |
| } | |
| } |