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