aboutsummaryrefslogtreecommitdiff
path: root/contexts/data/lib/closure-library/closure/goog/editor/table_test.html
diff options
context:
space:
mode:
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/editor/table_test.html')
-rw-r--r--contexts/data/lib/closure-library/closure/goog/editor/table_test.html529
1 files changed, 0 insertions, 529 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/editor/table_test.html b/contexts/data/lib/closure-library/closure/goog/editor/table_test.html
deleted file mode 100644
index 8f58a3d..0000000
--- a/contexts/data/lib/closure-library/closure/goog/editor/table_test.html
+++ /dev/null
@@ -1,529 +0,0 @@
-<html>
-<html>
-<!--
-Copyright 2011 The Closure Library Authors. All Rights Reserved.
-
-Use of this source code is governed by the Apache License, Version 2.0.
-See the COPYING file for details.
--->
-<head>
-<meta http-equiv="X-UA-Compatible" content="IE=edge">
- <title>table.js Tests</title>
- <script src="../base.js"></script>
- <script>
- goog.require('goog.editor.Table');
- goog.require('goog.testing.jsunit');
- </script>
-
- <style>
- table {
- border:1px outset #777;
- margin-top: 1em;
- empty-cells: show;
- }
- td, th {
- border:1px inset #777;
- }
- </style>
- </head>
- <body>
-
- <table id="test-basic">
- <tr><th>Number</th><th>Color</th><th>Speed</th></tr>
- <tr><td>One</td><td>Red</td><td>60</td></tr>
- <tr><td>Two</td><td>Blue</td><td>75</td></tr>
- <tr><td>Three</td><td>Orange</td><td>88</td></tr>
- </table>
-
- <table id="test-torture">
- <tr><th rowspan="2" >Left 0+1<br />&nbsp;</th><th colspan="2">Middle, Right 0</th></tr>
- <tr><td colspan="2" rowspan="2">Middle, Right 1 + 2<br />&nbsp;</td></tr>
- <tr><th>Left 2</th></tr>
- <tr><th>Left 3</th><td>Middle 3</td><td>Right 3</td></tr>
- <tr><th colspan="3">Left, Middle, Right 4</th></tr>
- <tr><th colspan="2" rowspan="2">Left, Middle 5+6<br />&nbsp;</th><td rowspan="4">Right 5+6+7+8</td>
- <tr></tr>
- <tr><th rowspan="2">Left 7+8</th><td>Middle 7</td></tr>
- <tr><td>Middle 8</td></tr>
- </table>
-
- <table id="test-nested">
- <tr><td>One</td><td>Two</td><td>
- <table>
- <tr><td>Nested cell 1</td><td>Nested cell 2</td></tr>
- <tr><td>Nested cell 2</td><td>Nested cell 3</td></tr>
- </table>
- </td>
- </tr>
- <tr><td>Four</td><td>Five</td><td>Six</td></tr>
- </table>
-
- <script>
-
- function setUp() {
- var inputTables = document.getElementsByTagName('table');
- testElements = {};
- testObjects = {}
- for (var i = 0; i < inputTables.length; i++) {
- var originalTable = inputTables[i];
- if (originalTable.id.substring(0, 5) == 'test-') {
- var tableName = originalTable.id.substring(5);
- var testTable = originalTable.cloneNode(true);
- testTable.id = tableName;
- testElements[tableName] = testTable;
- document.body.appendChild(testTable);
- testObjects[tableName] = new goog.editor.Table(testTable);
- }
- }
- }
-
- function tearDown() {
- for (var tableName in testElements) {
- document.body.removeChild(testElements[tableName]);
- delete testElements[tableName];
- delete testObjects[tableName];
- }
- testElements = null;
- testObjects = null;
- }
-
- // These tests don't pass on Safari, because the table editor only works
- // on IE and FF right now.
- // TODO(nicksantos): Fix this.
- if (!goog.userAgent.WEBKIT) {
-
- function tableSanityCheck(editableTable, rowCount, colCount) {
- assertEquals('Table has expected number of rows',
- rowCount, editableTable.rows.length);
- for (var i = 0, row; row = editableTable.rows[i]; i++) {
- assertEquals('Row ' + i + ' has expected number of columns',
- colCount, row.columns.length);
- }
- }
-
- function testBasicTable() {
- // Do some basic sanity checking on the editable table structure
- tableSanityCheck(testObjects.basic, 4, 3);
- var originalRows = testElements.basic.getElementsByTagName('tr');
- assertEquals('Basic table row count, compared to source',
- originalRows.length, testObjects.basic.rows.length);
- assertEquals('Basic table row count, known value',
- 4, testObjects.basic.rows.length);
- assertEquals('Basic table first row element',
- originalRows[0], testObjects.basic.rows[0].element);
- assertEquals('Basic table last row element',
- originalRows[3], testObjects.basic.rows[3].element);
- assertEquals('Basic table first row length',
- 3, testObjects.basic.rows[0].columns.length);
- assertEquals('Basic table last row length',
- 3, testObjects.basic.rows[3].columns.length);
- }
-
- function testTortureTable() {
- // Do basic sanity checking on torture table structure
- tableSanityCheck(testObjects.torture, 9, 3);
- var originalRows = testElements.torture.getElementsByTagName('tr');
- assertEquals('Torture table row count, compared to source',
- originalRows.length, testObjects.torture.rows.length);
- assertEquals('Torture table row count, known value',
- 9, testObjects.torture.rows.length);
- }
-
- function _testInsertRowResult(element, editableTable, newTr, index) {
- if (element == testElements.basic) {
- originalRowCount = 4;
- } else if (element == testElements.torture) {
- originalRowCount = 9;
- }
-
- assertEquals('Row was added to table',
- originalRowCount + 1, element.getElementsByTagName('tr').length);
- assertEquals('Row was added at position ' + index,
- element.getElementsByTagName('tr')[index], newTr);
- assertEquals('Row knows its own position',
- index, editableTable.rows[index].index);
- assertEquals('EditableTable shows row at position ' + index,
- newTr, editableTable.rows[index].element);
- assertEquals('New row has correct number of TDs',
- 3, newTr.getElementsByTagName('td').length);
- }
-
- function testInsertRowAtBeginning() {
- var tr = testObjects.basic.insertRow(0);
- _testInsertRowResult(testElements.basic, testObjects.basic, tr, 0);
- }
-
- function testInsertRowInMiddle() {
- var tr = testObjects.basic.insertRow(2);
- _testInsertRowResult(testElements.basic, testObjects.basic, tr, 2);
- }
-
- function testInsertRowAtEnd() {
- assertEquals('Table has expected number of existing rows',
- 4, testObjects.basic.rows.length);
- var tr = testObjects.basic.insertRow(4);
- _testInsertRowResult(testElements.basic, testObjects.basic, tr, 4);
- }
-
- function testInsertRowAtEndNoIndexArgument() {
- assertEquals('Table has expected number of existing rows',
- 4, testObjects.basic.rows.length);
- var tr = testObjects.basic.insertRow();
- _testInsertRowResult(testElements.basic, testObjects.basic, tr, 4);
- }
-
- function testInsertRowAtBeginningRowspan() {
- // Test inserting a row when the existing DOM row at that index has
- // a cell with a rowspan. This should be just like a regular insert -
- // the rowspan shouldn't have any effect.
- assertEquals('Cell has starting rowspan',
- 2,
- goog.dom.getFirstElementChild(
- testElements.torture.getElementsByTagName('tr')[0]).rowSpan);
- var tr = testObjects.torture.insertRow(0);
- // Among other things this verifies that the new row has 3 child TDs.
- _testInsertRowResult(testElements.torture, testObjects.torture, tr, 0);
- }
-
- function testInsertRowAtEndingRowspan() {
- // Test inserting a row when there's a cell in a previous DOM row
- // with a rowspan that extends into the row with the given index
- // and ends there. This should be just like a regular insert -
- // the rowspan shouldn't have any effect.
- assertEquals('Cell has ending rowspan',
- 4,
- goog.dom.getLastElementChild(
- testElements.torture.getElementsByTagName('tr')[5]).rowSpan);
- var tr = testObjects.torture.insertRow();
- // Among other things this verifies that the new row has 3 child TDs.
- _testInsertRowResult(testElements.torture, testObjects.torture, tr, 9);
- }
-
- function testInsertRowAtSpanningRowspan() {
- // Test inserting a row at an index where there's a cell with a rowspan
- // that begins in a previous row and continues into the next row. In this
- // case the existing cell's rowspan should be extended, and the new
- // tr should have one less child element.
- var rowSpannedCell = testObjects.torture.rows[7].columns[2];
- assertTrue('Existing cell has overlapping rowspan',
- rowSpannedCell.startRow == 5 && rowSpannedCell.endRow == 8);
- var tr = testObjects.torture.insertRow(7);
- assertEquals('New DOM row has one less cell',
- 2, tr.getElementsByTagName('td').length);
- assertEquals('Rowspanned cell listed in new EditableRow\'s columns',
- testObjects.torture.rows[6].columns[2].element,
- testObjects.torture.rows[7].columns[2].element)
- }
-
- function _testInsertColumnResult(newCells, element, editableTable, index) {
- for (var rowNo = 0, row; row = editableTable.rows[rowNo]; rowNo++) {
- assertEquals('Row includes new column',
- 4, row.columns.length);
- }
- assertEquals('New cell in correct position',
- newCells[0], editableTable.rows[0].columns[index].element);
- }
-
- function testInsertColumnAtBeginning() {
- var startColCount = testObjects.basic.rows[0].columns.length;
- var newCells = testObjects.basic.insertColumn(0);
- assertEquals('New cell added for each row',
- testObjects.basic.rows.length, newCells.length);
- assertEquals('Insert column incremented column length',
- startColCount + 1, testObjects.basic.rows[0].columns.length);
- _testInsertColumnResult(newCells, testElements.basic, testObjects.basic, 0);
- }
-
- function testInsertColumnAtEnd() {
- var startColCount = testObjects.basic.rows[0].columns.length;
- var newCells = testObjects.basic.insertColumn(3);
- assertEquals('New cell added for each row',
- testObjects.basic.rows.length, newCells.length);
- assertEquals('Insert column incremented column length',
- startColCount + 1, testObjects.basic.rows[0].columns.length);
- _testInsertColumnResult(newCells, testElements.basic, testObjects.basic, 3);
- }
-
- function testInsertColumnAtEndNoIndexArgument() {
- var startColCount = testObjects.basic.rows[0].columns.length;
- var newCells = testObjects.basic.insertColumn();
- assertEquals('New cell added for each row',
- testObjects.basic.rows.length, newCells.length);
- assertEquals('Insert column incremented column length',
- startColCount + 1, testObjects.basic.rows[0].columns.length);
- _testInsertColumnResult(newCells, testElements.basic, testObjects.basic, 3);
- }
-
- function testInsertColumnInMiddle() {
- var startColCount = testObjects.basic.rows[0].columns.length;
- var newCells = testObjects.basic.insertColumn(2);
- assertEquals('New cell added for each row',
- testObjects.basic.rows.length, newCells.length);
- assertEquals('Insert column incremented column length',
- startColCount + 1, testObjects.basic.rows[0].columns.length);
- _testInsertColumnResult(newCells, testElements.basic, testObjects.basic, 2);
- }
-
- function testInsertColumnAtBeginning() {
- var startColCount = testObjects.basic.rows[0].columns.length;
- var newCells = testObjects.basic.insertColumn(0);
- assertEquals('Insert column incremented column length',
- startColCount + 1, testObjects.basic.rows[0].columns.length);
- _testInsertColumnResult(newCells, testElements.basic, testObjects.basic, 0);
- }
-
- function testInsertColumnAtBeginningColSpan() {
- var cells = testObjects.torture.insertColumn(0);
- tableSanityCheck(testObjects.torture, 9, 4);
- assertEquals('New cell was added before colspanned cell',
- 1, testObjects.torture.rows[3].columns[0].colSpan);
- assertEquals('New cell was added and returned',
- testObjects.torture.rows[3].columns[0].element,
- cells[3]);
- }
-
- function testInsertColumnAtEndingColSpan() {
- var cells = testObjects.torture.insertColumn();
- tableSanityCheck(testObjects.torture, 9, 4);
- assertEquals('New cell was added after colspanned cell',
- 1, testObjects.torture.rows[0].columns[3].colSpan);
- assertEquals('New cell was added and returned',
- testObjects.torture.rows[0].columns[3].element,
- cells[0]);
- }
-
- function testInsertColumnAtSpanningColSpan() {
- assertEquals('Existing cell has expected colspan',
- 3, testObjects.torture.rows[4].columns[1].colSpan);
- var cells = testObjects.torture.insertColumn(1);
- tableSanityCheck(testObjects.torture, 9, 4);
- assertEquals('Existing cell increased colspan',
- 4, testObjects.torture.rows[4].columns[1].colSpan);
- assertEquals('3 cells weren\'t created due to existing colspans',
- 6, cells.length);
- }
-
- function testRemoveFirstRow() {
- var originalRow = testElements.basic.getElementsByTagName('tr')[0];
- testObjects.basic.removeRow(0);
- tableSanityCheck(testObjects.basic, 3, 3);
- assertNotEquals('Row was removed from table element',
- originalRow, testElements.basic.getElementsByTagName('tr')[0]);
- }
-
- function testRemoveLastRow() {
- var originalRow = testElements.basic.getElementsByTagName('tr')[3];
- testObjects.basic.removeRow(3);
- tableSanityCheck(testObjects.basic, 3, 3);
- assertNotEquals('Row was removed from table element',
- originalRow, testElements.basic.getElementsByTagName('tr')[3]);
- }
-
- function testRemoveMiddleRow() {
- var originalRow = testElements.basic.getElementsByTagName('tr')[2];
- testObjects.basic.removeRow(2);
- tableSanityCheck(testObjects.basic, 3, 3);
- assertNotEquals('Row was removed from table element',
- originalRow, testElements.basic.getElementsByTagName('tr')[2]);
- }
-
- function testRemoveRowAtBeginingRowSpan() {
- var originalRow = testObjects.torture.removeRow(0);
- tableSanityCheck(testObjects.torture, 8, 3);
- assertNotEquals('Row was removed from table element',
- originalRow, testElements.basic.getElementsByTagName('tr')[0]);
- assertEquals('Rowspan correctly adjusted',
- 1, testObjects.torture.rows[0].columns[0].rowSpan);
- }
-
- function testRemoveRowAtEndingRowSpan() {
- var originalRow = testElements.torture.getElementsByTagName('tr')[8];
- testObjects.torture.removeRow(8);
- tableSanityCheck(testObjects.torture, 8, 3);
- assertNotEquals('Row was removed from table element',
- originalRow, testElements.basic.getElementsByTagName('tr')[8]);
- assertEquals('Rowspan correctly adjusted',
- 3, testObjects.torture.rows[7].columns[2].rowSpan);
- }
-
- function testRemoveRowAtSpanningRowSpan() {
- var originalRow = testElements.torture.getElementsByTagName('tr')[7];
- testObjects.torture.removeRow(7);
- tableSanityCheck(testObjects.torture, 8, 3);
- assertNotEquals('Row was removed from table element',
- originalRow, testElements.basic.getElementsByTagName('tr')[7]);
- assertEquals('Rowspan correctly adjusted',
- 3, testObjects.torture.rows[6].columns[2].rowSpan);
- }
-
- function _testRemoveColumn(index) {
- var sampleCell = testElements.basic.getElementsByTagName(
- 'tr')[0].getElementsByTagName('th')[index];
- testObjects.basic.removeColumn(index);
- tableSanityCheck(testObjects.basic, 4, 2);
- assertNotEquals(
- 'Test cell removed from column',
- sampleCell,
- testElements.basic.getElementsByTagName(
- 'tr')[0].getElementsByTagName('th')[index]);
- }
-
- function testRemoveFirstColumn() {
- _testRemoveColumn(0);
- }
-
- function testRemoveMiddleColumn() {
- _testRemoveColumn(1);
- }
-
- function testRemoveLastColumn() {
- _testRemoveColumn(2);
- }
-
- function testRemoveColumnAtStartingColSpan() {
- testObjects.torture.removeColumn(0);
- tableSanityCheck(testObjects.torture, 9, 2);
- assertEquals('Colspan was decremented correctly',
- 1,
- testElements.torture.getElementsByTagName(
- 'tr')[5].getElementsByTagName('th')[0].colSpan);
- }
-
- function testRemoveColumnAtEndingColSpan() {
- testObjects.torture.removeColumn(2);
- tableSanityCheck(testObjects.torture, 9, 2);
- assertEquals('Colspan was decremented correctly',
- 1,
- testElements.torture.getElementsByTagName(
- 'tr')[1].getElementsByTagName('td')[0].colSpan);
- }
-
- function testRemoveColumnAtSpanningColSpan() {
- testObjects.torture.removeColumn(2);
- tableSanityCheck(testObjects.torture, 9, 2);
- assertEquals('Colspan was decremented correctly',
- 2,
- testElements.torture.getElementsByTagName(
- 'tr')[4].getElementsByTagName('th')[0].colSpan);
- }
-
- function testMergeCellsInRow() {
- testObjects.basic.mergeCells(0, 0, 0, 2);
- tableSanityCheck(testObjects.basic, 4, 3);
- var trs = testElements.basic.getElementsByTagName('tr');
- assertEquals('Cells merged',
- 1, trs[0].getElementsByTagName('th').length);
- assertEquals('Merged cell has correct colspan',
- 3, trs[0].getElementsByTagName('th')[0].colSpan);
- assertEquals('Merged cell has correct rowspan',
- 1, trs[0].getElementsByTagName('th')[0].rowSpan);
- }
-
- function testMergeCellsInColumn() {
- testObjects.basic.mergeCells(0, 0, 2, 0);
- tableSanityCheck(testObjects.basic, 4, 3);
- var trs = testElements.basic.getElementsByTagName('tr');
- assertEquals('Other cells still in row',
- 3, trs[0].getElementsByTagName('th').length);
- assertEquals('Merged cell has correct colspan',
- 1, trs[0].getElementsByTagName('th')[0].colSpan);
- assertEquals('Merged cell has correct rowspan',
- 3, trs[0].getElementsByTagName('th')[0].rowSpan);
- assert('Cell appears in multiple rows after merge',
- testObjects.basic.rows[0].columns[0] ==
- testObjects.basic.rows[2].columns[0]);
- }
-
- function testMergeCellsInRowAndColumn() {
- testObjects.basic.mergeCells(1, 1, 3, 2);
- tableSanityCheck(testObjects.basic, 4, 3);
- var trs = testElements.basic.getElementsByTagName('tr');
- var mergedCell = trs[1].getElementsByTagName('td')[1];
- assertEquals('Merged cell has correct rowspan',
- 3, mergedCell.rowSpan);
- assertEquals('Merged cell has correct colspan',
- 2, mergedCell.colSpan);
- }
-
- function testMergeCellsAlreadyMerged() {
- testObjects.torture.mergeCells(5, 0, 8, 2);
- tableSanityCheck(testObjects.torture, 9, 3);
- var trs = testElements.torture.getElementsByTagName('tr');
- var mergedCell = trs[5].getElementsByTagName('th')[0];
- assertEquals('Merged cell has correct rowspan',
- 4, mergedCell.rowSpan);
- assertEquals('Merged cell has correct colspan',
- 3, mergedCell.colSpan);
- }
-
- function testIllegalMergeNonRectangular() {
- // This should fail because it involves trying to merge two parts
- // of a 3-colspan cell with other cells
- var mergeSucceeded = testObjects.torture.mergeCells(3, 1, 5, 2);
- if (mergeSucceeded) {
- throw 'EditableTable allowed impossible merge!';
- }
- tableSanityCheck(testObjects.torture, 9, 3);
- }
-
- function testIllegalMergeSingleCell() {
- // This should fail because it involves merging a single cell
- var mergeSucceeded = testObjects.torture.mergeCells(0, 1, 0, 1);
- if (mergeSucceeded) {
- throw 'EditableTable allowed impossible merge!';
- }
- tableSanityCheck(testObjects.torture, 9, 3);
- }
-
- function testSplitCell() {
- testObjects.torture.splitCell(1, 1);
- tableSanityCheck(testObjects.torture, 9, 3);
- var trs = testElements.torture.getElementsByTagName('tr');
- assertEquals('Cell was split into multiple columns in row 1',
- 3, trs[1].getElementsByTagName('*').length);
- assertEquals('Cell was split into multiple columns in row 2',
- 3, trs[2].getElementsByTagName('*').length);
- }
-
- function testChildTableRowsNotCountedInParentTable() {
- tableSanityCheck(testObjects.nested, 2, 3);
- for (var i = 0; i < testObjects.nested.rows.length; i++) {
- var tr = testObjects.nested.rows[i].element;
- // A tr's parent is tbody, parent of that is table - check to
- // make sure the ancestor table is as expected. This means
- // that none of the child table's rows have been erroneously
- // loaded into the EditableTable.
- assertEquals('Row is child of parent table',
- testElements.nested,
- tr.parentNode.parentNode);
- }
- }
-
- }
-
- </script>
-
- <script>
-/*
- // TODO(user): write more unit tests for selection stuff.
- // The following code is left in here for reference in implementing
- // this TODO.
-
- var tds = goog.dom.getElement('test1').getElementsByTagName('td');
- var range = goog.dom.Range.createFromNodes(tds[7], tds[9]);
- range.select();
- var cellSelection = new goog.editor.Table.CellSelection(range);
- assertEquals(0, cellSelection.getFirstColumnIndex());
- assertEquals(2, cellSelection.getLastColumnIndex());
- assertEquals(2, cellSelection.getFirstRowIndex());
- assertEquals(2, cellSelection.getLastRowIndex());
- assertTrue(cellSelection.isRectangle());
-
- range = goog.dom.Range.createFromNodes(tds[7], tds[12]);
- range.select();
- var cellSelection2 = new goog.editor.Table.CellSelection(range);
- assertFalse(cellSelection2.isRectangle());
-*/
- </script>
- </body>
-</html>