dom.html revision bc8660dcb747bedc141ca9061de83f6f32f8018f
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>
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore <title>YUI DOM Event Tests</title>
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore</head>
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore<body class="yui-skin-sam">
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore <div id="doc">
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam 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>
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore <!-- YUI3 Core //-->
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore <script type="text/javascript" src="/build/yui/yui-debug.js"></script>
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore <!-- Initialization process //-->
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore <script type="text/javascript">
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore YUI({
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore base: "/build/",
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore filter: 'debug',
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore combine: false,
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore useConsole: true,
f647f9c7909e84a0b19f09de42ce82a715e2d52aAdam Moore logExclude: {deprecated:1, yui:true, get: true, loader: true, Dom: true, Selector: true, Node: true, attribute: true, base: true, event: true, widget: true}
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore }).use('console', 'test', 'node', 'event-simulate', function (Y) {
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore // creating the console...
0771d781138a507b3e657573703f511291640bf3Adam Moore // (new Y.Console()).render();
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore // starting the testing process
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore // add the test cases and suites
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Test.Runner.add(new Y.Test.Case({
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore name: "DOM Event Tests",
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore test_on_with_string: function() {
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore var clicked = false,
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore context,
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex1,
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex2,
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore obj = {
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore a: 1
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore };
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.on('click', function(e, extra1, extra2) {
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore clicked = true;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore context = this;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex1 = extra1;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex2 = extra2;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore }, '#clickcontainer', obj, 2, 3);
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Event.simulate(document.getElementById('clickcontainer'), 'click');
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Assert.isTrue(clicked, "click handler via Y.on didn't work when passed a string.");
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Assert.areEqual(1, context.a, "context didn't work");
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore },
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore test_on_with_node: function() {
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam 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');
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.on('click', function(e, extra1, extra2) {
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore clicked = true;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore context = this;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex1 = extra1;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex2 = extra2;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore }, node, obj, 2, 3);
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Event.simulate(document.getElementById('clickcontainer'), 'click');
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Assert.isTrue(clicked, "click handler via Y.on didn't work when passed a node.");
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Assert.areEqual(1, context.a, "context didn't work");
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore },
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore test_node_on: function() {
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam 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');
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore node.on('click', function(e, extra1, extra2) {
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore clicked = true;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore context = this;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex1 = extra1;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex2 = extra2;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore }, obj, 2, 3);
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Event.simulate(document.getElementById('clickcontainer'), 'click');
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Assert.isTrue(clicked, "click handler didn't work");
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Assert.areEqual(1, context.a, "context didn't work");
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore },
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore test_nodelist_on: function() {
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam 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
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore nodelist.on('click', function(e, extra1, extra2) {
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore clicked++;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore context = this;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex1 = extra1;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex2 = extra2;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore }, obj, 2, 3);
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Event.simulate(document.getElementById('clicker1'), 'click');
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Assert.areEqual(1, clicked, "click handler didn't work");
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Assert.areEqual(1, context.a, "context didn't work");
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore Y.Assert.areEqual(2, ex1, "extra arg1 didn't work"); // bug #2528155
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore Y.Assert.areEqual(3, ex2, "extra arg2 didn't work"); // bug #2528155
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Event.simulate(document.getElementById('clicker2'), 'click');
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Assert.areEqual(2, clicked, "click handler didn't work");
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Assert.areEqual(1, context.a, "context didn't work");
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore Y.Assert.areEqual(2, ex1, "extra arg1 didn't work"); // bug #2528155
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore Y.Assert.areEqual(3, ex2, "extra arg2 didn't work"); // bug #2528155
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore },
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore test_y_on_with_nodelist: function() {
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam 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
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.on('click', function(e, extra1, extra2) {
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore clicked++;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore context = this;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex1 = extra1;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore ex2 = extra2;
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore }, nodelist, obj, 2, 3);
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Event.simulate(document.getElementById('clicker1'), 'click');
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Assert.areEqual(1, clicked, "click handler didn't work");
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Assert.areEqual(1, context.a, "context didn't work");
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore Y.Event.simulate(document.getElementById('clicker2'), 'click');
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore Y.Assert.areEqual(2, clicked, "click handler didn't work");
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore Y.Assert.areEqual(1, context.a, "context didn't work");
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore },
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore test_y_on_with_selector_multiple_match: function() {
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore var clicked = 0,
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore context,
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore ex1,
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore ex2,
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore obj = {
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore a: 1
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore };
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore Y.on('click', function(e, extra1, extra2) {
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore clicked++;
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore context = this;
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore ex1 = extra1;
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore ex2 = extra2;
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore }, '.clickers', obj, 2, 3);
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore Y.Event.simulate(document.getElementById('clicker1'), 'click');
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore Y.Assert.areEqual(1, clicked, "click handler didn't work");
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore Y.Assert.areEqual(1, context.a, "context didn't work");
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Event.simulate(document.getElementById('clicker2'), 'click');
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Assert.areEqual(2, clicked, "click handler didn't work");
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Assert.areEqual(1, context.a, "context didn't work");
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore },
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore test_y_on_with_htmlelementcollection: function() {
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore var clicked = 0,
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore context,
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore ex1,
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore ex2,
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore obj = {
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore a: 1
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore };
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore Y.on('click', function(e, extra1, extra2) {
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore clicked++;
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore context = this;
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore ex1 = extra1;
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore ex2 = extra2;
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore }, document.getElementsByTagName('p'), obj, 2, 3);
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore Y.Event.simulate(document.getElementById('clicker1'), 'click');
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore Y.Assert.areEqual(1, clicked, "click handler didn't work");
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore Y.Assert.areEqual(1, context.a, "context didn't work");
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore Y.Event.simulate(document.getElementById('clicker2'), 'click');
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore Y.Assert.areEqual(2, clicked, "click handler didn't work");
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore Y.Assert.areEqual(1, context.a, "context didn't work");
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore Y.Assert.areEqual(2, ex1, "extra arg1 didn't work");
6a3faa9e0e4639febffbd7018ce47b861626d0baAdam Moore Y.Assert.areEqual(3, ex2, "extra arg2 didn't work");
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore },
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore test_detach_by_sig: function() {
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam 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
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore Y.on('click', fn, 'clicker1', obj, 2, 3);
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore Y.Event.detach('click', fn, 'clicker1', obj, 2, 3);
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore Y.Event.simulate(document.getElementById('clicker1'), 'click');
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore Y.Assert.areEqual(0, clicked, "detach by signature was a failure");
2f03ba9e07559709925bfe6cb1b40c83aa810672Adam Moore
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore },
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore test_multi_detach: function() {
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam 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
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore var handle = Y.on('click', fn, '.clickers', obj, 2, 3);
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore // Y.log(handle);
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore handle.detach();
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore Y.Event.simulate(document.getElementById('clicker1'), 'click');
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore Y.Event.simulate(document.getElementById('clicker2'), 'click');
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore Y.Assert.areEqual(0, clicked, "single detach handle for multiple listeners doesn't work.");
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore },
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam 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() {
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore Y.Assert.areEqual(0, avail, "onavailable wasn't canceled.");
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore }, 300);
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore },
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam 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
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore handle.detach();
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore Y.Event.simulate(document.getElementById('notthereyet'), 'click');
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore Y.Assert.areEqual(0, avail, "lazy detacher didn't work.");
bc8660dcb747bedc141ca9061de83f6f32f8018fAdam Moore }
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore }));
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore //run all tests
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore Y.Test.Runner.run();
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore /* finishing the testing process */
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore });
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore </script>
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore</body>
e69255aa5a65f8406ba2fabaf69fe4e1d05daf69Adam Moore</html>