sku-pg
Version:
Skulpt is a Javascript implementation of Python 2.x. Python that runs in your browser!
212 lines (159 loc) • 7.24 kB
HTML
<html>
<!--
Copyright 2009 The Closure Library Authors. All Rights Reserved.
Use of this source code is governed by the Apache License, Version 2.0.
See the COPYING file for details.
-->
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Closure Unit Tests - goog.events.actionEventWrapper</title>
<script src="../base.js"></script>
<script>
goog.require('goog.events');
goog.require('goog.events.EventHandler');
goog.require('goog.events.actionEventWrapper');
goog.require('goog.testing.events');
goog.require('goog.testing.jsunit');
</script>
</head>
<body>
<div id="a" tabindex="0"></div>
<script>
var a = document.getElementById('a');
var eh, events;
function setUp() {
events = [];
eh = new goog.events.EventHandler();
assertEquals('No listeners registered yet', 0,
goog.events.getListeners(a).length);
}
function tearDown() {
eh.dispose();
}
var Foo = function() {};
Foo.prototype.test = function(e) {
events.push(e);
};
function assertListenersExist(el, listenerCount, capt) {
var EVENT_TYPES = goog.events.ActionEventWrapper_.EVENT_TYPES_;
for (var i = 0; i < EVENT_TYPES.length; ++i) {
assertEquals(listenerCount, goog.events.getListeners(
el, EVENT_TYPES[i], capt).length);
}
}
function testAddActionListener() {
var listener = function(e) { events.push(e); }
goog.events.listenWithWrapper(a, goog.events.actionEventWrapper, listener);
assertListenersExist(a, 1, false);
goog.testing.events.fireClickSequence(a);
assertEquals('1 event should have been dispatched', 1, events.length);
assertEquals('Should be an click event', 'click', events[0].type)
goog.testing.events.fireKeySequence(a, goog.events.KeyCodes.ENTER);
assertEquals('2 events should have been dispatched', 2, events.length);
assertEquals('Should be an keypress event', 'keypress', events[1].type)
goog.testing.events.fireKeySequence(a, goog.events.KeyCodes.SPACE);
assertEquals('2 events should have been dispatched', 2, events.length);
goog.testing.events.fireKeySequence(a, goog.events.KeyCodes.ESC);
assertEquals('2 events should have been dispatched', 2, events.length);
goog.events.unlistenWithWrapper(a, goog.events.actionEventWrapper,
listener);
assertListenersExist(a, 0, false);
}
function testAddActionListenerInCaptPhase() {
var count = 0;
var captListener = function(e) {
events.push(e);
assertEquals(0, count);
count++;
}
var bubbleListener = function(e) {
events.push(e);
assertEquals(1, count);
count = 0
}
goog.events.listenWithWrapper(a, goog.events.actionEventWrapper,
captListener, true);
goog.events.listenWithWrapper(a, goog.events.actionEventWrapper,
bubbleListener);
assertListenersExist(a, 1, false);
assertListenersExist(a, 1, true);
goog.testing.events.fireClickSequence(a);
assertEquals('2 event should have been dispatched', 2, events.length);
assertEquals('Should be an click event', 'click', events[0].type)
goog.testing.events.fireKeySequence(a, goog.events.KeyCodes.ENTER);
assertEquals('4 events should have been dispatched', 4, events.length);
assertEquals('Should be an keypress event', 'keypress', events[2].type)
goog.testing.events.fireKeySequence(a, goog.events.KeyCodes.SPACE);
assertEquals('4 events should have been dispatched', 4, events.length);
goog.testing.events.fireKeySequence(a, goog.events.KeyCodes.ESC);
assertEquals('4 events should have been dispatched', 4, events.length);
goog.events.unlistenWithWrapper(a, goog.events.actionEventWrapper,
captListener, true);
goog.events.unlistenWithWrapper(a, goog.events.actionEventWrapper,
bubbleListener);
assertListenersExist(a, 0, false);
assertListenersExist(a, 0, true);
}
function testRemoveActionListener() {
var listener1 = function(e) { events.push(e); };
var listener2 = function(e) { events.push({type: 'err'}); }
goog.events.listenWithWrapper(a, goog.events.actionEventWrapper, listener1);
assertListenersExist(a, 1, false);
goog.events.listenWithWrapper(a, goog.events.actionEventWrapper, listener2);
assertListenersExist(a, 2, false);
goog.testing.events.fireKeySequence(a, goog.events.KeyCodes.ENTER);
assertEquals('2 events should have been dispatched', 2, events.length);
assertEquals('Should be an keypress event', 'keypress', events[0].type);
assertEquals('Should be an err event', 'err', events[1].type);
goog.events.unlistenWithWrapper(a, goog.events.actionEventWrapper,
listener2);
assertListenersExist(a, 1, false);
events = [];
goog.testing.events.fireKeySequence(a, goog.events.KeyCodes.ENTER);
assertEquals('1 event should have been dispatched', 1, events.length);
assertEquals('Should be an keypress event', 'keypress', events[0].type);
goog.events.unlistenWithWrapper(a, goog.events.actionEventWrapper,
listener1);
assertListenersExist(a, 0, false);
}
function testEventHandlerActionListener() {
var listener = function(e) { events.push(e); }
eh.listenWithWrapper(a, goog.events.actionEventWrapper, listener);
assertListenersExist(a, 1, false);
goog.testing.events.fireClickSequence(a);
assertEquals('1 event should have been dispatched', 1, events.length);
assertEquals('Should be an click event', 'click', events[0].type)
goog.testing.events.fireKeySequence(a, goog.events.KeyCodes.ENTER);
assertEquals('2 events should have been dispatched', 2, events.length);
assertEquals('Should be an keypress event', 'keypress', events[1].type)
goog.testing.events.fireKeySequence(a, goog.events.KeyCodes.SPACE);
assertEquals('2 events should have been dispatched', 2, events.length);
goog.testing.events.fireKeySequence(a, goog.events.KeyCodes.ESC);
assertEquals('2 events should have been dispatched', 2, events.length);
eh.unlistenWithWrapper(a, goog.events.actionEventWrapper,
listener);
assertListenersExist(a, 0, false);
}
function testEventHandlerActionListenerWithScope() {
var foo = new Foo();
var eh2 = new goog.events.EventHandler(foo);
eh2.listenWithWrapper(a, goog.events.actionEventWrapper, foo.test);
assertListenersExist(a, 1, false);
goog.testing.events.fireClickSequence(a);
assertEquals('1 event should have been dispatched', 1, events.length);
assertEquals('Should be an click event', 'click', events[0].type)
goog.testing.events.fireKeySequence(a, goog.events.KeyCodes.ENTER);
assertEquals('2 events should have been dispatched', 2, events.length);
assertEquals('Should be an keypress event', 'keypress', events[1].type)
goog.testing.events.fireKeySequence(a, goog.events.KeyCodes.SPACE);
assertEquals('2 events should have been dispatched', 2, events.length);
goog.testing.events.fireKeySequence(a, goog.events.KeyCodes.ESC);
assertEquals('2 events should have been dispatched', 2, events.length);
eh2.dispose();
assertListenersExist(a, 0, false);
delete foo;
}
</script>
</body>
</html>