blob: 548d6a07437027e3a26bf04095f6578bd92f803d [file] [log] [blame]
/*
* Copyright 2007 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.user.client.DOM;
import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
/**
* TODO: document me.
*/
public class FlexTableTest extends HTMLTableTestBase {
public HTMLTable getTable(int row, int column) {
return new FlexTable();
}
public void testWidgetPos() {
FlexTable t = new FlexTable();
HTML widget_3_0 = new HTML("3,0");
HTML widget_3_1 = new HTML("3,1");
HTML widget_1_2 = new HTML("1,2");
t.setWidget(0, 0, widget_3_1);
t.insertRow(0);
t.insertCell(1, 0);
t.setWidget(1, 0, widget_3_0);
t.insertRow(0);
t.setWidget(0, 0, widget_1_2);
t.insertCells(0, 0, 2);
t.insertRow(0);
int hit = 0;
for (int row = 0; row < 4; row++) {
int colBounds = t.getCellCount(row);
for (int col = 0; col < colBounds; col++) {
Widget widget = t.getWidget(row, col);
if (row == 3 && col == 0) {
++hit;
assertEquals(widget_3_0, widget);
} else if (row == 3 && col == 1) {
++hit;
assertEquals(widget_3_1, widget);
} else if (row == 1 && col == 2) {
++hit;
assertEquals(widget_1_2, widget);
} else {
if (widget != null) {
System.err.println("row: " + row + ", col: " + col + ", widget: "
+ DOM.toString(widget.getElement()));
}
assertNull(widget);
}
}
}
assertEquals(3, hit);
// Move widget.
t.setWidget(3, 2, widget_1_2);
assertEquals(widget_1_2, t.getWidget(3, 2));
assertNull(t.getWidget(1, 2));
// Remove by widget.
t.remove(widget_3_0);
assertNull(t.getWidget(3, 0));
assertEquals(widget_3_1, t.getWidget(3, 1));
// Remove by cell.
t.removeCell(3, 1);
assertEquals(widget_1_2, t.getWidget(3, 1));
}
public void testInertFirst() {
FlexTable t = new FlexTable();
t.insertRow(0);
t.setWidget(0, 3, new HTML("hello"));
t.insertRow(1);
t.setWidget(1, 0, new HTML("goodbye"));
}
public void testBounds() {
HTMLTable t = getTable(3, 3);
try {
t.setText(-1, 0, "hello");
fail("IndexOutOfBoundsException should have been thrown");
} catch (IndexOutOfBoundsException e) {
assertEquals("Cannot create a row with a negative index: -1",
e.getMessage());
}
try {
t.setText(0, -1, "hello");
fail("IndexOutOfBoundsException should have been thrown");
} catch (IndexOutOfBoundsException e) {
assertEquals("Cannot create a column with a negative index: -1",
e.getMessage());
}
try {
t.clearCell(3, 3);
fail("IndexOutOfBoundsException should have been thrown");
} catch (IndexOutOfBoundsException e) {
assertEquals("Row index: 3, Row size: 1", e.getMessage());
}
try {
t.getText(0, 5);
fail("IndexOutOfBoundsException should have been thrown");
} catch (Exception e) {
// Expected
}
}
public void testNullWidget() {
FlexTable ft = new FlexTable();
ft.setText(0, 0, "hello");
assertNull(ft.getWidget(0, 0));
ft.setWidget(0, 1, null);
assertNull(ft.getWidget(0, 1));
ft.clear();
}
public void testRemoveAllRows() {
FlexTable table = new FlexTable();
for (int row = 0; row < 4; row++) {
table.setHTML(row, 0, row + ":0");
table.setHTML(row, 1, row + ":1");
table.setWidget(row, 2, new Button(row + ":2"));
table.setWidget(row, 3, new Button(row + ":3"));
}
assertEquals(4, table.getRowCount());
table.removeAllRows();
assertEquals(0, table.getRowCount());
}
public void secondarySetHeightTest() {
FlexTable ft = new FlexTable();
FlexCellFormatter cellFormatter = (FlexCellFormatter) ft.getCellFormatter();
cellFormatter.setHeight(3, 1, "300px");
cellFormatter.setColSpan(3, 1, 2);
}
}