table_element.rs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. use wasm_bindgen::prelude::*;
  2. use wasm_bindgen_test::*;
  3. use web_sys::{HtmlTableCaptionElement, HtmlTableElement, HtmlTableSectionElement};
  4. #[wasm_bindgen(module = "/tests/wasm/element.js")]
  5. extern "C" {
  6. fn new_table() -> HtmlTableElement;
  7. fn new_caption() -> HtmlTableCaptionElement;
  8. fn new_thead() -> HtmlTableSectionElement;
  9. fn new_tfoot() -> HtmlTableSectionElement;
  10. }
  11. #[wasm_bindgen_test]
  12. fn test_table_element() {
  13. let table = new_table();
  14. assert!(
  15. table.caption().is_none(),
  16. "New table element should have no caption element."
  17. );
  18. table.create_caption();
  19. assert!(
  20. table.caption().is_some(),
  21. "Table element should have caption element after create caption."
  22. );
  23. table.delete_caption();
  24. assert!(
  25. table.caption().is_none(),
  26. "Table element should have no caption element after delete caption."
  27. );
  28. table.set_caption(Some(&new_caption()));
  29. assert!(
  30. table.caption().is_some(),
  31. "Table element should have caption element after set."
  32. );
  33. assert!(
  34. table.t_head().is_none(),
  35. "New table element should have no thead element."
  36. );
  37. table.create_t_head();
  38. assert!(
  39. table.t_head().is_some(),
  40. "Table element should have thead element after create thead."
  41. );
  42. table.delete_t_head();
  43. assert!(
  44. table.t_head().is_none(),
  45. "Table element should have no thead element after delete thead."
  46. );
  47. table.set_t_head(Some(&new_thead()));
  48. assert!(
  49. table.t_head().is_some(),
  50. "Table element should have thead element after set."
  51. );
  52. assert!(
  53. table.t_foot().is_none(),
  54. "New table element should have no tfoot element."
  55. );
  56. table.create_t_foot();
  57. assert!(
  58. table.t_foot().is_some(),
  59. "Table element should have tfoot element after create tfoot."
  60. );
  61. table.delete_t_foot();
  62. assert!(
  63. table.t_foot().is_none(),
  64. "Table element should have no tfoot element after delete tfoot."
  65. );
  66. table.set_t_foot(Some(&new_tfoot()));
  67. assert!(
  68. table.t_foot().is_some(),
  69. "Table element should have tfoot element after set."
  70. );
  71. assert!(
  72. table.t_bodies().length() == 0,
  73. "New table element should have no tbody element."
  74. );
  75. table.create_t_body();
  76. assert!(
  77. table.t_bodies().length() == 1,
  78. "Table element should have tbody element after create tbody."
  79. );
  80. assert!(
  81. table.rows().length() == 0,
  82. "New table element should have no rows."
  83. );
  84. table
  85. .insert_row_with_index(0)
  86. .expect("Failed to insert row at index 0");
  87. assert!(
  88. table.rows().length() == 1,
  89. "Table element should have rows after insert row."
  90. );
  91. table
  92. .delete_row(0)
  93. .expect("Failed to delete row at index 0");
  94. assert!(
  95. table.rows().length() == 0,
  96. "Table element should have no rows after delete row."
  97. );
  98. table.set_align("left");
  99. assert_eq!(
  100. table.align(),
  101. "left",
  102. "Table element should have an align property of 'left'"
  103. );
  104. table.set_border("10");
  105. assert_eq!(
  106. table.border(),
  107. "10",
  108. "Table element should have a border property of '10'"
  109. );
  110. table.set_frame("above");
  111. assert_eq!(
  112. table.frame(),
  113. "above",
  114. "Table element should have an frame property of 'above'"
  115. );
  116. table.set_rules("none");
  117. assert_eq!(
  118. table.rules(),
  119. "none",
  120. "Table element should have an rules property of 'none'"
  121. );
  122. table.set_summary("summary");
  123. assert_eq!(
  124. table.summary(),
  125. "summary",
  126. "Table element should have an summary property of 'summary'"
  127. );
  128. table.set_width("1000");
  129. assert_eq!(
  130. table.width(),
  131. "1000",
  132. "Table element should have a width property of '1000'"
  133. );
  134. table.set_bg_color("#ffffff");
  135. assert_eq!(
  136. table.bg_color(),
  137. "#ffffff",
  138. "Table element should have an bgColor property of '#ffffff'"
  139. );
  140. table.set_cell_padding("1");
  141. assert_eq!(
  142. table.cell_padding(),
  143. "1",
  144. "Table element should have an cellPadding property of '1'"
  145. );
  146. table.set_cell_spacing("1");
  147. assert_eq!(
  148. table.cell_spacing(),
  149. "1",
  150. "Table element should have an cellSpacing property of '1'"
  151. );
  152. }