dom.html revision 3641f0baf10c9737e4ac6aac1566bfeaca00eeff
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore<html>
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore<head>
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore <title>YUI DOM Event Tests</title>
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore</head>
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore<body class="yui-skin-sam">
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore <div id="doc">
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore <div id="clickcontainer">
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore <p id="clicker1" class="clickers">click1</p>
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore <p id="clicker2" class="clickers">click2</p>
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore </div>
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore </div>
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore <!-- YUI3 Core //-->
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore <script type="text/javascript" src="/build/yui/yui-debug.js"></script>
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore <!-- Initialization process //-->
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore <script type="text/javascript">
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore YUI({
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore base: "/build/",
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore filter: 'debug',
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore combine: false,
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore useConsole: true,
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore logExclude: {deprecated:1, yui:true, get: true, 'selector-native': true, loader: true, Dom: true, Selector: true, Node: true, attribute: true, base: true, event: true, widget: true}
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore }).use('console', 'test', 'node', 'event-simulate', function (Y) {
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore // creating the console...
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore (new Y.Console()).render();
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore // starting the testing process
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore // add the test cases and suites
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Test.Runner.add(new Y.Test.Case({
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore name: "DOM Event Tests",
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore test_on_with_string: function() {
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore var clicked = false,
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore context,
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex1,
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex2,
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore obj = {
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore a: 1
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore };
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.on('click', function(e, extra1, extra2) {
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore clicked = true;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore context = this;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex1 = extra1;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex2 = extra2;
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore }, '#clickcontainer', obj, 2, 3);
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Event.simulate(document.getElementById('clickcontainer'), 'click');
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.isTrue(clicked, "click handler via Y.on didn't work when passed a string.");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(1, context.a, "context didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore },
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore test_on_with_node: function() {
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore var clicked = false,
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore context,
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex1,
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex2,
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore obj = {
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore a: 1
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore },
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore node = Y.get('#clickcontainer');
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.on('click', function(e, extra1, extra2) {
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore clicked = true;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore context = this;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex1 = extra1;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex2 = extra2;
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore }, node, obj, 2, 3);
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Event.simulate(document.getElementById('clickcontainer'), 'click');
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.isTrue(clicked, "click handler via Y.on didn't work when passed a node.");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(1, context.a, "context didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore },
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore test_node_on: function() {
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore var clicked = false,
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore context,
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex1,
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex2,
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore obj = {
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore a: 1
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore },
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore node = Y.get('#clickcontainer');
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore node.on('click', function(e, extra1, extra2) {
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore clicked = true;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore context = this;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex1 = extra1;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex2 = extra2;
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore }, obj, 2, 3);
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Event.simulate(document.getElementById('clickcontainer'), 'click');
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.isTrue(clicked, "click handler didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(1, context.a, "context didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore },
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore test_node_detachall: function() {
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore var clicked = false, overed = false,
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore node = Y.get('#clickcontainer');
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore node.on('click', function(e, extra1, extra2) {
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore clicked = true;
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore });
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore node.on('mouseover', function(e, extra1, extra2) {
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore overed = true;
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore });
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore node.detachAll();
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Event.simulate(document.getElementById('clickcontainer'), 'click');
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.isFalse(clicked, "click handler was not removed");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.isFalse(overed, "mouseover handler was not removed");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore },
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore test_nodelist_on: function() {
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore var clicked = 0,
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore context,
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex1,
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex2,
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore obj = {
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore a: 1
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore },
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore nodelist = Y.all('.clickers');
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore nodelist.on('click', function(e, extra1, extra2) {
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore clicked++;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore context = this;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex1 = extra1;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex2 = extra2;
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore }, obj, 2, 3);
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Event.simulate(document.getElementById('clicker1'), 'click');
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(1, clicked, "click handler didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(1, context.a, "context didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(2, ex1, "extra arg1 didn't work"); // bug #2528155
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(3, ex2, "extra arg2 didn't work"); // bug #2528155
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Event.simulate(document.getElementById('clicker2'), 'click');
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(2, clicked, "click handler didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(1, context.a, "context didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(2, ex1, "extra arg1 didn't work"); // bug #2528155
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(3, ex2, "extra arg2 didn't work"); // bug #2528155
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore },
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore test_y_on_with_nodelist: function() {
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore var clicked = 0,
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore context,
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex1,
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex2,
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore obj = {
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore a: 1
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore },
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore nodelist = Y.all('.clickers');
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.on('click', function(e, extra1, extra2) {
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore clicked++;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore context = this;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex1 = extra1;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex2 = extra2;
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore }, nodelist, obj, 2, 3);
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Event.simulate(document.getElementById('clicker1'), 'click');
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(1, clicked, "click handler didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(1, context.a, "context didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Event.simulate(document.getElementById('clicker2'), 'click');
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(2, clicked, "click handler didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(1, context.a, "context didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore },
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore test_y_on_with_selector_multiple_match: function() {
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore var clicked = 0,
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore context,
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore ex1,
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore ex2,
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore obj = {
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore a: 1
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore };
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.on('click', function(e, extra1, extra2) {
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore clicked++;
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore context = this;
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore ex1 = extra1;
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore ex2 = extra2;
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore }, '.clickers', obj, 2, 3);
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Event.simulate(document.getElementById('clicker1'), 'click');
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(1, clicked, "click handler didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(1, context.a, "context didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Event.simulate(document.getElementById('clicker2'), 'click');
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(2, clicked, "click handler didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(1, context.a, "context didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore },
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore test_y_on_with_htmlelementcollection: function() {
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore var clicked = 0,
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore context,
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore ex1,
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore ex2,
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore obj = {
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore a: 1
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore };
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.on('click', function(e, extra1, extra2) {
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore clicked++;
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore context = this;
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore ex1 = extra1;
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore ex2 = extra2;
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore }, document.getElementsByTagName('p'), obj, 2, 3);
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Event.simulate(document.getElementById('clicker1'), 'click');
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(1, clicked, "click handler didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(1, context.a, "context didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Event.simulate(document.getElementById('clicker2'), 'click');
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(2, clicked, "click handler didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(1, context.a, "context didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore },
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore test_detach_by_sig: function() {
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore var clicked = 0,
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore context,
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore ex1,
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore ex2,
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore obj = {
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore a: 1
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore }, fn = function(e, extra1, extra2) {
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore clicked++;
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore context = this;
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore ex1 = extra1;
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore ex2 = extra2;
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore },
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore els = document.getElementsByTagName('p');
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.on('click', fn, 'clicker1', obj, 2, 3);
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Event.detach('click', fn, 'clicker1', obj, 2, 3);
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Event.simulate(document.getElementById('clicker1'), 'click');
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(0, clicked, "detach by signature was a failure");
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore },
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore test_multi_detach: function() {
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore var clicked = 0,
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore context,
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore ex1,
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore ex2,
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore obj = {
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore a: 1
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore }, fn = function(e, extra1, extra2) {
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore clicked++;
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore context = this;
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore ex1 = extra1;
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore ex2 = extra2;
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore },
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore els = document.getElementsByTagName('p');
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore var handle = Y.on('click', fn, '.clickers', obj, 2, 3);
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore // Y.log(handle);
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore handle.detach();
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Event.simulate(document.getElementById('clicker1'), 'click');
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Event.simulate(document.getElementById('clicker2'), 'click');
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(0, clicked, "single detach handle for multiple listeners doesn't work.");
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore },
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore test_onavail_detach: function() {
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore var avail = 0,
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore handle = Y.on('available', function() {
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore avail++;
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore }, '#notthereyet'),
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore div = document.createElement("div");
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore div.id = 'notthereyet';
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore handle.detach();
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore document.body.appendChild(div);
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore this.wait(function() {
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(0, avail, "onavailable wasn't canceled.");
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore }, 300);
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore },
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore test_lazy_attach_detach: function() {
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore var avail = 0,
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore handle = Y.on('click', function() {
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore avail++;
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore }, '#notthereyet'),
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore div = document.createElement("div");
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore div.id = 'notthereyet';
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore document.body.appendChild(div);
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore this.wait(function() {
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore handle.detach();
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Event.simulate(document.getElementById('notthereyet'), 'click');
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Assert.areEqual(0, avail, "lazy detacher didn't work.");
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore }, 300);
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore }
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore }));
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore //run all tests
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore Y.Test.Runner.run();
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore /* finishing the testing process */
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore });
3641f0baf10c9737e4ac6aac1566bfeaca00eeffAdam Moore </script>
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore</body>
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore</html>