tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

table-rows.html (7109B)


      1 <!DOCTYPE html>
      2 <title>HTMLTableElement.rows</title>
      3 <script src="/resources/testharness.js"></script>
      4 <script src="/resources/testharnessreport.js"></script>
      5 <div id="log"></div>
      6 <script>
      7 function assert_nodelist_equals(actual, expected) {
      8  assert_equals(actual.length, expected.length);
      9 
     10  for (var i = 0; i < actual.length; ++i) {
     11    assert_true(i in actual);
     12    assert_true(actual.hasOwnProperty(i),
     13                "property " + i + " expected to be present on the object");
     14    assert_equals(actual.item(i), expected[i]);
     15    assert_equals(actual[i], expected[i]);
     16  }
     17 }
     18 
     19 function test_table_simple(group, table) {
     20  var foo1 = group.appendChild(document.createElement("tr"));
     21  foo1.id = "foo";
     22  var bar1 = group.appendChild(document.createElement("tr"));
     23  bar1.id = "bar";
     24  var foo2 = group.appendChild(document.createElement("tr"));
     25  foo2.id = "foo";
     26  var bar2 = group.appendChild(document.createElement("tr"));
     27  bar2.id = "bar";
     28 
     29  assert_true(table.rows instanceof HTMLCollection, "table.rows should be a HTMLCollection.");
     30  assert_nodelist_equals(table.rows, [foo1, bar1, foo2, bar2]);
     31  assert_equals(table.rows.foo, foo1);
     32  assert_equals(table.rows["foo"], foo1);
     33  assert_equals(table.rows.namedItem("foo"), foo1);
     34  assert_equals(table.rows.bar, bar1);
     35  assert_equals(table.rows["bar"], bar1);
     36  assert_equals(table.rows.namedItem("bar"), bar1);
     37  assert_array_equals(Object.getOwnPropertyNames(table.rows), [
     38    "0",
     39    "1",
     40    "2",
     41    "3",
     42    "foo",
     43    "bar"
     44  ]);
     45 }
     46 test(function() {
     47  var table = document.createElement("table");
     48  test_table_simple(table, table);
     49 }, "Children of table");
     50 test(function() {
     51  var table = document.createElement("table");
     52  var group = table.appendChild(document.createElement("thead"));
     53  test_table_simple(group, table);
     54 }, "Children of thead");
     55 test(function() {
     56  var table = document.createElement("table");
     57  var group = table.appendChild(document.createElement("tbody"));
     58  test_table_simple(group, table);
     59 }, "Children of tbody");
     60 test(function() {
     61  var table = document.createElement("table");
     62  var group = table.appendChild(document.createElement("tfoot"));
     63  test_table_simple(group, table);
     64 }, "Children of tfoot");
     65 test(function() {
     66  var table = document.createElement("table");
     67  var orphan1 = table.appendChild(document.createElement("tr"));
     68  orphan1.id = "orphan1";
     69  var foot1 = table.appendChild(document.createElement("tfoot"));
     70  var orphan2 = table.appendChild(document.createElement("tr"));
     71  orphan2.id = "orphan2";
     72  var foot2 = table.appendChild(document.createElement("tfoot"));
     73  var orphan3 = table.appendChild(document.createElement("tr"));
     74  orphan3.id = "orphan3";
     75  var body1 = table.appendChild(document.createElement("tbody"));
     76  var orphan4 = table.appendChild(document.createElement("tr"));
     77  orphan4.id = "orphan4";
     78  var body2 = table.appendChild(document.createElement("tbody"));
     79  var orphan5 = table.appendChild(document.createElement("tr"));
     80  orphan5.id = "orphan5";
     81  var head1 = table.appendChild(document.createElement("thead"));
     82  var orphan6 = table.appendChild(document.createElement("tr"));
     83  orphan6.id = "orphan6";
     84  var head2 = table.appendChild(document.createElement("thead"));
     85  var orphan7 = table.appendChild(document.createElement("tr"));
     86  orphan7.id = "orphan7";
     87 
     88  var foot1row1 = foot1.appendChild(document.createElement("tr"));
     89  foot1row1.id = "foot1row1";
     90  var foot1row2 = foot1.appendChild(document.createElement("tr"));
     91  foot1row2.id = "foot1row2";
     92  var foot2row1 = foot2.appendChild(document.createElement("tr"));
     93  foot2row1.id = "foot2row1";
     94  var foot2row2 = foot2.appendChild(document.createElement("tr"));
     95  foot2row2.id = "foot2row2";
     96 
     97  var body1row1 = body1.appendChild(document.createElement("tr"));
     98  body1row1.id = "body1row1";
     99  var body1row2 = body1.appendChild(document.createElement("tr"));
    100  body1row2.id = "body1row2";
    101  var body2row1 = body2.appendChild(document.createElement("tr"));
    102  body2row1.id = "body2row1";
    103  var body2row2 = body2.appendChild(document.createElement("tr"));
    104  body2row2.id = "body2row2";
    105 
    106  var head1row1 = head1.appendChild(document.createElement("tr"));
    107  head1row1.id = "head1row1";
    108  var head1row2 = head1.appendChild(document.createElement("tr"));
    109  head1row2.id = "head1row2";
    110  var head2row1 = head2.appendChild(document.createElement("tr"));
    111  head2row1.id = "head2row1";
    112  var head2row2 = head2.appendChild(document.createElement("tr"));
    113  head2row2.id = "head2row2";
    114 
    115  // These elements should not end up in any collection.
    116  table.appendChild(document.createElement("div"))
    117       .appendChild(document.createElement("tr"));
    118  foot1.appendChild(document.createElement("div"))
    119       .appendChild(document.createElement("tr"));
    120  body1.appendChild(document.createElement("div"))
    121       .appendChild(document.createElement("tr"));
    122  head1.appendChild(document.createElement("div"))
    123       .appendChild(document.createElement("tr"));
    124  table.appendChild(document.createElementNS("http://example.com/test", "tr"));
    125  foot1.appendChild(document.createElementNS("http://example.com/test", "tr"));
    126  body1.appendChild(document.createElementNS("http://example.com/test", "tr"));
    127  head1.appendChild(document.createElementNS("http://example.com/test", "tr"));
    128 
    129  assert_true(table.rows instanceof HTMLCollection, "table.rows should be a HTMLCollection.");
    130  assert_nodelist_equals(table.rows, [
    131    // thead
    132    head1row1,
    133    head1row2,
    134    head2row1,
    135    head2row2,
    136 
    137    // tbody + table
    138    orphan1,
    139    orphan2,
    140    orphan3,
    141    body1row1,
    142    body1row2,
    143    orphan4,
    144    body2row1,
    145    body2row2,
    146    orphan5,
    147    orphan6,
    148    orphan7,
    149 
    150    // tfoot
    151    foot1row1,
    152    foot1row2,
    153    foot2row1,
    154    foot2row2
    155  ]);
    156  assert_array_equals(Object.getOwnPropertyNames(table.rows), [
    157    "0",
    158    "1",
    159    "2",
    160    "3",
    161    "4",
    162    "5",
    163    "6",
    164    "7",
    165    "8",
    166    "9",
    167    "10",
    168    "11",
    169    "12",
    170    "13",
    171    "14",
    172    "15",
    173    "16",
    174    "17",
    175    "18",
    176    "head1row1",
    177    "head1row2",
    178    "head2row1",
    179    "head2row2",
    180    "orphan1",
    181    "orphan2",
    182    "orphan3",
    183    "body1row1",
    184    "body1row2",
    185    "orphan4",
    186    "body2row1",
    187    "body2row2",
    188    "orphan5",
    189    "orphan6",
    190    "orphan7",
    191    "foot1row1",
    192    "foot1row2",
    193    "foot2row1",
    194    "foot2row2"
    195  ]);
    196 
    197  var ids = [
    198    "orphan1",
    199    "orphan2",
    200    "orphan3",
    201    "orphan4",
    202    "orphan5",
    203    "orphan6",
    204    "orphan7",
    205    "foot1row1",
    206    "foot1row2",
    207    "foot2row1",
    208    "foot2row2",
    209    "body1row1",
    210    "body1row2",
    211    "body2row1",
    212    "body2row2",
    213    "head1row1",
    214    "head1row2",
    215    "head2row1",
    216    "head2row2"
    217  ];
    218  ids.forEach(function(id) {
    219    assert_equals(table.rows.namedItem(id).id, id);
    220    assert_true(id in table.rows);
    221    assert_equals(table.rows[id].id, id);
    222    assert_true(id in table.rows);
    223  });
    224  while (table.firstChild) {
    225    table.removeChild(table.firstChild);
    226  }
    227  ids.forEach(function(id) {
    228    assert_equals(table.rows.namedItem(id), null);
    229    assert_false(id in table.rows);
    230    assert_equals(table.rows[id], undefined);
    231    assert_false(id in table.rows);
    232  });
    233 }, "Complicated case");
    234 </script>