diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /servo/tests/unit/style/attr.rs | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'servo/tests/unit/style/attr.rs')
-rw-r--r-- | servo/tests/unit/style/attr.rs | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/servo/tests/unit/style/attr.rs b/servo/tests/unit/style/attr.rs new file mode 100644 index 0000000000..b3164c4911 --- /dev/null +++ b/servo/tests/unit/style/attr.rs @@ -0,0 +1,88 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ + +use app_units::Au; +use style::attr::{AttrValue, LengthPercentageOrAuto, parse_length}; +use style::values::computed::{CalcLengthPercentage, Percentage}; + +#[test] +fn test_length_calc() { + let calc = CalcLengthPercentage::new(Au(10).into(), Some(Percentage(0.2))); + assert_eq!(calc.to_used_value(Some(Au(10))), Some(Au(12))); + assert_eq!(calc.to_used_value(Some(Au(0))), Some(Au(10))); + assert_eq!(calc.to_used_value(None), None); + + let calc = CalcLengthPercentage::new(Au(10).into(), None); + assert_eq!(calc.to_used_value(Some(Au(0))), Some(Au(10))); + assert_eq!(calc.to_used_value(None), Some(Au(10))); +} + +#[test] +fn test_parse_double() { + let value = String::from("432.5e2"); + match AttrValue::from_double(value, 0.0) { + AttrValue::Double(_, num) => assert_eq!(num, 43250f64), + _ => panic!("expected a double value") + } +} + +#[test] +fn test_parse_double_negative_prefix() { + let value = String::from("-5.6"); + match AttrValue::from_double(value, 0.0) { + AttrValue::Double(_, num) => assert_eq!(num, -5.6f64), + _ => panic!("expected a double value") + } +} + +#[test] +fn test_parse_double_positive_prefix() { + let value = String::from("+5.6"); + match AttrValue::from_double(value, 0.0) { + AttrValue::Double(_, num) => assert_eq!(num, 5.6f64), + _ => panic!("expected a double value") + } +} + +#[test] +fn test_from_limited_i32_should_be_default_when_less_than_0() { + let value = String::from("-1"); + match AttrValue::from_limited_i32(value, 0) { + AttrValue::Int(_, 0) => (), + _ => panic!("expected an IndexSize error") + } +} + +#[test] +fn test_from_limited_i32_should_parse_a_uint_when_value_is_0_or_greater() { + match AttrValue::from_limited_i32(String::from("1"), 0) { + AttrValue::Int(_, 1) => (), + _ => panic!("expected an successful parsing") + } +} + +#[test] +fn test_from_limited_i32_should_keep_parsed_value_when_not_an_int() { + match AttrValue::from_limited_i32(String::from("parsed-value"), 0) { + AttrValue::Int(p, 0) => { + assert_eq!(p, String::from("parsed-value")) + }, + _ => panic!("expected an successful parsing") + } +} + +#[test] +pub fn test_parse_length() { + fn check(input: &str, expected: LengthPercentageOrAuto) { + let parsed = parse_length(input); + assert_eq!(parsed, expected); + } + + check("0", LengthPercentageOrAuto::Length(Au::from_px(0))); + check("0.000%", LengthPercentageOrAuto::Percentage(0.0)); + check("+5.82%", LengthPercentageOrAuto::Percentage(0.0582)); + check("5.82", LengthPercentageOrAuto::Length(Au::from_f64_px(5.82))); + check("invalid", LengthPercentageOrAuto::Auto); + check("12 followed by invalid", LengthPercentageOrAuto::Length(Au::from_px(12))); +} |