summaryrefslogtreecommitdiffstats
path: root/vendor/web-sys/tests/wasm/element.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-18 02:49:42 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-18 02:49:42 +0000
commit837b550238aa671a591ccf282dddeab29cadb206 (patch)
tree914b6b8862bace72bd3245ca184d374b08d8a672 /vendor/web-sys/tests/wasm/element.rs
parentAdding debian version 1.70.0+dfsg2-1. (diff)
downloadrustc-837b550238aa671a591ccf282dddeab29cadb206.tar.xz
rustc-837b550238aa671a591ccf282dddeab29cadb206.zip
Merging upstream version 1.71.1+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/web-sys/tests/wasm/element.rs')
-rw-r--r--vendor/web-sys/tests/wasm/element.rs226
1 files changed, 226 insertions, 0 deletions
diff --git a/vendor/web-sys/tests/wasm/element.rs b/vendor/web-sys/tests/wasm/element.rs
new file mode 100644
index 000000000..a408a9c7c
--- /dev/null
+++ b/vendor/web-sys/tests/wasm/element.rs
@@ -0,0 +1,226 @@
+use wasm_bindgen::prelude::*;
+use wasm_bindgen_test::*;
+use web_sys::Element;
+
+#[wasm_bindgen(module = "/tests/wasm/element.js")]
+extern "C" {
+ fn new_div() -> Element;
+}
+
+#[wasm_bindgen_test]
+fn element() {
+ /* Tests needed for:
+ namespace_uri
+ */
+ let element = new_div();
+
+ assert_eq!(element, element);
+
+ assert_eq!(element.prefix(), None, "Shouldn't have a prefix");
+ assert_eq!(element.local_name(), "div", "Should have a div local name");
+ assert_eq!(element.tag_name(), "DIV", "Should be a div tag");
+ assert!(!element.has_attribute("id"), "Shouldn't have an id");
+ element.set_id("beep");
+ assert_eq!(element.id(), "beep", "Should have an id of 'beep'");
+
+ // must_use is set on this result?
+ assert_eq!(
+ element.set_attribute("id", "beep").unwrap(),
+ (),
+ "Should set id"
+ );
+ assert!(element.has_attribute("id"), "Should now have an id");
+ assert_eq!(
+ element.remove_attribute("id").unwrap(),
+ (),
+ "Should return nothing if removed"
+ );
+
+ assert_eq!(element.class_name(), "", "Shouldn't have a class name");
+ element.set_class_name("test thing");
+ assert_eq!(
+ element.class_name(),
+ "test thing",
+ "Should have a class name"
+ );
+ assert_eq!(
+ element.get_attribute("class").unwrap(),
+ "test thing",
+ "Should have a class name"
+ );
+ assert_eq!(
+ element.remove_attribute("class").unwrap(),
+ (),
+ "Should return nothing if removed"
+ );
+ /* Tests needed for:
+ get_attribute_ns
+ */
+
+ /*TODO should we enable toggle_attribute tests? (Firefox Nightly + Chrome canary only)
+ // TODO toggle_attribute should permit a single argument when optional arguments are supported
+ assert!(!element.has_attribute("disabled"), "Should not be disabled");
+ assert!(element.toggle_attribute("disabled", true).unwrap(), "Should return true when attribute is set");
+ assert!(element.has_attribute("disabled"), "Should be disabled");
+ assert!(!element.toggle_attribute("disabled", false).unwrap(), "Should return false when attribute is not set");
+ assert!(!element.has_attribute("disabled"), "Should not be disabled");
+ */
+
+ assert!(!element.has_attribute("title"), "Should not have a title");
+ assert_eq!(
+ element.set_attribute("title", "boop").unwrap(),
+ (),
+ "Should return nothing if set correctly"
+ );
+ assert!(element.has_attribute("title"), "Should have a title");
+ // TODO check get_attribute here when supported
+ assert_eq!(
+ element.remove_attribute("title").unwrap(),
+ (),
+ "Should return nothing if removed"
+ );
+ assert!(!element.has_attribute("title"), "Should not have a title");
+ /* Tests needed for:
+ set_attribute_ns
+ */
+
+ assert!(!element.has_attributes(), "Should not have any attributes");
+ assert_eq!(
+ element.set_attribute("title", "boop").unwrap(),
+ (),
+ "Should return nothing if set correctly"
+ );
+ assert!(element.has_attributes(), "Should have attributes");
+ assert_eq!(
+ element.remove_attribute("title").unwrap(),
+ (),
+ "Should return nothing if removed"
+ );
+ /* Tests needed for:
+ remove_attribute_ns
+ has_attribure_ns
+ closest
+ */
+
+ assert_eq!(
+ element.matches(".this-is-a-thing").unwrap(),
+ false,
+ "Should not match selector"
+ );
+ assert_eq!(
+ element.webkit_matches_selector(".this-is-a-thing").unwrap(),
+ false,
+ "Should not match selector"
+ );
+ element.set_class_name("this-is-a-thing");
+ assert_eq!(
+ element.matches(".this-is-a-thing").unwrap(),
+ true,
+ "Should match selector"
+ );
+ assert_eq!(
+ element.webkit_matches_selector(".this-is-a-thing").unwrap(),
+ true,
+ "Should match selector"
+ );
+ assert_eq!(
+ element.remove_attribute("class").unwrap(),
+ (),
+ "Should return nothing if removed"
+ );
+
+ // TODO non standard moz_matches_selector should we even support?
+
+ /* Tests needed for:
+ insert_adjacent_element
+ insert_adjacent_text
+ set_pointer_capture
+ release_pointer_capture
+ has_pointer_capture
+ set_capture
+ release_capture
+ scroll_top
+ set_scroll_top
+ scroll_left
+ set_scroll_left
+ scroll_width
+ scroll_height
+ scroll,
+ scroll_to
+ scroll_by
+ client_top
+ client_left
+ client_width
+ client_height
+ scroll_top_max
+ scroll_left_max
+ */
+ assert_eq!(element.inner_html(), "", "Should return no content");
+ element.set_inner_html("<strong>Hey!</strong><em>Web!</em>");
+ assert_eq!(
+ element.inner_html(),
+ "<strong>Hey!</strong><em>Web!</em>",
+ "Should return HTML conent"
+ );
+ assert_eq!(
+ element.query_selector_all("strong").unwrap().length(),
+ 1,
+ "Should return one element"
+ );
+ assert!(
+ element.query_selector("strong").unwrap().is_some(),
+ "Should return an element"
+ );
+ element.set_inner_html("");
+ assert_eq!(element.inner_html(), "", "Should return no content");
+
+ /* Tests needed for:
+ outer_html
+ set_outer_html
+ insert_adjacent_html
+ */
+
+ assert!(
+ element.query_selector(".none-existant").unwrap().is_none(),
+ "Should return no results"
+ );
+ assert_eq!(
+ element
+ .query_selector_all(".none-existant")
+ .unwrap()
+ .length(),
+ 0,
+ "Should return no results"
+ );
+ /* Tests needed for:
+ slot
+ set_slot
+ request_fullscreen
+ request_pointer_lock
+ */
+
+ let child = new_div();
+ assert_eq!(
+ element.get_elements_by_tag_name("div").length(),
+ 0,
+ "Element should not contain any div child"
+ );
+ element.append_child(&child).unwrap();
+ assert_eq!(
+ element.get_elements_by_tag_name("div").length(),
+ 1,
+ "Element should contain one div child"
+ );
+ assert_eq!(
+ element.get_elements_by_class_name("foo").length(),
+ 0,
+ "Element should not have childs with class foo"
+ );
+ child.class_list().add_1("foo").unwrap();
+ assert_eq!(
+ element.get_elements_by_class_name("foo").length(),
+ 1,
+ "Element should have one child with class foo"
+ );
+ element.remove_child(&child).unwrap();
+}