4f2de35716c5df46152747980516af484d0ab208Adam Moore<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
4f2de35716c5df46152747980516af484d0ab208Adam Moore<html>
4f2de35716c5df46152747980516af484d0ab208Adam Moore<head>
3bdb28d93e972f3835ffeac692951782bf9751d1Adam Moore<title>YUI AOP Tests</title>
4f2de35716c5df46152747980516af484d0ab208Adam Moore</head>
4f2de35716c5df46152747980516af484d0ab208Adam Moore
0a9c6f9f30a66e52ec4ea4ed93504580b3a5669aAdam Moore<body class="yui3-skin-sam">
f8429c26dd96d07d2fc4c4f7bf017f18de308306Adam Moore<h1>AOP Tests</h1>
4f2de35716c5df46152747980516af484d0ab208Adam Moore<p><input type="button" value="Run Tests" id="btnRun" disabled="true" /></p>
4f2de35716c5df46152747980516af484d0ab208Adam Moore
4f2de35716c5df46152747980516af484d0ab208Adam Moore<script type="text/javascript" src="/build/yui/yui.js"></script>
4f2de35716c5df46152747980516af484d0ab208Adam Moore<script type="text/javascript">
4f2de35716c5df46152747980516af484d0ab208Adam Moore
4f2de35716c5df46152747980516af484d0ab208Adam Moore(function() {
4f2de35716c5df46152747980516af484d0ab208Adam Moore YUI({
4f2de35716c5df46152747980516af484d0ab208Adam Moore base: "/build/",
a4a12866ef14f142b1a799fc246a542d69af602bLuke Smith filter: (window.location.search.match(/[?&]filter=([^&]+)/) || [])[1] || 'min',
a4a12866ef14f142b1a799fc246a542d69af602bLuke Smith allowRollup: false,
4f2de35716c5df46152747980516af484d0ab208Adam Moore useConsole: true,
4f2de35716c5df46152747980516af484d0ab208Adam Moore // logInclude: ['event', 'test']
4f2de35716c5df46152747980516af484d0ab208Adam Moore logExclude: {Dom: true, Selector: true, Node: true, attribute: true, base: true, event: true, widget: true}
4f2de35716c5df46152747980516af484d0ab208Adam Moore }).use("dump", "test", "console", "event-custom", function(Y) {
4f2de35716c5df46152747980516af484d0ab208Adam Moore
3bdb28d93e972f3835ffeac692951782bf9751d1Adam Moore var button = Y.one('#btnRun');
4f2de35716c5df46152747980516af484d0ab208Adam Moore
4f2de35716c5df46152747980516af484d0ab208Adam Moore // Set up the page
4f2de35716c5df46152747980516af484d0ab208Adam Moore button.set("disabled", false);
4f2de35716c5df46152747980516af484d0ab208Adam Moore Y.on("click", function() {
4f2de35716c5df46152747980516af484d0ab208Adam Moore Y.Test.Runner.run();
4f2de35716c5df46152747980516af484d0ab208Adam Moore }, button);
4f2de35716c5df46152747980516af484d0ab208Adam Moore
4f2de35716c5df46152747980516af484d0ab208Adam Moore var myConsole = new Y.Console().render();
3bdb28d93e972f3835ffeac692951782bf9751d1Adam Moore
4f2de35716c5df46152747980516af484d0ab208Adam Moore var testEventTarget = new Y.Test.Case({
f8429c26dd96d07d2fc4c4f7bf017f18de308306Adam Moore name: "AOP tests",
4f2de35716c5df46152747980516af484d0ab208Adam Moore
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith _should: {
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith ignore: {
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith // Trac ticket noted as value
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith "test originalRetVal not overwritten by nested call": 2530030
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith }
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith },
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith
3bdb28d93e972f3835ffeac692951782bf9751d1Adam Moore test_alter_return: function() {
4f2de35716c5df46152747980516af484d0ab208Adam Moore
3bdb28d93e972f3835ffeac692951782bf9751d1Adam Moore var et = new Y.EventTarget(), count = 0;
4f2de35716c5df46152747980516af484d0ab208Adam Moore
3bdb28d93e972f3835ffeac692951782bf9751d1Adam Moore et.after(function() {
3bdb28d93e972f3835ffeac692951782bf9751d1Adam Moore count++;
3bdb28d93e972f3835ffeac692951782bf9751d1Adam Moore Y.Assert.isTrue(Y.Do.originalRetVal);
3bdb28d93e972f3835ffeac692951782bf9751d1Adam Moore Y.Assert.isTrue(Y.Do.currentRetVal);
3bdb28d93e972f3835ffeac692951782bf9751d1Adam Moore return new Y.Do.AlterReturn("altered return", "altered");
3bdb28d93e972f3835ffeac692951782bf9751d1Adam Moore }, et, 'fire');
4f2de35716c5df46152747980516af484d0ab208Adam Moore
3bdb28d93e972f3835ffeac692951782bf9751d1Adam Moore et.after(function() {
3bdb28d93e972f3835ffeac692951782bf9751d1Adam Moore count++;
3bdb28d93e972f3835ffeac692951782bf9751d1Adam Moore Y.Assert.isTrue(Y.Do.originalRetVal);
3bdb28d93e972f3835ffeac692951782bf9751d1Adam Moore Y.Assert.areEqual("altered", Y.Do.currentRetVal);
3bdb28d93e972f3835ffeac692951782bf9751d1Adam Moore }, et, 'fire');
4f2de35716c5df46152747980516af484d0ab208Adam Moore
4f2de35716c5df46152747980516af484d0ab208Adam Moore
3bdb28d93e972f3835ffeac692951782bf9751d1Adam Moore et.fire('yay');
3bdb28d93e972f3835ffeac692951782bf9751d1Adam Moore Y.Assert.areEqual(2, count);
4f2de35716c5df46152747980516af484d0ab208Adam Moore
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith },
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith "test originalRetVal not overwritten by nested call": function () {
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith var obj = {
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith a: function () {
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith this.b();
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith return 'A';
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith },
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith b: function () {
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith return 'B';
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith }
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith }
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith Y.Do.after(function () {
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith return Y.Do.originalRetVal.toLowerCase();
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith }, obj, 'a');
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith Y.Do.after(function () {
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith // It doesn't matter what happens here, but for example, we
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith // don't interfere with the return value
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith }, obj, 'b');
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith
8c7d944336fb004c414738d67f0a5d0520a08ef9Luke Smith Y.Assert.areSame('a', obj.a());
4f2de35716c5df46152747980516af484d0ab208Adam Moore }
4f2de35716c5df46152747980516af484d0ab208Adam Moore });
3bdb28d93e972f3835ffeac692951782bf9751d1Adam Moore
4f2de35716c5df46152747980516af484d0ab208Adam Moore
9a76bc095233b0cb0be3a913f5913bfc72c38b6cSatyen Desai Y.Test.Runner.setName("AOP");
4f2de35716c5df46152747980516af484d0ab208Adam Moore Y.Test.Runner.add(testEventTarget);
4f2de35716c5df46152747980516af484d0ab208Adam Moore Y.Test.Runner.run();
4f2de35716c5df46152747980516af484d0ab208Adam Moore });
4f2de35716c5df46152747980516af484d0ab208Adam Moore})();
4f2de35716c5df46152747980516af484d0ab208Adam Moore</script>
4f2de35716c5df46152747980516af484d0ab208Adam Moore</body>
4f2de35716c5df46152747980516af484d0ab208Adam Moore</html>