HTMLTableElement.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. describe("HTMLTableElement", () => {
  2. loadLocalPage("Table.html");
  3. afterInitialPageLoad(page => {
  4. test("empty table attributes", () => {
  5. let table = page.document.getElementById("empty-table");
  6. expect(table).not.toBeNull();
  7. expect(table.caption).toBe(null);
  8. expect(table.tHead).toBe(null);
  9. expect(table.tFoot).toBe(null);
  10. expect(table.tBodies).toHaveLength(0);
  11. expect(table.rows).toHaveLength(0);
  12. });
  13. test("full table attributes", () => {
  14. let table = page.document.getElementById("full-table");
  15. expect(table).not.toBeNull();
  16. expect(table.caption.nodeName).toBe("CAPTION");
  17. expect(table.tHead.nodeName).toBe("THEAD");
  18. expect(table.tFoot.nodeName).toBe("TFOOT");
  19. expect(table.tBodies.length).toBe(1);
  20. expect(table.rows.length).toBe(3);
  21. });
  22. test("create/delete caption", () => {
  23. let table = page.document.createElement("table");
  24. expect(table).not.toBeNull();
  25. expect(table.caption).toBeNull();
  26. table.createCaption();
  27. expect(table.caption).not.toBeNull();
  28. table.deleteCaption();
  29. expect(table.caption).toBeNull();
  30. });
  31. test("create/delete thead", () => {
  32. let table = page.document.createElement("table");
  33. expect(table).not.toBeNull();
  34. expect(table.tHead).toBeNull();
  35. table.createTHead();
  36. expect(table.tHead).not.toBeNull();
  37. table.deleteTHead();
  38. expect(table.tHead).toBeNull();
  39. });
  40. test("create/delete tfoot", () => {
  41. let table = page.document.createElement("table");
  42. expect(table).not.toBeNull();
  43. expect(table.tFoot).toBeNull();
  44. table.createTFoot();
  45. expect(table.tFoot).not.toBeNull();
  46. table.deleteTFoot();
  47. expect(table.tFoot).toBeNull();
  48. });
  49. test("insert rows", () => {
  50. let table = page.document.createElement("table");
  51. expect(table).not.toBeNull();
  52. // We hardcode the default value in a few places, due to the WrapperGenerator's bug with default values
  53. const defaultValue = -1;
  54. expect(table.rows.length).toBe(0);
  55. // insertRow with an index > number of rows will throw
  56. expect(() => {
  57. table.insertRow(1);
  58. }).toThrow();
  59. // Inserting a row into an empty table will create a <tbody> and <tr>
  60. let rowFirst = table.insertRow(defaultValue);
  61. rowFirst.innerText = "row_first";
  62. expect(table.firstElementChild.nodeName).toBe("TBODY");
  63. expect(table.firstElementChild.firstElementChild.nodeName).toBe("TR");
  64. expect(table.firstElementChild.firstElementChild.innerText).toBe("row_first");
  65. for (let i = 0; i < 10; i++) {
  66. let row = table.insertRow(defaultValue);
  67. row.innerText = "row" + i;
  68. }
  69. expect(table.rows.length).toBe(11);
  70. // insertRow with the default value
  71. let rowDefault = table.insertRow(defaultValue);
  72. rowDefault.innerText = "row_default";
  73. expect(table.rows[table.rows.length - 1].innerText).toBe("row_default");
  74. });
  75. test("delete rows", () => {
  76. let table = page.document.createElement("table");
  77. expect(table).not.toBeNull();
  78. // We hardcode the default value in a few places, due to the WrapperGenerator's bug with default values
  79. const defaultValue = -1;
  80. // deleteRow with an index > number of rows will throw
  81. expect(table.deleteRow).toThrow();
  82. for (let i = 0; i < 10; i++) {
  83. let row = table.insertRow(defaultValue);
  84. row.innerText = "row" + i;
  85. }
  86. // deleteRow with with no argument will delete the last row
  87. expect(table.rows[table.rows.length - 1].innerText).toBe("row9");
  88. table.deleteRow(defaultValue);
  89. expect(table.rows[table.rows.length - 1].innerText).toBe("row8");
  90. // We can delete a row with a specific index
  91. expect(table.rows[5].innerText).toBe("row5");
  92. table.deleteRow(5);
  93. expect(table.rows[5].innerText).toBe("row6");
  94. });
  95. });
  96. waitForPageToLoad();
  97. });