accessibility-developer-tools
Version:
This is a library of accessibility-related testing and utility code.
143 lines (119 loc) • 4.2 kB
JavaScript
// Copyright 2014 The Closure Library Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS-IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
goog.provide('goog.style.style_document_scroll_test');
goog.setTestOnly('goog.style.style_document_scroll_test');
goog.require('goog.dom');
goog.require('goog.style');
goog.require('goog.testing.jsunit');
var EPSILON = 2;
var documentScroll;
function setUp() {
documentScroll = goog.dom.getDocumentScrollElement();
documentScroll.scrollTop = 100;
documentScroll.scrollLeft = 100;
}
function tearDown() {
documentScroll.style.border = '';
documentScroll.style.padding = '';
documentScroll.style.margin = '';
documentScroll.scrollTop = 0;
documentScroll.scrollLeft = 0;
}
function testDocumentScrollWithZeroedBodyProperties() {
assertRoughlyEquals(
200,
goog.style.getContainerOffsetToScrollInto(goog.dom.getElement('testEl1'))
.y,
EPSILON);
assertRoughlyEquals(
300,
goog.style.getContainerOffsetToScrollInto(goog.dom.getElement('testEl2'))
.x,
EPSILON);
}
function testDocumentScrollWithMargin() {
documentScroll.style.margin = '20px 0 0 30px';
assertRoughlyEquals(
220,
goog.style.getContainerOffsetToScrollInto(goog.dom.getElement('testEl1'))
.y,
EPSILON);
assertRoughlyEquals(
330,
goog.style.getContainerOffsetToScrollInto(goog.dom.getElement('testEl2'))
.x,
EPSILON);
}
function testDocumentScrollWithPadding() {
documentScroll.style.padding = '20px 0 0 30px';
assertRoughlyEquals(
220,
goog.style.getContainerOffsetToScrollInto(goog.dom.getElement('testEl1'))
.y,
EPSILON);
assertRoughlyEquals(
330,
goog.style.getContainerOffsetToScrollInto(goog.dom.getElement('testEl2'))
.x,
EPSILON);
}
function testDocumentScrollWithBorder() {
documentScroll.style.border = '20px solid green';
assertRoughlyEquals(
220,
goog.style.getContainerOffsetToScrollInto(goog.dom.getElement('testEl1'))
.y,
EPSILON);
assertRoughlyEquals(
320,
goog.style.getContainerOffsetToScrollInto(goog.dom.getElement('testEl2'))
.x,
EPSILON);
}
function testDocumentScrollWithAllProperties() {
documentScroll.style.margin = '20px 0 0 30px';
documentScroll.style.padding = '40px 0 0 50px';
documentScroll.style.border = '10px solid green';
assertRoughlyEquals(
270,
goog.style.getContainerOffsetToScrollInto(goog.dom.getElement('testEl1'))
.y,
EPSILON);
assertRoughlyEquals(
390,
goog.style.getContainerOffsetToScrollInto(goog.dom.getElement('testEl2'))
.x,
EPSILON);
}
function testDocumentScrollNoOpIfElementAlreadyInView() {
// Scroll once to make testEl3 visible.
documentScroll.scrollTop =
goog.style.getContainerOffsetToScrollInto(goog.dom.getElement('testEl3'))
.y;
// Scroll a bit more so that now the element is approximately at the middle.
var viewportHeight = documentScroll.clientHeight;
documentScroll.scrollTop += viewportHeight / 2;
// Since the element is fully within viewport, additional calls to
// getContainerOffsetToScrollInto should be a no-op.
assertEquals(
documentScroll.scrollTop,
goog.style.getContainerOffsetToScrollInto(goog.dom.getElement('testEl3'))
.y);
}
function testScrollIntoContainerView() {
goog.style.scrollIntoContainerView(goog.dom.getElement('testEl1'));
assertRoughlyEquals(200, documentScroll.scrollTop, EPSILON);
goog.style.scrollIntoContainerView(goog.dom.getElement('testEl2'));
assertRoughlyEquals(300, documentScroll.scrollLeft, EPSILON);
}