| use wasm_bindgen::prelude::*; |
| use wasm_bindgen_test::*; |
| use web_sys::{HtmlTableCaptionElement, HtmlTableElement, HtmlTableSectionElement}; |
| |
| #[wasm_bindgen(module = "/tests/wasm/element.js")] |
| extern "C" { |
| fn new_table() -> HtmlTableElement; |
| fn new_caption() -> HtmlTableCaptionElement; |
| fn new_thead() -> HtmlTableSectionElement; |
| fn new_tfoot() -> HtmlTableSectionElement; |
| } |
| |
| #[wasm_bindgen_test] |
| fn test_table_element() { |
| let table = new_table(); |
| assert!( |
| table.caption().is_none(), |
| "New table element should have no caption element." |
| ); |
| |
| table.create_caption(); |
| assert!( |
| table.caption().is_some(), |
| "Table element should have caption element after create caption." |
| ); |
| |
| table.delete_caption(); |
| assert!( |
| table.caption().is_none(), |
| "Table element should have no caption element after delete caption." |
| ); |
| |
| table.set_caption(Some(&new_caption())); |
| assert!( |
| table.caption().is_some(), |
| "Table element should have caption element after set." |
| ); |
| |
| assert!( |
| table.t_head().is_none(), |
| "New table element should have no thead element." |
| ); |
| |
| table.create_t_head(); |
| assert!( |
| table.t_head().is_some(), |
| "Table element should have thead element after create thead." |
| ); |
| |
| table.delete_t_head(); |
| assert!( |
| table.t_head().is_none(), |
| "Table element should have no thead element after delete thead." |
| ); |
| |
| table.set_t_head(Some(&new_thead())); |
| assert!( |
| table.t_head().is_some(), |
| "Table element should have thead element after set." |
| ); |
| |
| assert!( |
| table.t_foot().is_none(), |
| "New table element should have no tfoot element." |
| ); |
| |
| table.create_t_foot(); |
| assert!( |
| table.t_foot().is_some(), |
| "Table element should have tfoot element after create tfoot." |
| ); |
| |
| table.delete_t_foot(); |
| assert!( |
| table.t_foot().is_none(), |
| "Table element should have no tfoot element after delete tfoot." |
| ); |
| |
| table.set_t_foot(Some(&new_tfoot())); |
| assert!( |
| table.t_foot().is_some(), |
| "Table element should have tfoot element after set." |
| ); |
| |
| assert!( |
| table.t_bodies().length() == 0, |
| "New table element should have no tbody element." |
| ); |
| |
| table.create_t_body(); |
| assert!( |
| table.t_bodies().length() == 1, |
| "Table element should have tbody element after create tbody." |
| ); |
| |
| assert!( |
| table.rows().length() == 0, |
| "New table element should have no rows." |
| ); |
| |
| table |
| .insert_row_with_index(0) |
| .expect("Failed to insert row at index 0"); |
| assert!( |
| table.rows().length() == 1, |
| "Table element should have rows after insert row." |
| ); |
| |
| table |
| .delete_row(0) |
| .expect("Failed to delete row at index 0"); |
| assert!( |
| table.rows().length() == 0, |
| "Table element should have no rows after delete row." |
| ); |
| |
| table.set_align("left"); |
| assert_eq!( |
| table.align(), |
| "left", |
| "Table element should have an align property of 'left'" |
| ); |
| |
| table.set_border("10"); |
| assert_eq!( |
| table.border(), |
| "10", |
| "Table element should have a border property of '10'" |
| ); |
| |
| table.set_frame("above"); |
| assert_eq!( |
| table.frame(), |
| "above", |
| "Table element should have an frame property of 'above'" |
| ); |
| |
| table.set_rules("none"); |
| assert_eq!( |
| table.rules(), |
| "none", |
| "Table element should have an rules property of 'none'" |
| ); |
| |
| table.set_summary("summary"); |
| assert_eq!( |
| table.summary(), |
| "summary", |
| "Table element should have an summary property of 'summary'" |
| ); |
| |
| table.set_width("1000"); |
| assert_eq!( |
| table.width(), |
| "1000", |
| "Table element should have a width property of '1000'" |
| ); |
| |
| table.set_bg_color("#ffffff"); |
| assert_eq!( |
| table.bg_color(), |
| "#ffffff", |
| "Table element should have an bgColor property of '#ffffff'" |
| ); |
| |
| table.set_cell_padding("1"); |
| assert_eq!( |
| table.cell_padding(), |
| "1", |
| "Table element should have an cellPadding property of '1'" |
| ); |
| |
| table.set_cell_spacing("1"); |
| assert_eq!( |
| table.cell_spacing(), |
| "1", |
| "Table element should have an cellSpacing property of '1'" |
| ); |
| } |