blob: 8311383964375c00386a6cfd7ad052fad07aa494 [file] [log] [blame]
/*
* Copyright 2008 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.dom.client;
import com.google.gwt.junit.client.GWTTestCase;
/**
* Tests the {@link TableElement}, {@link TableCaptionElement},
* {@link TableCellElement}, {@link TableRowElement}, and
* {@link TableSectionElement} classes.
*/
public class TableTests extends GWTTestCase {
@Override
public String getModuleName() {
return "com.google.gwt.dom.DOMTest";
}
/**
* insertRow, getRows, rowIndex.
*/
public void testInsertRow() {
Document doc = Document.get();
TableElement table = doc.createTableElement();
doc.getBody().appendChild(table);
TableRowElement row1 = table.insertRow(-1);
TableRowElement row2 = table.insertRow(-1);
TableRowElement row3 = table.insertRow(-1);
assertEquals(row1, table.getRows().getItem(0));
assertEquals(row2, table.getRows().getItem(1));
assertEquals(row3, table.getRows().getItem(2));
TableRowElement row0 = table.insertRow(0);
assertEquals(row0, table.getRows().getItem(0));
assertEquals(row1, table.getRows().getItem(1));
assertEquals(row2, table.getRows().getItem(2));
assertEquals(row3, table.getRows().getItem(3));
assertEquals(0, row0.getRowIndex());
assertEquals(1, row1.getRowIndex());
assertEquals(2, row2.getRowIndex());
assertEquals(3, row3.getRowIndex());
}
/**
* insertCell, getCells, cellIndex.
*/
public void testInsertCell() {
Document doc = Document.get();
TableElement table = doc.createTableElement();
doc.getBody().appendChild(table);
TableRowElement row = table.insertRow(0);
TableCellElement cell1 = row.insertCell(-1);
TableCellElement cell2 = row.insertCell(-1);
TableCellElement cell3 = row.insertCell(-1);
assertEquals(cell1, row.getCells().getItem(0));
assertEquals(cell2, row.getCells().getItem(1));
assertEquals(cell3, row.getCells().getItem(2));
TableCellElement cell0 = row.insertCell(0);
assertEquals(cell0, row.getCells().getItem(0));
assertEquals(cell1, row.getCells().getItem(1));
assertEquals(cell2, row.getCells().getItem(2));
assertEquals(cell3, row.getCells().getItem(3));
// TODO: TableCellElement.cellIndex is broken (always 0) on Safari 2 (bug 3295)
// assertEquals(0, cell0.getCellIndex());
// assertEquals(1, cell1.getCellIndex());
// assertEquals(2, cell2.getCellIndex());
// assertEquals(3, cell3.getCellIndex());
}
/**
* createTHead, thead, tfoot, createTFoot, tBodies, section.insertRow,
* section.rows, deleteTHead, deleteTFoot.
*/
public void testSections() {
TableElement table = Document.get().createTableElement();
// Put some rows in the body.
TableRowElement row0 = table.insertRow(-1);
TableRowElement row1 = table.insertRow(-1);
TableRowElement row2 = table.insertRow(-1);
// Add header and footer rows.
TableSectionElement thead = table.createTHead();
TableSectionElement tfoot = table.createTFoot();
TableRowElement headRow = thead.insertRow(-1);
TableRowElement footRow = tfoot.insertRow(-1);
// Add a cell to each row (this is technically required).
row0.insertCell(-1);
row1.insertCell(-1);
row2.insertCell(-1);
headRow.insertCell(-1);
footRow.insertCell(-1);
// Check tbodies, thead, tfoot.
TableSectionElement tbody = table.getTBodies().getItem(0);
assertEquals("one tbody expected", 1, table.getTBodies().getLength());
assertEquals("one tbody expected", tbody, table.getTBodies().getItem(0));
assertEquals("thead should exist", thead, table.getTHead());
assertEquals("tfoot should exist", tfoot, table.getTFoot());
assertEquals("<thead> expected", "thead", thead.getTagName().toLowerCase());
assertEquals("<tbody> expected", "tbody", tbody.getTagName().toLowerCase());
assertEquals("<tfoot> expected", "tfoot", tfoot.getTagName().toLowerCase());
// Ensure table row enumeration contains all rows (order of section rows is
// not guaranteed across browsers).
NodeList<TableRowElement> allRows = table.getRows();
assertEquals("5 rows expected", 5, allRows.getLength());
assertContains("[0] == headRow", headRow, allRows);
assertContains("[1] == footRow", footRow, allRows);
assertContains("[2] == row0", row0, allRows);
assertContains("[3] == row1", row1, allRows);
assertContains("[4] == row2", row2, allRows);
// Ensure tbody section row enumeration is correct.
NodeList<TableRowElement> bodyRows = tbody.getRows();
assertEquals("[0] == row0", row0, bodyRows.getItem(0));
assertEquals("[1] == row1", row1, bodyRows.getItem(1));
assertEquals("[2] == row2", row2, bodyRows.getItem(2));
// Remove the header and footer.
table.deleteTHead();
table.deleteTFoot();
assertNull("no thead expected", table.getTHead());
assertNull("no tfoot expected", table.getTFoot());
}
private void assertContains(String msg, Node n, NodeList<?> list) {
for (int i = 0; i < list.getLength(); ++i) {
if (list.getItem(i) == n) {
return;
}
}
fail(msg);
}
}