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