Run size_of tests with test-stylo.

MozReview-Commit-ID: KapDMqX6OjH
This commit is contained in:
Bobby Holley 2017-03-14 22:50:38 -07:00
parent 9f44fd2d9d
commit 6744ed1639
8 changed files with 77 additions and 51 deletions

View file

@ -2,51 +2,12 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use std::mem::size_of;
use style::properties::{PropertyDeclaration, specified_value_sizes};
#[test]
fn size_of_property_declaration() {
let old = 48;
let new = size_of::<PropertyDeclaration>();
if new < old {
panic!("Your changes have decreased the stack size of PropertyDeclaration enum from {} to {}. \
Good work! Please update the size in tests/unit/style/size_of.rs.",
old, new)
} else if new > old {
panic!("Your changes have increased the stack size of PropertyDeclaration enum from {} to {}. \
These enum is present in large quantities in the style, and increasing the size \
may negatively affect style system performance. Please consider using `boxed=\"True\"` in \
the longhand If you feel that the increase is necessary, update to the new size in \
tests/unit/style/size_of.rs.",
old, new)
}
::style::properties::test_size_of_property_declaration();
}
#[test]
fn size_of_specified_values() {
let threshold = 32;
let longhands = specified_value_sizes();
let mut failing_messages = vec![];
for specified_value in longhands {
if specified_value.1 > threshold && !specified_value.2 {
failing_messages.push(
format!("Your changes have increased the size of {} SpecifiedValue to {}. The threshold is \
currently {}. SpecifiedValues affect size of PropertyDeclaration enum and \
increasing the size may negative affect style system performance. Please consider \
using `boxed=\"True\"` in this longhand.",
specified_value.0, specified_value.1, threshold));
} else if specified_value.1 <= threshold && specified_value.2 {
failing_messages.push(
format!("Your changes have decreased the size of {} SpecifiedValue to {}. Good work! \
The threshold is currently {}. Please consider removing `boxed=\"True\"` from this longhand.",
specified_value.0, specified_value.1, threshold));
}
}
if !failing_messages.is_empty() {
panic!("{}", failing_messages.join("\n\n"));
}
::style::properties::test_size_of_specified_values();
}

View file

@ -11,6 +11,9 @@ name = "stylo_tests"
path = "lib.rs"
doctest = false
[features]
testing = ["style/testing"]
[dependencies]
app_units = "0.4"
atomic_refcell = "0.1"

View file

@ -19,6 +19,7 @@ extern crate style;
extern crate style_traits;
mod sanity_checks;
mod size_of;
#[path = "../../../ports/geckolib/stylesheet_loader.rs"]
mod stylesheet_loader;

View file

@ -0,0 +1,13 @@
/* 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 http://mozilla.org/MPL/2.0/. */
#[test]
fn size_of_property_declaration() {
::style::properties::test_size_of_property_declaration();
}
#[test]
fn size_of_specified_values() {
::style::properties::test_size_of_specified_values();
}