sku-pg
Version:
Skulpt is a Javascript implementation of Python 2.x. Python that runs in your browser!
254 lines (209 loc) • 9.04 kB
HTML
<html>
<!--
Copyright 2008 The Closure Library Authors. All Rights Reserved.
Use of this source code is governed by an Apache 2.0 License.
See the COPYING file for details.
-->
<!--
Author: dgajda@google.com (Damian Gajda)
-->
<head>
<title>Closure Unit Tests - goog.fx.DragScrollSupport</title>
<script src="../base.js"></script>
<script>
goog.require('goog.dom');
goog.require('goog.events');
goog.require('goog.events.Event');
goog.require('goog.testing.MockClock');
goog.require('goog.testing.events');
goog.require('goog.testing.jsunit');
goog.require('goog.fx.DragScrollSupport');
</script>
<style>
#containerDiv {
position: absolute;
top: 20px;
overflow-y: scroll;
width: 100px;
height: 100px;
visibility: hidden;
}
#contentDiv {
height: 200px;
}
</style>
</head>
<body>
<div id="containerDiv">
<div id="contentDiv">Sample text</div>
</div>
<script>
var containerDiv = document.getElementById('containerDiv');
var contentDiv = document.getElementById('contentDiv');
var clock;
function setUp() {
clock = new goog.testing.MockClock(true);
}
function tearDown() {
clock.dispose();
}
function testDragZeroMarginDivContainer() {
var dsc = new goog.fx.DragScrollSupport(containerDiv);
// Set initial scroll state.
var scrollTop = 50;
containerDiv.scrollTop = scrollTop;
goog.testing.events.fireMouseMoveEvent(containerDiv,
new goog.math.Coordinate(50, 20 + 50));
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
assertEquals('Mousing inside the container should not trigger scrolling.',
scrollTop, containerDiv.scrollTop);
assertEquals('Scroll timer should not tick yet', 0, clock.getTimeoutsMade());
scrollTop = containerDiv.scrollTop;
goog.testing.events.fireMouseMoveEvent(containerDiv,
new goog.math.Coordinate(50, 10));
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
assertTrue('Mousing above the container should trigger scrolling up.',
scrollTop > containerDiv.scrollTop);
scrollTop = containerDiv.scrollTop;
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
assertTrue('Mousing above the container should trigger scrolling up.',
scrollTop > containerDiv.scrollTop);
scrollTop = containerDiv.scrollTop;
goog.testing.events.fireMouseMoveEvent(containerDiv,
new goog.math.Coordinate(50, 20 + 110));
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
assertTrue('Mousing below the container should trigger scrolling down.',
scrollTop < containerDiv.scrollTop);
scrollTop = containerDiv.scrollTop;
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
assertTrue('Mousing below the container should trigger scrolling down.',
scrollTop < containerDiv.scrollTop);
scrollTop = containerDiv.scrollTop;
goog.testing.events.fireMouseMoveEvent(containerDiv,
new goog.math.Coordinate(50, 20 + 50));
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
assertEquals('Mousing inside the container should stop scrolling.',
scrollTop, containerDiv.scrollTop);
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
dsc.dispose();
}
function testDragMarginDivContainer() {
var dsc = new goog.fx.DragScrollSupport(containerDiv, 20);
// Set initial scroll state.
var scrollTop = 50;
containerDiv.scrollTop = scrollTop;
goog.testing.events.fireMouseMoveEvent(containerDiv,
new goog.math.Coordinate(50, 20 + 50));
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
assertEquals('Mousing inside the container should not trigger scrolling.',
scrollTop, containerDiv.scrollTop);
assertEquals('Scroll timer should not tick yet', 0, clock.getTimeoutsMade());
scrollTop = containerDiv.scrollTop;
goog.testing.events.fireMouseMoveEvent(containerDiv,
new goog.math.Coordinate(50, 30));
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
assertTrue('Mousing above the margin should trigger scrolling up.',
scrollTop > containerDiv.scrollTop);
scrollTop = containerDiv.scrollTop;
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
assertTrue('Mousing above the margin should trigger scrolling up.',
scrollTop > containerDiv.scrollTop);
scrollTop = containerDiv.scrollTop;
goog.testing.events.fireMouseMoveEvent(containerDiv,
new goog.math.Coordinate(50, 20 + 90));
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
assertTrue('Mousing below the margin should trigger scrolling down.',
scrollTop < containerDiv.scrollTop);
scrollTop = containerDiv.scrollTop;
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
assertTrue('Mousing above the margin should trigger scrolling down.',
scrollTop < containerDiv.scrollTop);
scrollTop = containerDiv.scrollTop;
goog.testing.events.fireMouseMoveEvent(containerDiv,
new goog.math.Coordinate(50, 20 + 50));
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
assertEquals('Mousing inside the margin should stop scrolling.',
scrollTop, containerDiv.scrollTop);
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
assertEquals('Scroll timer should have ticked 5 times',
5, clock.getTimeoutsMade());
dsc.dispose();
}
function testDragMarginScrollConstrainedDivContainer() {
var dsc = new goog.fx.DragScrollSupport(containerDiv, 20);
dsc.setConstrainScroll(true);
// Set initial scroll state.
var scrollTop = 50;
containerDiv.scrollTop = scrollTop;
goog.testing.events.fireMouseMoveEvent(containerDiv,
new goog.math.Coordinate(50, 20 + 50));
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
assertEquals('Mousing inside the container should not trigger scrolling.',
scrollTop, containerDiv.scrollTop);
assertEquals('Scroll timer should not tick yet', 0, clock.getTimeoutsMade());
scrollTop = containerDiv.scrollTop;
goog.testing.events.fireMouseMoveEvent(containerDiv,
new goog.math.Coordinate(50, 30));
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
assertTrue('Mousing above the margin should trigger scrolling up.',
scrollTop > containerDiv.scrollTop);
scrollTop = containerDiv.scrollTop;
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
assertTrue('Mousing above the margin should trigger scrolling up.',
scrollTop > containerDiv.scrollTop);
scrollTop = containerDiv.scrollTop;
goog.testing.events.fireMouseMoveEvent(containerDiv,
new goog.math.Coordinate(50, 20 + 90));
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
assertTrue('Mousing below the margin should trigger scrolling down.',
scrollTop < containerDiv.scrollTop);
scrollTop = containerDiv.scrollTop;
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
assertTrue('Mousing above the margin should trigger scrolling down.',
scrollTop < containerDiv.scrollTop);
scrollTop = containerDiv.scrollTop;
goog.testing.events.fireMouseMoveEvent(containerDiv,
new goog.math.Coordinate(50, 20 + 50));
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
assertEquals('Mousing inside the margin should stop scrolling.',
scrollTop, containerDiv.scrollTop);
scrollTop = containerDiv.scrollTop;
goog.testing.events.fireMouseMoveEvent(containerDiv,
new goog.math.Coordinate(50, 10));
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
assertEquals('Mousing above the container should not trigger scrolling up.',
scrollTop, containerDiv.scrollTop);
scrollTop = containerDiv.scrollTop;
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
assertEquals('Mousing above the container should not trigger scrolling up.',
scrollTop, containerDiv.scrollTop);
scrollTop = containerDiv.scrollTop;
goog.testing.events.fireMouseMoveEvent(containerDiv,
new goog.math.Coordinate(50, 20 + 110));
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
assertEquals('Mousing below the container should not trigger scrolling down.',
scrollTop, containerDiv.scrollTop);
scrollTop = containerDiv.scrollTop;
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
assertEquals('Mousing below the container should not trigger scrolling down.',
scrollTop, containerDiv.scrollTop);
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
scrollTop = containerDiv.scrollTop;
goog.testing.events.fireMouseMoveEvent(containerDiv,
new goog.math.Coordinate(150, 20 + 90));
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
assertEquals('Mousing to the right of the container should not trigger ' +
'scrolling up.', scrollTop, containerDiv.scrollTop);
scrollTop = containerDiv.scrollTop;
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
assertEquals('Mousing to the right of the container should not trigger ' +
'scrolling up.', scrollTop, containerDiv.scrollTop);
clock.tick(goog.fx.DragScrollSupport.TIMER_STEP_ + 1);
assertEquals('Scroll timer should have ticked 5 times',
5, clock.getTimeoutsMade());
dsc.dispose();
}
</script>
</body>
</html>