blob: 811e802ba5648a64d2f055041e43e1845aafb09d [file] [log] [blame]
function createScroller(test) {
var scroller = createDiv(test);
scroller.innerHTML = "<div class='contents'></div>";
scroller.classList.add('scroller');
// Trigger layout run.
scroller.scrollTop;
return scroller;
}
function createScrollerWithStartAndEnd(test, orientationClass = 'vertical') {
var scroller = createDiv(test);
scroller.innerHTML =
`<div class='contents'>
<div id='start'></div>
<div id='end'></div>
</div>`;
scroller.classList.add('scroller');
scroller.classList.add(orientationClass);
return scroller;
}
function createScrollTimeline(test, options) {
options = options || {
scrollSource: createScroller(test),
timeRange: 1000
}
return new ScrollTimeline(options);
}
function createScrollTimelineWithOffsets(test, startOffset, endOffset) {
return createScrollTimeline(test, {
scrollSource: createScroller(test),
orientation: "vertical",
scrollOffsets: [startOffset, endOffset],
timeRange: 1000
});
}
function createScrollLinkedAnimation(test, timeline) {
if (timeline === undefined)
timeline = createScrollTimeline(test);
const DURATION = 1000; // ms
const KEYFRAMES = { opacity: [0, 1] };
return new Animation(
new KeyframeEffect(createDiv(test), KEYFRAMES, DURATION), timeline);
}
function assert_approx_equals_or_null(actual, expected, tolerance, name){
if (actual === null || expected === null){
assert_equals(actual, expected, name);
}
else {
assert_approx_equals(actual, expected, tolerance, name);
}
}
// actual should be a CSSUnitValue and expected should be a double value 0-100
function assert_percent_css_unit_value_approx_equals(actual, expected, tolerance, name){
assert_true(actual instanceof CSSUnitValue, "'actual' must be of type CSSUnitValue");
assert_equals(typeof expected, "number", "'expected' should be a number (0-100)");
assert_equals(actual.unit, "percent", "'actual' unit type must be 'percent'");
assert_approx_equals(actual.value, expected, tolerance, name);
}