Adding mapbox-gl branch
This commit is contained in:
@@ -0,0 +1,178 @@
|
||||
// Copyright 2009 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.positioning.ViewportClientPositionTest');
|
||||
goog.setTestOnly('goog.positioning.ViewportClientPositionTest');
|
||||
|
||||
goog.require('goog.dom');
|
||||
goog.require('goog.positioning.Corner');
|
||||
goog.require('goog.positioning.Overflow');
|
||||
goog.require('goog.positioning.ViewportClientPosition');
|
||||
goog.require('goog.style');
|
||||
goog.require('goog.testing.jsunit');
|
||||
goog.require('goog.userAgent');
|
||||
|
||||
var viewportSize, anchor, popup, dom, frameRect;
|
||||
var corner = goog.positioning.Corner;
|
||||
|
||||
// Allow positions to be off by one in gecko as it reports scrolling
|
||||
// offsets in steps of 2.
|
||||
var ALLOWED_OFFSET = goog.userAgent.GECKO ? 1 : 0;
|
||||
|
||||
|
||||
function setUp() {
|
||||
var frame = document.getElementById('frame1');
|
||||
var doc = goog.dom.getFrameContentDocument(frame);
|
||||
|
||||
dom = goog.dom.getDomHelper(doc);
|
||||
viewportSize = dom.getViewportSize();
|
||||
anchor = dom.getElement('anchor');
|
||||
popup = dom.getElement('popup');
|
||||
popup.style.overflowY = 'visible';
|
||||
goog.style.setSize(popup, 20, 20);
|
||||
frameRect = goog.style.getVisibleRectForElement(doc.body);
|
||||
}
|
||||
|
||||
|
||||
function testPositionAtCoordinateTopLeft() {
|
||||
var pos = new goog.positioning.ViewportClientPosition(100, 100);
|
||||
pos.reposition(popup, corner.TOP_LEFT);
|
||||
|
||||
var offset = goog.style.getPageOffset(popup);
|
||||
assertEquals('Left edge of popup should be at specified x coordinate.',
|
||||
100,
|
||||
offset.x);
|
||||
assertEquals('Top edge of popup should be at specified y coordinate.',
|
||||
100,
|
||||
offset.y);
|
||||
}
|
||||
|
||||
|
||||
function testPositionAtCoordinateBottomRight() {
|
||||
var pos = new goog.positioning.ViewportClientPosition(100, 100);
|
||||
pos.reposition(popup, corner.BOTTOM_RIGHT);
|
||||
|
||||
var bounds = goog.style.getBounds(popup);
|
||||
assertEquals('Right edge of popup should be at specified x coordinate.',
|
||||
100,
|
||||
bounds.left + bounds.width);
|
||||
assertEquals('Bottom edge of popup should be at specified x coordinate.',
|
||||
100,
|
||||
bounds.top + bounds.height);
|
||||
}
|
||||
|
||||
|
||||
function testPositionAtCoordinateTopLeftWithScroll() {
|
||||
dom.getDocument().body.style.paddingTop = '300px';
|
||||
dom.getDocument().body.style.height = '3000px';
|
||||
dom.getDocumentScrollElement().scrollTop = 50;
|
||||
dom.getDocument().body.scrollTop = 50;
|
||||
|
||||
var pos = new goog.positioning.ViewportClientPosition(0, 0);
|
||||
pos.reposition(popup, corner.TOP_LEFT);
|
||||
|
||||
var offset = goog.style.getPageOffset(popup);
|
||||
assertEquals('Left edge of popup should be at specified x coordinate.',
|
||||
0,
|
||||
offset.x);
|
||||
assertTrue('Top edge of popup should be at specified y coordinate ' +
|
||||
'adjusted for scroll.',
|
||||
Math.abs(offset.y - 50) <= ALLOWED_OFFSET);
|
||||
|
||||
dom.getDocument().body.style.paddingLeft = '1000px';
|
||||
dom.getDocumentScrollElement().scrollLeft = 500;
|
||||
|
||||
pos.reposition(popup, corner.TOP_LEFT);
|
||||
offset = goog.style.getPageOffset(popup);
|
||||
assertTrue('Left edge of popup should be at specified x coordinate ' +
|
||||
'adjusted for scroll.',
|
||||
Math.abs(offset.x - 500) <= ALLOWED_OFFSET);
|
||||
|
||||
dom.getDocumentScrollElement().scrollLeft = 0;
|
||||
dom.getDocumentScrollElement().scrollTop = 0;
|
||||
dom.getDocument().body.style.paddingLeft = '';
|
||||
dom.getDocument().body.style.paddingTop = '';
|
||||
|
||||
pos.reposition(popup, corner.TOP_LEFT);
|
||||
offset = goog.style.getPageOffset(popup);
|
||||
assertEquals('Left edge of popup should be at specified x coordinate.',
|
||||
0,
|
||||
offset.x);
|
||||
assertEquals('Top edge of popup should be at specified y coordinate.',
|
||||
0,
|
||||
offset.y);
|
||||
}
|
||||
|
||||
|
||||
function testOverflowRightFlipHor() {
|
||||
var pos = new goog.positioning.ViewportClientPosition(frameRect.right,
|
||||
100);
|
||||
pos.reposition(popup, corner.TOP_LEFT);
|
||||
|
||||
var offset = goog.style.getPageOffset(popup);
|
||||
assertEquals('Left edge of popup should have been adjusted so that it ' +
|
||||
'fits inside the viewport.',
|
||||
frameRect.right - popup.offsetWidth,
|
||||
offset.x);
|
||||
assertEquals('Top edge of popup should be at specified y coordinate.',
|
||||
100,
|
||||
offset.y);
|
||||
}
|
||||
|
||||
|
||||
function testOverflowTopFlipVer() {
|
||||
var pos = new goog.positioning.ViewportClientPosition(100, 0);
|
||||
pos.reposition(popup, corner.TOP_RIGHT);
|
||||
|
||||
var offset = goog.style.getPageOffset(popup);
|
||||
assertEquals('Left edge of popup should be at specified x coordinate.',
|
||||
80,
|
||||
offset.x);
|
||||
assertEquals('Top edge of popup should have been adjusted so that it ' +
|
||||
'fits inside the viewport.',
|
||||
0,
|
||||
offset.y);
|
||||
}
|
||||
|
||||
|
||||
function testOverflowBottomRightFlipBoth() {
|
||||
var pos = new goog.positioning.ViewportClientPosition(frameRect.right,
|
||||
frameRect.bottom);
|
||||
pos.reposition(popup, corner.TOP_LEFT);
|
||||
|
||||
var offset = goog.style.getPageOffset(popup);
|
||||
assertEquals('Left edge of popup should have been adjusted so that it ' +
|
||||
'fits inside the viewport.',
|
||||
frameRect.right - popup.offsetWidth,
|
||||
offset.x);
|
||||
assertEquals('Top edge of popup should have been adjusted so that it ' +
|
||||
'fits inside the viewport.',
|
||||
frameRect.bottom - popup.offsetHeight,
|
||||
offset.y);
|
||||
}
|
||||
|
||||
|
||||
function testLastRespotOverflow() {
|
||||
var large = 2000;
|
||||
goog.style.setSize(popup, 20, large);
|
||||
popup.style.overflowY = 'auto';
|
||||
|
||||
var pos = new goog.positioning.ViewportClientPosition(0, 0);
|
||||
pos.reposition(popup, corner.TOP_LEFT);
|
||||
|
||||
assertEquals(large, popup.offsetHeight);
|
||||
pos.setLastResortOverflow(goog.positioning.Overflow.RESIZE_HEIGHT);
|
||||
pos.reposition(popup, corner.TOP_LEFT);
|
||||
assertNotEquals(large, popup.offsetHeight);
|
||||
}
|
||||
Reference in New Issue
Block a user