blob: a751b7af78cfaedaa086f11e6d124a8332a483a0 [file] [log] [blame]
/*
* 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));
}
}