aboutsummaryrefslogtreecommitdiffstats
path: root/tests/unit/script/htmlareaelement.rs
diff options
context:
space:
mode:
authorbachar <bachar@ncsu.edu>2016-12-01 21:23:22 -0500
committerManish Goregaokar <manishsmail@gmail.com>2017-01-11 01:29:45 -0800
commit980dde7e1533414f6eb3be86d12311d21ace8434 (patch)
tree04fb8850e8e4ab7180d3d29456479da798045479 /tests/unit/script/htmlareaelement.rs
parentc784bc69443ee6f4f3bd54474ac0e03a2bb92a6f (diff)
downloadservo-980dde7e1533414f6eb3be86d12311d21ace8434.tar.gz
servo-980dde7e1533414f6eb3be86d12311d21ace8434.zip
HTML image map support
Diffstat (limited to 'tests/unit/script/htmlareaelement.rs')
-rw-r--r--tests/unit/script/htmlareaelement.rs123
1 files changed, 123 insertions, 0 deletions
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)));
+}