diff options
author | bachar <bachar@ncsu.edu> | 2016-12-01 21:23:22 -0500 |
---|---|---|
committer | Manish Goregaokar <manishsmail@gmail.com> | 2017-01-11 01:29:45 -0800 |
commit | 980dde7e1533414f6eb3be86d12311d21ace8434 (patch) | |
tree | 04fb8850e8e4ab7180d3d29456479da798045479 /tests/unit | |
parent | c784bc69443ee6f4f3bd54474ac0e03a2bb92a6f (diff) | |
download | servo-980dde7e1533414f6eb3be86d12311d21ace8434.tar.gz servo-980dde7e1533414f6eb3be86d12311d21ace8434.zip |
HTML image map support
Diffstat (limited to 'tests/unit')
-rw-r--r-- | tests/unit/script/Cargo.toml | 1 | ||||
-rw-r--r-- | tests/unit/script/htmlareaelement.rs | 123 | ||||
-rw-r--r-- | tests/unit/script/lib.rs | 3 |
3 files changed, 127 insertions, 0 deletions
diff --git a/tests/unit/script/Cargo.toml b/tests/unit/script/Cargo.toml index a8f100d2a40..2167ffd3faa 100644 --- a/tests/unit/script/Cargo.toml +++ b/tests/unit/script/Cargo.toml @@ -10,6 +10,7 @@ path = "lib.rs" doctest = false [dependencies] +euclid = "0.10.2" msg = {path = "../../../components/msg"} plugins = {path = "../../../components/plugins"} script = {path = "../../../components/script"} diff --git a/tests/unit/script/htmlareaelement.rs b/tests/unit/script/htmlareaelement.rs new file mode 100644 index 00000000000..91abc612576 --- /dev/null +++ b/tests/unit/script/htmlareaelement.rs @@ -0,0 +1,123 @@ +// Copyright 2013 The Servo Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +use euclid::point::Point2D; +use script::dom::htmlareaelement::Area; +use script::dom::htmlareaelement::Shape; + +#[test] +fn garbage_input() { + assert!(Area::parse(";.,()8.2", Shape::Circle).is_none()) +} + +#[test] +fn no_case_matching_input() { + assert!(Area::parse("8.2, 10.2", Shape::Circle).is_none()) +} + +#[test] +fn delimiter_input() { + assert!(Area::parse(";, ;,", Shape::Circle).is_none()) +} + +// Area::Circle tests +#[test] +fn valid_circle_inputs() { + assert_eq!(Area::parse("10.2, 3.4, 5.2", Shape::Circle), + Some(Area::Circle { left: 10.2, top: 3.4, radius: 5.2 })); +} + +#[test] +fn valid_negative_circle_inputs() { + assert_eq!(Area::parse("-10.2, -3.4, 5.2", Shape::Circle), + Some(Area::Circle { left: -10.2, top: -3.4, radius: 5.2 })); +} + +#[test] +fn invalid_negative_circle_radius() { + assert!(Area::parse("-10.2, -3.4, -5.2", Shape::Circle).is_none()); +} + +// Area::Rectangle tests +#[test] +fn rectangle_valid_input() { + assert_eq!(Area::parse("5.2, 1.1, 10.2, 3.4", Shape::Rectangle), + Some(Area::Rectangle { top_left: (5.2, 1.1), + bottom_right: (10.2, 3.4) })); +} + +#[test] +fn rectangle_valid_negative_input() { + assert_eq!(Area::parse("-10.2, -3.4, -5.2, -1.1", Shape::Rectangle), + Some(Area::Rectangle { top_left: (-10.2, -3.4), + bottom_right: (-5.2, -1.1) })); +} + +#[test] +fn rectangle_invalid_input() { + assert_eq!(Area::parse("5.2, 4.3, 10.2, 1.1.2", Shape::Rectangle), + Some(Area::Rectangle { top_left: (5.2, 0.0), + bottom_right: (10.2, 4.3) })); +} + +#[test] +fn rectangle_unordered_input() { + assert_eq!(Area::parse("5.2, 1.1, 10.2, 4.3", Shape::Rectangle), + Some(Area::Rectangle { top_left: (5.2, 1.1), + bottom_right: (10.2, 4.3) })); +} + +// Area::Polygon tests +#[test] +fn polygon_six_points_valid_input() { + assert_eq!(Area::parse("1.1, 1.1, 6.1, 1.1, 3.1, 3.1", Shape::Polygon), + Some(Area::Polygon { points: vec![1.1, 1.1, 6.1, 1.1, 3.1, 3.1] })); +} + +#[test] +fn polygon_six_points_valid_negative_input() { + assert_eq!(Area::parse("1.1, -1.1, 6.1, -1.1, 3.1, -3.1", Shape::Polygon), + Some(Area::Polygon { points: vec![1.1, -1.1, 6.1, -1.1, 3.1, -3.1] })); +} + +#[test] +fn polygon_six_points_invalid_input() { + assert_eq!(Area::parse(";1.1, 1.1,'; 6.1,(*^() 1.1, 3.1, 3.1, 100.1 %$,;", Shape::Polygon), + Some(Area::Polygon { points: vec![1.1, 1.1, 6.1, 1.1, 3.1, 3.1] })); +} + +#[test] +fn polygon_eight_points_invalid_input() { + assert_eq!(Area::parse("1.1, -1.1, 6.1, -1.1, 1.1, -3.1, 6.1, -3.1.2, 12.1", Shape::Polygon), + Some(Area::Polygon { points: vec![1.1, -1.1, 6.1, -1.1, 1.1, -3.1, 6.1, 0.0] })); +} + +#[test] +fn test_hit_test_circle() { + let circ1 = Area::Circle { left: 20.0, top: 10.0, radius: 5.0 }; + assert!(!circ1.hit_test(Point2D::new(10.0, 20.0))); + let circ2 = Area::Circle { left: 10.0, top: 10.0, radius: 5.0 }; + assert!(circ2.hit_test(Point2D::new(10.0, 12.0))); +} + +#[test] +fn test_hit_test_rectangle() { + let rect1 = Area::Rectangle { top_left: (1.0, 7.0), bottom_right: (15.0, 10.0) }; + assert!(!rect1.hit_test(Point2D::new(10.0, 5.0))); + let rect2 = Area::Rectangle { top_left: (8.0, 10.0), bottom_right: (20.0, 12.0) }; + assert!(rect2.hit_test(Point2D::new(10.0, 12.0))); +} + +#[test] +fn test_hit_test_polygon() { + let poly1 = Area::Polygon { points: vec![1.0, 2.0, 3.0, 4.0, 5.0, 6.0] }; + assert!(!poly1.hit_test(Point2D::new(10.0, 5.0))); + let poly2 = Area::Polygon { points: vec![7.0, 7.5, 8.2, 9.0, 11.0, 12.0] }; + assert!(!poly2.hit_test(Point2D::new(10.0, 5.0))); +} diff --git a/tests/unit/script/lib.rs b/tests/unit/script/lib.rs index d2993af7f30..9b8c1ba6f5e 100644 --- a/tests/unit/script/lib.rs +++ b/tests/unit/script/lib.rs @@ -5,6 +5,7 @@ #![feature(plugin)] #![plugin(plugins)] +extern crate euclid; extern crate msg; extern crate script; extern crate servo_url; @@ -13,3 +14,5 @@ extern crate servo_url; #[cfg(all(test, target_pointer_width = "64"))] mod size_of; #[cfg(test)] mod textinput; #[cfg(test)] mod headers; +#[cfg(test)] mod htmlareaelement; + |