diff options
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.html | 529 |
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 /> </th><th colspan="2">Middle, Right 0</th></tr> - <tr><td colspan="2" rowspan="2">Middle, Right 1 + 2<br /> </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 /> </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> |