aboutsummaryrefslogtreecommitdiffstats
path: root/tests/unit/style/parsing/position.rs
diff options
context:
space:
mode:
authorNazım Can Altınova <canaltinova@gmail.com>2016-12-09 00:49:49 +0300
committerNazım Can Altınova <canaltinova@gmail.com>2016-12-12 13:48:36 +0300
commita409d41d1d123cb8d5c68936321df484d489a0bc (patch)
tree7fcac8ed467432b92ffa46dc142c26082bf2206a /tests/unit/style/parsing/position.rs
parent872ec89a9c546eb05246b5047aabfc032d140eff (diff)
downloadservo-a409d41d1d123cb8d5c68936321df484d489a0bc.tar.gz
servo-a409d41d1d123cb8d5c68936321df484d489a0bc.zip
Implement HorizontalPosition / VerticalPosition
Diffstat (limited to 'tests/unit/style/parsing/position.rs')
-rw-r--r--tests/unit/style/parsing/position.rs75
1 files changed, 75 insertions, 0 deletions
diff --git a/tests/unit/style/parsing/position.rs b/tests/unit/style/parsing/position.rs
index 5bb0d414510..34b7528a329 100644
--- a/tests/unit/style/parsing/position.rs
+++ b/tests/unit/style/parsing/position.rs
@@ -61,4 +61,79 @@ fn test_position() {
assert!(parse(Position::parse, "top 10px bottom").is_err());
assert!(parse(Position::parse, "top 10px bottom 15%").is_err());
+ // Logical keywords are not supported in Position yet
+ assert!(parse(Position::parse, "x-start").is_err());
+ assert!(parse(Position::parse, "y-end").is_err());
+ assert!(parse(Position::parse, "x-start y-end").is_err());
+ assert!(parse(Position::parse, "x-end 10px").is_err());
+ assert!(parse(Position::parse, "y-start 20px").is_err());
+ assert!(parse(Position::parse, "x-start bottom 10%").is_err());
+ assert!(parse(Position::parse, "left y-start 10%").is_err());
+ assert!(parse(Position::parse, "x-start 20px y-end 10%").is_err());
+}
+
+#[test]
+fn test_horizontal_position() {
+ // One value serializations.
+ assert_roundtrip_with_context!(HorizontalPosition::parse, "20px", "20px");
+ assert_roundtrip_with_context!(HorizontalPosition::parse, "25%", "25%");
+ assert_roundtrip_with_context!(HorizontalPosition::parse, "center", "center");
+ assert_roundtrip_with_context!(HorizontalPosition::parse, "left", "left");
+ assert_roundtrip_with_context!(HorizontalPosition::parse, "right", "right");
+ assert_roundtrip_with_context!(HorizontalPosition::parse, "x-start", "x-start");
+ assert_roundtrip_with_context!(HorizontalPosition::parse, "x-end", "x-end");
+
+ // Two value serializations.
+ assert_roundtrip_with_context!(HorizontalPosition::parse, "right 10px", "right 10px");
+ assert_roundtrip_with_context!(HorizontalPosition::parse, "10px left", "left 10px");
+ assert_roundtrip_with_context!(HorizontalPosition::parse, "x-end 20%", "x-end 20%");
+ assert_roundtrip_with_context!(HorizontalPosition::parse, "20px x-start", "x-start 20px");
+
+ // Invalid horizontal positions.
+ assert!(parse(HorizontalPosition::parse, "top").is_err());
+ assert!(parse(HorizontalPosition::parse, "bottom").is_err());
+ assert!(parse(HorizontalPosition::parse, "y-start").is_err());
+ assert!(parse(HorizontalPosition::parse, "y-end").is_err());
+ assert!(parse(HorizontalPosition::parse, "20px y-end").is_err());
+ assert!(parse(HorizontalPosition::parse, "y-end 20px ").is_err());
+ assert!(parse(HorizontalPosition::parse, "bottom 20px").is_err());
+ assert!(parse(HorizontalPosition::parse, "20px top").is_err());
+ assert!(parse(HorizontalPosition::parse, "left center").is_err());
+ assert!(parse(HorizontalPosition::parse, "bottom top").is_err());
+ assert!(parse(HorizontalPosition::parse, "left top").is_err());
+ assert!(parse(HorizontalPosition::parse, "left right").is_err());
+ assert!(parse(HorizontalPosition::parse, "20px 30px").is_err());
+}
+
+#[test]
+fn test_vertical_position() {
+ // One value serializations.
+ assert_roundtrip_with_context!(VerticalPosition::parse, "20px", "20px");
+ assert_roundtrip_with_context!(VerticalPosition::parse, "25%", "25%");
+ assert_roundtrip_with_context!(VerticalPosition::parse, "center", "center");
+ assert_roundtrip_with_context!(VerticalPosition::parse, "top", "top");
+ assert_roundtrip_with_context!(VerticalPosition::parse, "bottom", "bottom");
+ assert_roundtrip_with_context!(VerticalPosition::parse, "y-start", "y-start");
+ assert_roundtrip_with_context!(VerticalPosition::parse, "y-end", "y-end");
+
+ // Two value serializations.
+ assert_roundtrip_with_context!(VerticalPosition::parse, "bottom 10px", "bottom 10px");
+ assert_roundtrip_with_context!(VerticalPosition::parse, "10px top", "top 10px");
+ assert_roundtrip_with_context!(VerticalPosition::parse, "y-end 20%", "y-end 20%");
+ assert_roundtrip_with_context!(VerticalPosition::parse, "20px y-start", "y-start 20px");
+
+ // Invalid vertical positions.
+ assert!(parse(VerticalPosition::parse, "left").is_err());
+ assert!(parse(VerticalPosition::parse, "right").is_err());
+ assert!(parse(VerticalPosition::parse, "x-start").is_err());
+ assert!(parse(VerticalPosition::parse, "x-end").is_err());
+ assert!(parse(VerticalPosition::parse, "20px x-end").is_err());
+ assert!(parse(VerticalPosition::parse, "x-end 20px ").is_err());
+ assert!(parse(VerticalPosition::parse, "left 20px").is_err());
+ assert!(parse(VerticalPosition::parse, "20px right").is_err());
+ assert!(parse(VerticalPosition::parse, "left center").is_err());
+ assert!(parse(VerticalPosition::parse, "bottom top").is_err());
+ assert!(parse(VerticalPosition::parse, "left top").is_err());
+ assert!(parse(VerticalPosition::parse, "left right").is_err());
+ assert!(parse(VerticalPosition::parse, "20px 30px").is_err());
}