summaryrefslogtreecommitdiff
path: root/misc/openlayers/tests/Handler/Pinch.html
diff options
context:
space:
mode:
Diffstat (limited to 'misc/openlayers/tests/Handler/Pinch.html')
-rw-r--r--misc/openlayers/tests/Handler/Pinch.html285
1 files changed, 0 insertions, 285 deletions
diff --git a/misc/openlayers/tests/Handler/Pinch.html b/misc/openlayers/tests/Handler/Pinch.html
deleted file mode 100644
index c4883df..0000000
--- a/misc/openlayers/tests/Handler/Pinch.html
+++ /dev/null
@@ -1,285 +0,0 @@
-<html>
-<head>
- <script src="../OLLoader.js"></script>
- <script type="text/javascript">
- function test_constructor(t) {
- t.plan(3);
- var control = new OpenLayers.Control();
- control.id = Math.random();
- var callbacks = {foo: "bar"};
- var options = {bar: "foo"};
-
- var oldInit = OpenLayers.Handler.prototype.initialize;
-
- OpenLayers.Handler.prototype.initialize = function(con, call, opt) {
- t.eq(con.id, control.id,
- "constructor calls parent with the correct control");
- t.eq(call, callbacks,
- "constructor calls parent with the correct callbacks");
- t.eq(opt, options,
- "constructor calls parent with the correct options");
- };
- var handler = new OpenLayers.Handler.Pinch(control, callbacks, options);
-
- OpenLayers.Handler.prototype.initialize = oldInit;
- }
-
- function test_activate(t) {
- t.plan(3);
- var map = new OpenLayers.Map('map');
- var control = new OpenLayers.Control();
- map.addControl(control);
- var handler = new OpenLayers.Handler.Pinch(control);
- handler.active = true;
- var activated = handler.activate();
- t.ok(!activated,
- "activate returns false if the handler was already active");
- handler.active = false;
- handler.pinching = true;
- activated = handler.activate();
- t.ok(activated,
- "activate returns true if the handler was not already active");
- t.ok(!handler.pinching,
- "activate sets pinching to false");
-
- }
-
- function test_events(t) {
- // each handled event should be activated twice when handler is
- // activated, so:
- // 27 = 4tests * 2*3events + 1tests * 3events
- t.plan(27);
-
- var map = new OpenLayers.Map('map');
- var control = new OpenLayers.Control();
- map.addControl(control);
- var handler = new OpenLayers.Handler.Pinch(control);
-
- // list below events that should be handled (events) and those
- // that should not be handled (nonevents) by the handler
- var events = ["touchend", "touchmove", "touchstart"];
- var nonevents = ["mousedown", "mouseup", "mousemove", "mouseout",
- "click", "dblclick", "resize", "focus", "blur"];
- map.events.registerPriority = function(type, obj, func) {
- // this is one of the mock handler methods
- t.eq(OpenLayers.Util.indexOf(nonevents, type), -1,
- "registered method is not one of the events " +
- "that should not be handled: " + type);
- t.ok(OpenLayers.Util.indexOf(events, type) > -1,
- "activate calls registerPriority with browser event: " + type);
- t.eq(typeof func, "function",
- "activate calls registerPriority with a function");
- t.eq(obj["CLASS_NAME"], "OpenLayers.Handler.Pinch",
- "activate calls registerPriority with the handler");
- };
- handler.activate();
- handler.deactivate();
-
- // set browser event like properties on the handler
- for(var i=0; i<events.length; ++i) {
- setMethod(events[i]);
- }
- function setMethod(key) {
- handler[key] = function() {return key;};
- }
-
- map.events.registerPriority = function(type, obj, func) {
- var r = func();
- if(typeof r == "string") {
- t.eq(r, type,
- "activate calls registerPriority with the correct method");
- }
- }
- handler.activate();
-
- }
-
- function test_callbacks(t) {
- t.plan(32);
-
- var map = new OpenLayers.Map('map', {controls: [], fallThrough: true});
-
- var control = new OpenLayers.Control();
- map.addControl(control);
-
- // set fake values for touches
- var testEvents = {
- start: {
- type: 'touchstart',
- touches: [{
- clientX: 100,
- clientY: 0
- }, {
- clientX: 0,
- clientY: 0
- }]
- },
- move: {
- type: 'touchmove',
- touches: [{
- clientX: 100,
- clientY: 0
- }, {
- clientX: 20,
- clientY: 0
- }]
- },
- done: {
- type: 'touchend',
- touches: []
- }
- };
-
- // set callback methods
- var customCb = OpenLayers.Function.False;
- var cb = function(evt) {
- var callback = evt.type.replace("touch", "").replace("end", "done");;
- var tch = testEvents[callback].touches;
- t.ok(evt.touches[0].clientX == tch[0].clientX &&
- evt.touches[0].clientY == tch[0].clientY,
- "touchstart sets first touch position correctly in evt");
- t.ok(evt.touches[1].clientX == tch[1].clientX &&
- evt.touches[1].clientY == tch[1].clientY,
- "touchstart sets second touch position correctly in evt");
- t.eq(handler.start.distance, 100, "start distance is " +
- "always the same");
- customCb.apply(this, arguments);
- }
- var callbacks = {
- start: cb,
- move: cb,
- done: function () {
- customCb.apply(this, arguments);
- }
- };
-
- var handler = new OpenLayers.Handler.Pinch(control, callbacks);
- handler.activate();
-
- var old_isMultiTouch = OpenLayers.Event.isMultiTouch;
- var old_stop = OpenLayers.Event.stop;
-
- // test single touch
- OpenLayers.Event.isMultiTouch = function() {
- return false;
- }
-
- // no callbacks with tests expected (pinch not started)
- map.events.handleBrowserEvent(testEvents.start);
- // test 1, 2, 3
- t.ok(!handler.started, "1) touchstart (singletouch) sets started to false");
- t.eq(handler.start, null, "1) touchstart (singletouch) sets start to null");
- t.eq(handler.last, null, "1) touchstart (singletouch) sets last to null");
-
- handler.started = true;
- handler.start = {
- distance: 100,
- delta: 0,
- scale: 1
- };
- handler.last = {
- distance: 150,
- delta: 10,
- scale: 1.5
- };
-
- // no callbacks with tests expected (multitouch pinch started, so ignores singletouch)
- map.events.handleBrowserEvent(testEvents.start);
- // test 4, 5, 6
- t.ok(handler.started, "1) touchstart (singletouch) after pinch started is ignored");
- t.ok(!!handler.start, "1) touchstart (singletouch) after pinch started is ignored");
- t.ok(!!handler.last, "1) touchstart (singletouch) after pinch started is ignored");
-
- OpenLayers.Event.stop = function(evt, allowDefault) {
- if(allowDefault) {
- t.fail(
- "touchstart is prevented from falling to other elements");
- }
- }
- OpenLayers.Event.isMultiTouch = function(evt) {
- var res = old_isMultiTouch(evt);
- t.ok(res, "fake event is a mutitouch touch event");
- return res;
- }
- customCb = function(evt, pinchdata) {
- t.eq(pinchdata.distance, 100, "2) calculated distance is correct");
- t.eq(pinchdata.delta, 0, "2) calculated delta is correct");
- t.eq(pinchdata.scale, 1, "2) calculated scale is correct");
- }
- // test 7, 8, 9, 10, 11, 12, 13
- map.events.handleBrowserEvent(testEvents.start);
- // test 14, 15
- t.ok(handler.started, "2) touchstart sets the started flag to true");
- t.ok(!handler.pinching, "2) touchstart sets the pinching flag to false");
-
- customCb = function(evt, pinchdata) {
- t.eq(pinchdata.distance, 80, "3) calculated distance is correct");
- t.eq(pinchdata.delta, 20, "3) calculated delta is correct");
- t.eq(pinchdata.scale, 0.8, "3) calculated scale is correct");
- }
- // test 16, 17, 18, 19, 20, 21, 22
- map.events.handleBrowserEvent(testEvents.move);
- // test 23, 24
- t.ok(handler.started, "3) started flag still set to true");
- t.ok(handler.pinching, "3) touchmove sets the pinching flag to true");
-
- OpenLayers.Event.isMultiTouch = old_isMultiTouch;
-
- customCb = function(evt, first, last) {
- t.eq(first.distance, 100, "4) calculated distance is correct");
- t.eq(first.delta, 0, "4) calculated delta is correct");
- t.eq(first.scale, 1, "4) calculated scale is correct");
- t.eq(last.distance, 80, "4) calculated distance is correct");
- t.eq(last.delta, 20, "4) calculated delta is correct");
- t.eq(last.scale, 0.8, "4) calculated scale is correct");
- }
- // test 25, 26, 27, 28, 29, 30
- map.events.handleBrowserEvent(testEvents.done);
- // test 31, 32
- t.ok(!handler.started, "4) started flag is set to false");
- t.ok(!handler.pinching, "4) touchdone sets the pinching flag to false");
-
- OpenLayers.Event.stop = old_stop;
-
- // test move or done before start
- customCb = function(evt) {
- t.fail("should not pass here")
- }
- // no callbacks with tests expected
- map.events.handleBrowserEvent(testEvents.move);
- map.events.handleBrowserEvent(testEvents.done);
-
- }
-
- function test_deactivate(t) {
- t.plan(6);
- var map = new OpenLayers.Map('map');
- var control = new OpenLayers.Control();
- map.addControl(control);
- var handler = new OpenLayers.Handler.Pinch(control);
- handler.active = false;
- var deactivated = handler.deactivate();
- t.ok(!deactivated,
- "deactivate returns false if the handler was not already active");
- handler.active = true;
- handler.pinching = true;
- deactivated = handler.deactivate();
- t.ok(deactivated,
- "deactivate returns true if the handler was active already");
- t.ok(!handler.started,
- "deactivate sets started to false");
- t.ok(!handler.pinching,
- "deactivate sets pinching to false");
- t.ok(handler.start == null,
- "deactivate sets start to null");
- t.ok(handler.last == null,
- "deactivate sets start to null");
- }
-
-
- </script>
-</head>
-<body>
- <div id="map" style="width: 300px; height: 150px;"/>
-</body>
-</html>