blob: 0223d831a803362c32bcbd3bcbf76be81ac35660 [file] [log] [blame]
<!DOCTYPE html>
<!--
Copyright 2011 WebDriver committers
Copyright 2011 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.
-->
<html>
<head>
<meta charset="utf-8">
<title>bot.dom.getVisibleText Table Test</title>
<link rel="stylesheet" href="/filez/_main/third_party/js/qunit/qunit.css">
<script src="/filez/_main/third_party/js/qunit/qunit.js"></script>
<script src="/filez/_main/third_party/js/qunit/qunit_test_runner.js"></script>
<script src="test_bootstrap.js"></script>
<script src="text_util.js"></script>
<script type="text/javascript">
goog.require('bot.dom');
goog.require('bot.userAgent');
goog.require('goog.array');
goog.require('goog.dom');
goog.require('goog.testing.ExpectedFailures');
goog.require('goog.userAgent');
</script>
<style>
table {
width: 100%;
border: 1px solid black;
margin: 0.5em;
}
</style>
</head>
<body>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
<script type="text/javascript">
// Aliases for helping with creating tables.
var TABLE = goog.partial(goog.dom.createDom, goog.dom.TagName.TABLE, null);
var CAPTION = goog.partial(
goog.dom.createDom, goog.dom.TagName.CAPTION, null);
var TBODY = goog.partial(goog.dom.createDom, goog.dom.TagName.TBODY, null);
var TH = goog.partial(goog.dom.createDom, goog.dom.TagName.TH, null);
var TR = goog.partial(goog.dom.createDom, goog.dom.TagName.TR, null);
var TD = goog.partial(goog.dom.createDom, goog.dom.TagName.TD, null);
var P = goog.partial(goog.dom.createDom, goog.dom.TagName.P, null);
var expectedFailures;
QUnit.testStart(function() {
expectedFailures = new goog.testing.ExpectedFailures();
});
QUnit.testDone(function() {
expectedFailures.handleTearDown();
});
QUnit.test('empty table', function(assert) {
assertTextIs(assert, 'empty table', TABLE(), '');
});
QUnit.test('empty table body', function(assert) {
assertTextIs(assert, 'empty table body', TABLE(TBODY()), '');
});
QUnit.test('empty row', function(assert) {
assertTextIs(assert, 'empty row', TABLE(TBODY(TR(), '')));
});
QUnit.test('one empty cell', function(assert) {
assertTextIs(assert, 'one empty cell', TABLE(TBODY(TR(TD()), '')));
});
QUnit.test('two empty cells', function(assert) {
assertTextIs(assert, 'two empty cells', TABLE(TBODY(TR(TD(), TD()), '')));
});
QUnit.test('table without tbody', function(assert) {
// IE < 8 does not render cells in a dynamically-added table with a <tbody>.
assertTextIs(assert, 'table without tbody', TABLE(TR(TD('a'))), bot.userAgent.IE_DOC_PRE8 ? '' : 'a');
});
QUnit.test('one line table', function(assert) {
assertTextIs(assert, 'one line table', TABLE(TBODY(TR(TD('a'), TD('b')))), 'a b');
});
QUnit.test('simple table', function(assert) {
assertTextIs(assert, 'simple table',
TABLE(TBODY(
TR(TD('a'), TD('b')),
TR(TD('c'), TD('d')))),
'a b',
'c d');
});
QUnit.test('simple table with empty row', function(assert) {
assertTextIs(assert, 'simple table with empty row',
TABLE(TBODY(
TR(TD('a'), TD('b')),
TR(TD(), TD()))),
'a b');
});
QUnit.test('simple table with newlines between cells', function(assert) {
assertTextIs(assert, 'simple table with newlines between cells',
TABLE(TBODY(
TR(TD('a'), '\n', TD('b')),
TR(TD('c'), '\n', TD('d')))),
'a b',
'c d');
});
QUnit.test('simple table cells end with newlines', function(assert) {
assertTextIs(assert, 'simple table cells end with newlines',
TABLE(TBODY(
TR(TD('a\n'), TD('b\n')),
TR(TD('c\n'), TD('d\n')))),
'a b',
'c d');
});
QUnit.test('simple table with newlines between rows', function(assert) {
assertTextIs(assert, 'simple table with newlines between rows',
TABLE(TBODY(
TR(TD('a'), TD('b'), '\n\n'),
TR(TD('c'), TD('d')))),
'a b',
'c d');
});
QUnit.test('a table with a caption', function(assert) {
assertTextIs(assert, 'a table with a caption',
TABLE(TBODY(
CAPTION('This is a caption'),
TR(TD('a'), TD('b')),
TR(TD('c'), TD('d')))),
'This is a caption',
'a b',
'c d');
});
QUnit.test('a table with empty cells', function(assert) {
assertTextIs(assert, 'a table with empty cells',
TABLE(TBODY(
TR(TD('a'), TD('b'), TD('c')),
TR(TD(), TD(), TD('Previous two cells were empty')))),
'a b c',
'Previous two cells were empty');
});
QUnit.test('a table with paragraphs', function(assert) {
assertTextIs(assert, 'a table with paragraphs',
TABLE(TBODY(TR(
TD(P('table cell '), P('with '), P('paragraphs')),
TD('Cell #2')))),
'table cell',
'with',
'paragraphs',
'Cell #2');
});
QUnit.test('nested tables', function(assert) {
assertTextIs(assert, 'nested tables',
TABLE(TBODY(
TR(TD("Table 1, Row 1, Cell 1"), TD("Table 1, Row 1, Cell 2")),
TR(TD("Table 1, Row 2, Cell 1"),
TD("Table 1, Row 2, Cell 2",
TABLE(TBODY(
TR(TD("Table 2, Row 1, Cell 1"),
TD("Table 2, Row 1, Cell 2")))))))),
"Table 1, Row 1, Cell 1 Table 1, Row 1, Cell 2",
"Table 1, Row 2, Cell 1 Table 1, Row 2, Cell 2",
"Table 2, Row 1, Cell 1 Table 2, Row 1, Cell 2");
});
QUnit.test('nested tables rows in outer table after inner table', function(assert) {
assertTextIs(assert, 'nested tables rows in outer table after inner table',
TABLE(TBODY(
TR(TD("Table 1, Row 1, Cell 1"), TD("Table 1, Row 1, Cell 2")),
TR(TD("Table 1, Row 2, Cell 1"),
TD("Table 1, Row 2, Cell 2",
TABLE(TBODY(
TR(TD("Table 2, Row 1, Cell 1"),
TD("Table 2, Row 1, Cell 2")))))),
TR(TD("Table 1, Row 3, Cell 1"), TD("Table 1, Row 3, Cell 2")))),
"Table 1, Row 1, Cell 1 Table 1, Row 1, Cell 2",
"Table 1, Row 2, Cell 1 Table 1, Row 2, Cell 2",
"Table 2, Row 1, Cell 1 Table 2, Row 1, Cell 2",
"Table 1, Row 3, Cell 1 Table 1, Row 3, Cell 2");
});
QUnit.test('nested tables now with newlines', function(assert) {
assertTextIs(assert, 'nested tables now with newlines',
goog.dom.getElement('nestedTable'),
"Table 1, Row 1, Cell 1 Table 1, Row 1, Cell 2",
"Table 1, Row 2, Cell 1 Table 1, Row 2, Cell 2",
"Table 2, Row 1, Cell 1 Table 2, Row 1, Cell 2",
"Table 1, Row 3, Cell 1 Table 1, Row 3, Cell 2");
});
QUnit.test('table with collapsed rows', function(assert) {
expectedFailures.expectFailureFor(
(goog.userAgent.IE && !goog.userAgent.isDocumentModeOrHigher(8)),
'IE does not support visibility:collapsed until IE8');
expectedFailures.run(function() {
assertTextIs(assert, 'table with collapsed rows',
goog.dom.getElement('collapsedTable'),
'a', 'c');
});
});
</script>
<table id="collapsedTable">
<tr><td>a</td></tr>
<tr style="visibility:collapse"><td>b</td></tr>
<tr><td>c</td></tr>
</table>
<table id="nestedTable">
<tr>
<td>
Table 1, Row 1, Cell 1
</td>
<td>
Table 1, Row 1, Cell 2
</td>
</tr>
<tr>
<td>
Table 1, Row 2, Cell 1
</td>
<td>
Table 1, Row 2, Cell 2
<table>
<tr>
<td>
Table 2, Row 1, Cell 1
</td>
<td>
Table 2, Row 1, Cell 2
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
Table 1, Row 3, Cell 1
</td>
<td>
Table 1, Row 3, Cell 2
</td>
</tr>
</table>
</body>
</html>