mirror of
https://github.com/servo/servo.git
synced 2025-08-10 16:05:43 +01:00
PWM tests
This commit is contained in:
parent
06b409ad60
commit
585d0e52af
6 changed files with 166 additions and 0 deletions
21
tests/unit/metrics/Cargo.toml
Normal file
21
tests/unit/metrics/Cargo.toml
Normal file
|
@ -0,0 +1,21 @@
|
|||
[package]
|
||||
name = "metrics_tests"
|
||||
version = "0.0.1"
|
||||
authors = ["The Servo Project Developers"]
|
||||
license = "MPL-2.0"
|
||||
|
||||
[lib]
|
||||
name = "metrics_tests"
|
||||
path = "lib.rs"
|
||||
doctest = false
|
||||
|
||||
[dependencies]
|
||||
euclid = "0.15"
|
||||
gfx = {path = "../../../components/gfx"}
|
||||
ipc-channel = "0.8"
|
||||
metrics = {path = "../../../components/metrics"}
|
||||
msg = {path = "../../../components/msg"}
|
||||
net_traits = {path = "../../../components/net_traits"}
|
||||
profile_traits = {path = "../../../components/profile_traits"}
|
||||
style = {path = "../../../components/style"}
|
||||
time = "0.1.12"
|
16
tests/unit/metrics/lib.rs
Normal file
16
tests/unit/metrics/lib.rs
Normal file
|
@ -0,0 +1,16 @@
|
|||
/* 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/. */
|
||||
|
||||
extern crate euclid;
|
||||
extern crate gfx;
|
||||
extern crate ipc_channel;
|
||||
extern crate metrics;
|
||||
extern crate msg;
|
||||
extern crate net_traits;
|
||||
extern crate profile_traits;
|
||||
extern crate style;
|
||||
extern crate time;
|
||||
|
||||
#[cfg(test)]
|
||||
mod paint_time;
|
100
tests/unit/metrics/paint_time.rs
Normal file
100
tests/unit/metrics/paint_time.rs
Normal file
|
@ -0,0 +1,100 @@
|
|||
/* 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/. */
|
||||
|
||||
use euclid::Size2D;
|
||||
use gfx::display_list::{BaseDisplayItem, WebRenderImageInfo};
|
||||
use gfx::display_list::{DisplayItem, DisplayList, ImageDisplayItem};
|
||||
use ipc_channel::ipc;
|
||||
use metrics::{PaintTimeMetrics, ProfilerMetadataFactory};
|
||||
use msg::constellation_msg::{PipelineId, PipelineIndex, PipelineNamespaceId};
|
||||
use net_traits::image::base::PixelFormat;
|
||||
use profile_traits::time::{ProfilerChan, TimerMetadata};
|
||||
use style::computed_values::image_rendering;
|
||||
use time;
|
||||
|
||||
struct DummyProfilerMetadataFactory {}
|
||||
impl ProfilerMetadataFactory for DummyProfilerMetadataFactory {
|
||||
fn new_metadata(&self) -> Option<TimerMetadata> {
|
||||
None
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_paint_metrics_construction() {
|
||||
let (sender, _) = ipc::channel().unwrap();
|
||||
let profiler_chan = ProfilerChan(sender);
|
||||
let paint_time_metrics = PaintTimeMetrics::new(profiler_chan);
|
||||
assert_eq!(paint_time_metrics.get_navigation_start(), None, "navigation start is None");
|
||||
assert_eq!(paint_time_metrics.get_first_paint(), None, "first paint is None");
|
||||
assert_eq!(paint_time_metrics.get_first_contentful_paint(), None, "first contentful paint is None");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_first_paint_setter() {
|
||||
let (sender, _) = ipc::channel().unwrap();
|
||||
let profiler_chan = ProfilerChan(sender);
|
||||
let mut paint_time_metrics = PaintTimeMetrics::new(profiler_chan);
|
||||
let dummy_profiler_metadata_factory = DummyProfilerMetadataFactory {};
|
||||
|
||||
// Should not set any metric until navigation start is set.
|
||||
paint_time_metrics.maybe_set_first_paint(&dummy_profiler_metadata_factory);
|
||||
assert_eq!(paint_time_metrics.get_first_paint(), None, "first paint is None");
|
||||
|
||||
let navigation_start = time::precise_time_ns() as f64;
|
||||
paint_time_metrics.set_navigation_start(navigation_start);
|
||||
assert_eq!(paint_time_metrics.get_navigation_start().unwrap(),
|
||||
navigation_start, "navigation start is set");
|
||||
|
||||
paint_time_metrics.maybe_set_first_paint(&dummy_profiler_metadata_factory);
|
||||
assert!(paint_time_metrics.get_first_paint().is_some(), "first paint is set");
|
||||
assert_eq!(paint_time_metrics.get_first_contentful_paint(), None, "first contentful paint is None");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_first_contentful_paint_setter() {
|
||||
let (sender, _) = ipc::channel().unwrap();
|
||||
let profiler_chan = ProfilerChan(sender);
|
||||
let mut paint_time_metrics = PaintTimeMetrics::new(profiler_chan);
|
||||
let dummy_profiler_metadata_factory = DummyProfilerMetadataFactory {};
|
||||
let empty_display_list = DisplayList {
|
||||
list: Vec::new()
|
||||
};
|
||||
|
||||
// Should not set any metric until navigation start is set.
|
||||
paint_time_metrics.maybe_set_first_contentful_paint(&dummy_profiler_metadata_factory,
|
||||
&empty_display_list);
|
||||
assert_eq!(paint_time_metrics.get_first_contentful_paint(), None, "first contentful paint is None");
|
||||
|
||||
// Should not set first contentful paint if no appropriate display item is present.
|
||||
let navigation_start = time::precise_time_ns() as f64;
|
||||
paint_time_metrics.set_navigation_start(navigation_start);
|
||||
paint_time_metrics.maybe_set_first_contentful_paint(&dummy_profiler_metadata_factory,
|
||||
&empty_display_list);
|
||||
assert_eq!(paint_time_metrics.get_first_contentful_paint(), None, "first contentful paint is None");
|
||||
|
||||
let pipeline_id = PipelineId {
|
||||
namespace_id: PipelineNamespaceId(1),
|
||||
index: PipelineIndex(1),
|
||||
};
|
||||
let image = DisplayItem::Image(Box::new(ImageDisplayItem {
|
||||
base: BaseDisplayItem::empty(pipeline_id),
|
||||
webrender_image: WebRenderImageInfo {
|
||||
width: 1,
|
||||
height: 1,
|
||||
format: PixelFormat::RGB8,
|
||||
key: None,
|
||||
},
|
||||
image_data: None,
|
||||
stretch_size: Size2D::zero(),
|
||||
tile_spacing: Size2D::zero(),
|
||||
image_rendering: image_rendering::T::auto,
|
||||
}));
|
||||
let display_list = DisplayList {
|
||||
list: vec![image]
|
||||
};
|
||||
paint_time_metrics.maybe_set_first_contentful_paint(&dummy_profiler_metadata_factory,
|
||||
&display_list);
|
||||
assert!(paint_time_metrics.get_first_contentful_paint().is_some(), "first contentful paint is set");
|
||||
assert_eq!(paint_time_metrics.get_first_paint(), None, "first paint is None");
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue