oop.html revision 5c69c6f367621a346c43fb031885185b7555f950
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore<html>
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore<head>
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore<title>YUI OOP Tests</title>
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore</head>
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore<body class="yui-skin-sam">
5c69c6f367621a346c43fb031885185b7555f950Adam Moore<h1 id="header1">OOP Tests</h1>
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore<p><input type="button" value="Run Tests" id="btnRun" disabled="true" /></p>
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore<script type="text/javascript" src="/build/yui/yui.js"></script>
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore<script type="text/javascript">
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore(function() {
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore YUI({
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore base: "/build/",
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore filter: "debug",
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore useConsole: true,
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore // logInclude: ['event', 'test']
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore //logExclude: ['Dom', 'Selector', 'Node', 'attribute']
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore logExclude: {Dom:true, Selector:true, Node:true, attribute:true, event:true, base:true}
5c69c6f367621a346c43fb031885185b7555f950Adam Moore }).use("dump", "test", "console", function(Y) {
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var button = Y.get('#btnRun'),
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert = Y.Assert,
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ObjectAssert = Y.ObjectAssert;
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore // Set up the page
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore button.set("disabled", false);
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore Y.on("click", function() {
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore Y.Test.Runner.run();
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore }, button);
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore
0771d781138a507b3e657573703f511291640bf3Adam Moore // var myConsole = new Y.Console().render();
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore var testOOP= new Y.Test.Case({
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore name: "OOP tests",
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore testExtend: function() {
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore var firedbase = false;
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore var firedextended = false;
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore var Base = function() {
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore Y.log('Base constructor executed');
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore arguments.callee.superclass.constructor.apply(this, arguments);
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore
d3c498b6d1138f87eedc0a1a4fb0f21ac713cba5Adam Moore // bind by string in order to allow the subclass
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore this.on('testStringFn', Y.bind('base', this));
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore };
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore
e275a18d7f6fd57baf841eb4c8f82d790c1ef6bdAdam Moore Y.extend(Base, Y.EventTarget, {
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore base: function() {
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore Y.log('base function');
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore firedbase = true;
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore }
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore });
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore var Extended = function() {
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore Y.log('Extended constructor executed');
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore arguments.callee.superclass.constructor.apply(this, arguments);
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore };
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore Y.extend(Extended, Base, {
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore base: function() {
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore Y.log('extended function');
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore firedextended = true;
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore }
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore });
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore var b = new Extended();
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore b.fire('testStringFn', 1, 2);
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore Y.Assert.isFalse(firedbase);
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore Y.Assert.isTrue(firedextended);
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore },
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore test_merge: function() {
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var o1 = { one: "one" },
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore o2 = { two: "two" },
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore o3 = { two: "twofromthree", three: "three" },
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore o4 = { one: "one", two: "twofromthree", three: "three" },
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore o123 = Y.merge(o1, o2, o3);
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore ObjectAssert.areEqual(o123, o4);
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.areEqual(o123.two, o4.two);
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore },
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore test_mix: function() {
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var a = {
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore 'bool' : false,
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore 'num' : 0,
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore 'nul' : null,
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore 'undef': undefined,
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore 'T' : 'blabber'
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore };
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore var b = {
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore 'bool' : 'oops',
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore 'num' : 'oops',
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore 'nul' : 'oops',
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore 'undef': 'oops',
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore 'T' : 'oops'
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore };
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Y.mix(a, b, false);
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isFalse((a.bool === 'oops'));
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isFalse((a.num === 'oops'));
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isFalse((a.nul === 'oops'));
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isFalse((a.undef === 'oops'));
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isFalse((a.T === 'oops'));
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Y.mix(a, b, true);
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isTrue((a.bool === 'oops'));
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isTrue((a.num === 'oops'));
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isTrue((a.nul === 'oops'));
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isTrue((a.undef === 'oops'));
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore Assert.isTrue((a.T === 'oops'));
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore },
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore test_clone: function() {
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore var a = {
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore 'bool' : false,
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore 'num' : 0,
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore 'nul' : null,
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore 'undef': undefined,
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore 'T' : 'blabber'
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore };
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore Assert.isTrue((a.T === 'blabber'));
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore var b = Y.clone(a);
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore var c = function() {
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore var _c = 3;
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore return {
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore a: 1,
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore b: 2,
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore c: function() {
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore return _c;
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore }
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore }
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore }();
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore var d = Y.clone(c);
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore Assert.isTrue((d.a === 1));
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore Assert.isTrue((d.c() === 3));
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore
5c69c6f367621a346c43fb031885185b7555f950Adam Moore },
5c69c6f367621a346c43fb031885185b7555f950Adam Moore
5c69c6f367621a346c43fb031885185b7555f950Adam Moore test_clone_node: function() {
5c69c6f367621a346c43fb031885185b7555f950Adam Moore
5c69c6f367621a346c43fb031885185b7555f950Adam Moore var a = {
5c69c6f367621a346c43fb031885185b7555f950Adam Moore node: Y.one('#header1'),
5c69c6f367621a346c43fb031885185b7555f950Adam Moore el: document.getElementById('header1')
5c69c6f367621a346c43fb031885185b7555f950Adam Moore };
5c69c6f367621a346c43fb031885185b7555f950Adam Moore
5c69c6f367621a346c43fb031885185b7555f950Adam Moore var b = Y.clone(a);
5c69c6f367621a346c43fb031885185b7555f950Adam Moore b.node.foo = 'bar';
5c69c6f367621a346c43fb031885185b7555f950Adam Moore
5c69c6f367621a346c43fb031885185b7555f950Adam Moore Assert.isFalse(b.node.foo === a.node.foo);
8556a973cf2503e0990811fc2b7a48193ae23149Adam Moore
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore }
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore });
bd4e7bf54bb629b039ba9e22ba57cf09cddce482Adam Moore
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore Y.Test.Runner.add(testOOP);
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore Y.Test.Runner.run();
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore });
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore})();
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore</script>
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore</body>
ba2328a2983042c5fed38cfe42b67ec9ea3fb588Adam Moore</html>