oop.html revision 0771d781138a507b3e657573703f511291640bf3
842ae4bd224140319ae7feec1872b93dfd491143fielding<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
842ae4bd224140319ae7feec1872b93dfd491143fielding<html>
842ae4bd224140319ae7feec1872b93dfd491143fielding<head>
842ae4bd224140319ae7feec1872b93dfd491143fielding<title>YUI OOP Tests</title>
842ae4bd224140319ae7feec1872b93dfd491143fielding</head>
842ae4bd224140319ae7feec1872b93dfd491143fielding
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding<body class="yui-skin-sam">
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd<h1>OOP Tests</h1>
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding<p><input type="button" value="Run Tests" id="btnRun" disabled="true" /></p>
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd<script type="text/javascript" src="/build/yui/yui.js"></script>
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd<script type="text/javascript">
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd(function() {
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding YUI({
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding base: "/build/",
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding filter: "debug",
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding useConsole: true,
e8f95a682820a599fe41b22977010636be5c2717jim // logInclude: ['event', 'test']
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding //logExclude: ['Dom', 'Selector', 'Node', 'attribute']
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding logExclude: {Dom:true, Selector:true, Node:true, attribute:true, event:true, base:true}
e8f95a682820a599fe41b22977010636be5c2717jim }).use("dump", "test", "console", "event-custom", function(Y) {
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding var button = Y.get('#btnRun'),
b6055b7832a0e4d0818416252fff5925aaebae4brbb Assert = Y.Assert,
1b21d7b3d97def358b2e923655edeb16613a1c31gstein ObjectAssert = Y.ObjectAssert;
1b21d7b3d97def358b2e923655edeb16613a1c31gstein
1b21d7b3d97def358b2e923655edeb16613a1c31gstein // Set up the page
1b21d7b3d97def358b2e923655edeb16613a1c31gstein button.set("disabled", false);
1b21d7b3d97def358b2e923655edeb16613a1c31gstein Y.on("click", function() {
2d71630471d1c23f0137309e3c3957c633ecbfd6rbb Y.Test.Runner.run();
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding }, button);
449efc4dc68e42cc4421d15498a689618aab5dc3coar
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding // var myConsole = new Y.Console().render();
fd0edaa8e3d4dd67d0604ccef2e96b071db96643fielding
a877b7d5d03f91d6c93076d9ccf14469c70c648dcoar var testOOP= new Y.Test.Case({
1b21d7b3d97def358b2e923655edeb16613a1c31gstein name: "OOP tests",
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
a7ad08f37d876bde1a32f0cf793f4799536ab1a5ben testExtend: function() {
a7ad08f37d876bde1a32f0cf793f4799536ab1a5ben
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding var firedbase = false;
ef5650b61a8e35f3cc93ec07e73efc17ea329894jorton var firedextended = false;
076ae4ad21f0b3f25e2feabd9886b9500929eb2ejerenkrantz
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding var Base = function() {
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding Y.log('Base constructor executed');
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding arguments.callee.superclass.constructor.apply(this, arguments);
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm // bind by string in order to allow the subclass
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding this.on('testStringFn', Y.bind('base', this));
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding };
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm Y.extend(Base, Y.EventTarget, {
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding base: function() {
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding Y.log('base function');
3d96ee83babeec32482c9082c9426340cee8c44dwrowe firedbase = true;
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding }
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm });
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding var Extended = function() {
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm Y.log('Extended constructor executed');
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding arguments.callee.superclass.constructor.apply(this, arguments);
066877f1a045103acfdd376d48cdd473c33f409bdougm };
066877f1a045103acfdd376d48cdd473c33f409bdougm
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding Y.extend(Extended, Base, {
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding base: function() {
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding Y.log('extended function');
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm firedextended = true;
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding }
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding });
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm
066877f1a045103acfdd376d48cdd473c33f409bdougm var b = new Extended();
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding b.fire('testStringFn', 1, 2);
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding Y.Assert.isFalse(firedbase);
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm Y.Assert.isTrue(firedextended);
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding },
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm test_merge: function() {
076ae4ad21f0b3f25e2feabd9886b9500929eb2ejerenkrantz var o1 = { one: "one" },
076ae4ad21f0b3f25e2feabd9886b9500929eb2ejerenkrantz o2 = { two: "two" },
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding o3 = { two: "twofromthree", three: "three" },
066877f1a045103acfdd376d48cdd473c33f409bdougm o4 = { one: "one", two: "twofromthree", three: "three" },
066877f1a045103acfdd376d48cdd473c33f409bdougm o123 = Y.merge(o1, o2, o3);
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding ObjectAssert.areEqual(o123, o4);
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding Assert.areEqual(o123.two, o4.two);
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm },
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding test_mix: function() {
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm
076ae4ad21f0b3f25e2feabd9886b9500929eb2ejerenkrantz var a = {
076ae4ad21f0b3f25e2feabd9886b9500929eb2ejerenkrantz 'bool' : false,
066877f1a045103acfdd376d48cdd473c33f409bdougm 'num' : 0,
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding 'nul' : null,
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding 'undef': undefined,
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding 'T' : 'blabber'
4d7e28c869788fb00bffda29a67f1b10e19f159dnd };
4d7e28c869788fb00bffda29a67f1b10e19f159dnd
4d7e28c869788fb00bffda29a67f1b10e19f159dnd var b = {
a7ad08f37d876bde1a32f0cf793f4799536ab1a5ben 'bool' : 'oops',
36d38d22e0d385db01f5773a579f44b8f02e4b1fsf 'num' : 'oops',
076ae4ad21f0b3f25e2feabd9886b9500929eb2ejerenkrantz 'nul' : 'oops',
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding 'undef': 'oops',
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding 'T' : 'oops'
a6b9ed64fdf548c61de9714e2cfb999ec59d149cgstein };
a6b9ed64fdf548c61de9714e2cfb999ec59d149cgstein
066877f1a045103acfdd376d48cdd473c33f409bdougm Y.mix(a, b, false);
4d7e28c869788fb00bffda29a67f1b10e19f159dnd
4d7e28c869788fb00bffda29a67f1b10e19f159dnd Assert.isFalse((a.bool === 'oops'));
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding Assert.isFalse((a.num === 'oops'));
18413e519b6e5d05ff00d18efd784307442ca2f3igalic Assert.isFalse((a.nul === 'oops'));
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding Assert.isFalse((a.undef === 'oops'));
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding Assert.isFalse((a.T === 'oops'));
36d38d22e0d385db01f5773a579f44b8f02e4b1fsf
076ae4ad21f0b3f25e2feabd9886b9500929eb2ejerenkrantz Y.mix(a, b, true);
076ae4ad21f0b3f25e2feabd9886b9500929eb2ejerenkrantz Assert.isTrue((a.bool === 'oops'));
36d38d22e0d385db01f5773a579f44b8f02e4b1fsf Assert.isTrue((a.num === 'oops'));
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding Assert.isTrue((a.nul === 'oops'));
9bf4319b4fc7b31295b945215a55e2a92ba57903wrowe Assert.isTrue((a.undef === 'oops'));
9bf4319b4fc7b31295b945215a55e2a92ba57903wrowe Assert.isTrue((a.T === 'oops'));
9bf4319b4fc7b31295b945215a55e2a92ba57903wrowe
9bf4319b4fc7b31295b945215a55e2a92ba57903wrowe },
9bf4319b4fc7b31295b945215a55e2a92ba57903wrowe
9bf4319b4fc7b31295b945215a55e2a92ba57903wrowe test_clone: function() {
36d38d22e0d385db01f5773a579f44b8f02e4b1fsf
9bf4319b4fc7b31295b945215a55e2a92ba57903wrowe var a = {
36d38d22e0d385db01f5773a579f44b8f02e4b1fsf 'bool' : false,
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding 'num' : 0,
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding 'nul' : null,
4d7e28c869788fb00bffda29a67f1b10e19f159dnd 'undef': undefined,
4d7e28c869788fb00bffda29a67f1b10e19f159dnd 'T' : 'blabber'
4d7e28c869788fb00bffda29a67f1b10e19f159dnd };
4d7e28c869788fb00bffda29a67f1b10e19f159dnd
4d7e28c869788fb00bffda29a67f1b10e19f159dnd Assert.isTrue((a.T === 'blabber'));
36d38d22e0d385db01f5773a579f44b8f02e4b1fsf
4d7e28c869788fb00bffda29a67f1b10e19f159dnd var b = Y.clone(a);
36d38d22e0d385db01f5773a579f44b8f02e4b1fsf
36d38d22e0d385db01f5773a579f44b8f02e4b1fsf var c = function() {
4d7e28c869788fb00bffda29a67f1b10e19f159dnd
1f0ca94141196628ecadf1a91f2b60a33349872fnd var _c = 3;
1f0ca94141196628ecadf1a91f2b60a33349872fnd
1f0ca94141196628ecadf1a91f2b60a33349872fnd return {
1f0ca94141196628ecadf1a91f2b60a33349872fnd a: 1,
1f0ca94141196628ecadf1a91f2b60a33349872fnd b: 2,
36d38d22e0d385db01f5773a579f44b8f02e4b1fsf c: function() {
36d38d22e0d385db01f5773a579f44b8f02e4b1fsf return _c;
4d7e28c869788fb00bffda29a67f1b10e19f159dnd }
4d7e28c869788fb00bffda29a67f1b10e19f159dnd }
4d7e28c869788fb00bffda29a67f1b10e19f159dnd }();
4d7e28c869788fb00bffda29a67f1b10e19f159dnd
4d7e28c869788fb00bffda29a67f1b10e19f159dnd var d = Y.clone(c);
4d7e28c869788fb00bffda29a67f1b10e19f159dnd
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding Assert.isTrue((d.a === 1));
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding Assert.isTrue((d.c() === 3));
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
36d38d22e0d385db01f5773a579f44b8f02e4b1fsf
36d38d22e0d385db01f5773a579f44b8f02e4b1fsf }
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
36d38d22e0d385db01f5773a579f44b8f02e4b1fsf });
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
36d38d22e0d385db01f5773a579f44b8f02e4b1fsf Y.Test.Runner.add(testOOP);
36d38d22e0d385db01f5773a579f44b8f02e4b1fsf Y.Test.Runner.run();
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding });
36d38d22e0d385db01f5773a579f44b8f02e4b1fsf})();
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding</script>
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding</body>
a7ad08f37d876bde1a32f0cf793f4799536ab1a5ben</html>
076ae4ad21f0b3f25e2feabd9886b9500929eb2ejerenkrantz