base-core.html revision 4cd36cd90f40231cd88acf6c0ab9d2fa89041bf0
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
7e5b2100ea65658a7ec3795919b4ecd29a6f118aMark Andrews<html>
04428429c4e689333e3ef8d19a2debeb20d4d15dMark Andrews<head>
eae67738cba5ca069e9d1d4e7b836a2f7b00a374Mark Andrews <title>Base Core Tests</title>
eae67738cba5ca069e9d1d4e7b836a2f7b00a374Mark Andrews
2a40fdc2d34adb8a5c72a748449699666032d461Mark Andrews <script type="text/javascript" src="/build/yui/yui.js"></script>
46e873c835bf7d9ec3e1097e0aceb8db5b1ae93aMark Andrews
a3b428812703d22a605a9f882e71ed65f0ffdc65Mark Andrews <style type="text/css">
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews #console .yui3-console-entry {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington padding:2px;
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington margin:0px;
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews min-height:0;
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington }
d56e188030368b835122d759ebbf8d9613c166f4Mark Andrews
c718d15a9a95054ee3c71540c02335426071fc6dMark Andrews #console .yui3-console-entry-fail .yui3-console-entry-cat {
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews background-color:red;
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews }
c718d15a9a95054ee3c71540c02335426071fc6dMark Andrews
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews #console .yui3-console-entry-pass .yui3-console-entry-cat {
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews background-color:green;
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews }
c718d15a9a95054ee3c71540c02335426071fc6dMark Andrews
c718d15a9a95054ee3c71540c02335426071fc6dMark Andrews #console .yui3-console-entry-perf .yui3-console-entry-cat {
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews background-color:blue;
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews }
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews
b6617c5adad7f12e5fcde1e873f7b982d247fe05Mark Andrews #console {
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson position:static;
b6617c5adad7f12e5fcde1e873f7b982d247fe05Mark Andrews }
b6617c5adad7f12e5fcde1e873f7b982d247fe05Mark Andrews
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson html, body {
b6617c5adad7f12e5fcde1e873f7b982d247fe05Mark Andrews height:100%;
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington }
a3b428812703d22a605a9f882e71ed65f0ffdc65Mark Andrews </style>
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews
c718d15a9a95054ee3c71540c02335426071fc6dMark Andrews <script type="text/javascript">
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews YUI({
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews useBrowserConsole:false,
c718d15a9a95054ee3c71540c02335426071fc6dMark Andrews filter: (window.location.search.match(/[?&]filter=([^&]+)/) || [])[1] || 'min'
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews }).use("dump", "base-core", "console", "test", function(Y) {
c069a20053d41ae299eb9457e50ea44ae9f73ed2Mark Andrews
ed178efa9ab8f813538fce4ff603b81ded9f1799Mark Andrews function areObjectsReallyEqual(o1, o2) {
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews Y.ObjectAssert.areEqual(o1, o2);
605bd686e437162b5ab65ac4e7c1be0bba1886ddMark Andrews Y.ObjectAssert.areEqual(o2, o1);
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews }
3f6174bffe227be44e241a29d186add00c032ff6Mark Andrews
1eb1e1e838d2ea00b166c918bf50764a95826be8Mark Andrews function Test(cfg, lazy, silentInit) {
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews this._lazyAddAttrs = lazy;
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews this._silentInit = silentInit;
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson Test.superclass.constructor.apply(this, arguments);
992616aaf75643a0c9f84826f0a1ed5a27e84328Mark Andrews };
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews Test.NAME = 'test';
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson Test.ATTRS = {
992616aaf75643a0c9f84826f0a1ed5a27e84328Mark Andrews
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews attr1: {
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson value: "Foo",
992616aaf75643a0c9f84826f0a1ed5a27e84328Mark Andrews setter: function(n) {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington return n;
26a77b80bb7ee886c6fa704348d5e80a011d8811Mark Andrews }
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews },
7e5b2100ea65658a7ec3795919b4ecd29a6f118aMark Andrews
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews attr2: {
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews value: "Bar",
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews setter: function(n) {
62ee2c9f460d2e2e45dcf1abc8b4b4a4a43f5618Mark Andrews return n;
e086341ea57e618a60c9f166b95daee1fab71b3bMark Andrews }
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews },
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews attr3: {
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews value: true
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews },
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson attr4: {
992616aaf75643a0c9f84826f0a1ed5a27e84328Mark Andrews value: 3
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews },
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews attr5: {
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson value: 3
992616aaf75643a0c9f84826f0a1ed5a27e84328Mark Andrews },
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
45eca3a5d46ed15aee14d81f6cb6c9fb6f365344Mark Andrews attr6: {
45eca3a5d46ed15aee14d81f6cb6c9fb6f365344Mark Andrews value: false,
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews setter: function(lock) {
46e873c835bf7d9ec3e1097e0aceb8db5b1ae93aMark Andrews return lock;
46e873c835bf7d9ec3e1097e0aceb8db5b1ae93aMark Andrews }
dd9ad704c3800e3ab07ede8595871eac79984871Mark Andrews },
605bd686e437162b5ab65ac4e7c1be0bba1886ddMark Andrews
45eca3a5d46ed15aee14d81f6cb6c9fb6f365344Mark Andrews attr7: {
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews value: false
ab81f57ca0c3addfec3df3babdcea9644757cf23Mark Andrews },
605bd686e437162b5ab65ac4e7c1be0bba1886ddMark Andrews
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrews attr8: {
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrews value: true
413988c8166976498250c0ebb2e3a645d0366bd3Mark Andrews },
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews attr9: {
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrews value: true
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews },
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrews attr10: {
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews value: false
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews },
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews
642e0716c8b4ab82ebc8e60f94c9e897ee89f19aMark Andrews attr11: {
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews value: true
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrews },
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrews
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrews attr12: {
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrews value: false
45eca3a5d46ed15aee14d81f6cb6c9fb6f365344Mark Andrews },
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews attr13: {
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrews value: false
d3a3e690ab1f87fa02b3fa77be5ddea5c1fe0cd4Mark Andrews },
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews
d56e188030368b835122d759ebbf8d9613c166f4Mark Andrews attr14: {
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrews value: false,
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews setter: function(val) {
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews return val;
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews }
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrews },
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews
b7aab05edae933e169d5f83c653935b17c7f0a8bMark Andrews attr15: {
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews value: null,
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews setter: function(val) {
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrews return false;
ed178efa9ab8f813538fce4ff603b81ded9f1799Mark Andrews }
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews },
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews
46e873c835bf7d9ec3e1097e0aceb8db5b1ae93aMark Andrews attr16: {
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews value: ['default'],
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews
46e873c835bf7d9ec3e1097e0aceb8db5b1ae93aMark Andrews getter: function() {
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews return false;
dd9ad704c3800e3ab07ede8595871eac79984871Mark Andrews },
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews
0d3490f93bb980fde704055e74c1b508987a5fe4Mark Andrews setter: function(g) {
46e873c835bf7d9ec3e1097e0aceb8db5b1ae93aMark Andrews return g;
46e873c835bf7d9ec3e1097e0aceb8db5b1ae93aMark Andrews }
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrews },
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrews attr17: {
605bd686e437162b5ab65ac4e7c1be0bba1886ddMark Andrews value: null,
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington setter: function(g) {
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews return g;
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews }
62ee2c9f460d2e2e45dcf1abc8b4b4a4a43f5618Mark Andrews },
1eb1e1e838d2ea00b166c918bf50764a95826be8Mark Andrews attr18: {
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews writeOnce: true,
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews value: null
ea206aebcafe1ed5d470dd99daab9a1cedc81c7cMark Andrews },
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson attr19: {
992616aaf75643a0c9f84826f0a1ed5a27e84328Mark Andrews writeOnce: true,
45eca3a5d46ed15aee14d81f6cb6c9fb6f365344Mark Andrews value: null
ca12f7f4cf72e2368ee946f3eb4915ab73576cdcMark Andrews },
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews attr20: {
1eb1e1e838d2ea00b166c918bf50764a95826be8Mark Andrews writeOnce: true,
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington value: null
0d3490f93bb980fde704055e74c1b508987a5fe4Mark Andrews }
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews };
c718d15a9a95054ee3c71540c02335426071fc6dMark Andrews
605bd686e437162b5ab65ac4e7c1be0bba1886ddMark Andrews Y.extend(Test, Y.BaseCore, {
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews foo: function() {}
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews });
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson
992616aaf75643a0c9f84826f0a1ed5a27e84328Mark Andrews function AttrHost(config) {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington AttrHost.superclass.constructor.apply(this, arguments);
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews }
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews AttrHost.NAME = "attrHost";
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews AttrHost.ATTRS = {
ed178efa9ab8f813538fce4ff603b81ded9f1799Mark Andrews A: {
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews value:"AVal",
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews validator: Y.Lang.isString,
6b5c57e52ac8c3e0af1547be3140ebbfb41a85b3Mark Andrews broadcast:1
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews },
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews B: {
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews validator: function(value) {
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews return (value === undefined || Y.Lang.isString(value) || Y.Lang.isNumber(value));
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews },
e076d0c88be69de7c190ab924d095e69d2e11f7aAndreas Gustafsson broadcast:2
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews },
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews C: {
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews writeOnce: true
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews },
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson
992616aaf75643a0c9f84826f0a1ed5a27e84328Mark Andrews D: {
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews value:"DVal",
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews readOnly: true
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson },
992616aaf75643a0c9f84826f0a1ed5a27e84328Mark Andrews
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews E: {
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews value:"EVal",
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington writeOnce: true
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington },
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
282e38d96feb488fddbbc0b0409491094786977fMark Andrews DE: {
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews valueFn: function() {
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews return this.get("D") + this.get("E");
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews }
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews },
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews complex: {
abf32d940f8f674b3971ef41b306a01b3da8d2cfMark Andrews value: {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington X : {
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews A: 1
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington },
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y : {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington A: 2
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington },
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Z : {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington A: 3
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington }
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington }
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington },
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington initOnly : {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington writeOnce:"initOnly"
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington }
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington };
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.extend(AttrHost, Y.BaseCore);
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington // -----
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington function ExtendedAttrHost(config) {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington AttrHost.superclass.constructor.apply(this, arguments);
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington }
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington ExtendedAttrHost.NAME = "extendedAttrHost";
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington ExtendedAttrHost.ATTRS = {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington A: {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington value:"ExtAVal"
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington },
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington B: {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington value:"ExtBVal",
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington validator: function(value) {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington return ((value == undefined) || Y.Lang.isString(value));
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington }
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington },
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington D: {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington value:"ExtDVal",
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington setter: function(val) {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington return (Y.Lang.isString(val)) ? val.toUpperCase() : val;
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington }
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington },
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington E: {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington value:"ExtEVal",
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington getter: function(val) {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington return (Y.Lang.isString(val)) ? val.toLowerCase() : val;
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington }
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington },
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
bf54ac86eeddce16b67c525d38d1096cc956f478Mark Andrews F: {
eaccf5e805405de257b5a4840256c580fefe00e3Mark Andrews value:"ExtFVal",
0d3490f93bb980fde704055e74c1b508987a5fe4Mark Andrews setter: function(val) {
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington return (Y.Lang.isString(val)) ? val : Y.AttributeCore.INVALID_VALUE;
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington }
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington },
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington "complex.X.A" : {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington value: 1111
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington },
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington "complex.Y.A" : {
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington value: 2222,
0d3490f93bb980fde704055e74c1b508987a5fe4Mark Andrews setter: function(val) { // Should be ignored. Can't set setters for complex sub vals
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington return val + 10000;
bf54ac86eeddce16b67c525d38d1096cc956f478Mark Andrews }
0d3490f93bb980fde704055e74c1b508987a5fe4Mark Andrews },
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington G : {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington valueFn:function(val) {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington // Referring to H before it's set up
bf54ac86eeddce16b67c525d38d1096cc956f478Mark Andrews return this.get("H") + 10;
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews }
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews },
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews H: {
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews value:5,
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews getter: function(val) {
68baa2d193672c482b7ea07ece349e7b1ceb96e6Mark Andrews return val*5;
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews }
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews },
67a0e14fa9c3c160116f0671f4ac5874306b1150Mark Andrews
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews I : {
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews value:{
a9789e288ee11ae4315e27235c33bae5405bd7c4Mark Andrews a: 5
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews },
eaccf5e805405de257b5a4840256c580fefe00e3Mark Andrews getter: "_getI",
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews setter: "_setI",
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington validator: "_validateI"
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews },
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington PassThrough : {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington value: "passthrough",
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington getter: function(val) {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington return this._passthrough;
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington },
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington setter: function(val) {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington this._passthrough = val;
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington }
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington },
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Z : {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington value: "z",
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington getter: function(val) {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington return val.toUpperCase();
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington }
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington }
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington };
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.extend(ExtendedAttrHost, AttrHost, {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington _validateI : function(val, name) {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington if (name.indexOf(".") == -1) {
bf54ac86eeddce16b67c525d38d1096cc956f478Mark Andrews Y.Assert.areEqual("I", name);
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews } else {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual("I.a", name);
01bf5871f8861eb805dd8ca79bdb9b0b9e4e6a5eMark Andrews }
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews return true;
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews },
eaccf5e805405de257b5a4840256c580fefe00e3Mark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews _getI : function(val, name) {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington if (name.indexOf(".") == -1) {
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews Y.Assert.areEqual("I", name);
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington } else {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual("I.a", name);
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington }
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington return val;
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington },
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington _setI : function(val, name) {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington if (name.indexOf(".") == -1) {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual("I", name);
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington } else {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual("I.a", name);
b7aab05edae933e169d5f83c653935b17c7f0a8bMark Andrews }
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington }
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington });
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington var basicTemplate = {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington name: "Core Base Class Tests",
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington createHost : function(cfg) {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington return new AttrHost(cfg);
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington },
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
b7aab05edae933e169d5f83c653935b17c7f0a8bMark Andrews setUp : function() {},
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington tearDown : function() {},
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington testDefault : function() {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington var h = this.createHost();
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual("AVal", h.get("A"));
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual(undefined, h.get("B"));
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual(undefined, h.get("C"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual("DVal", h.get("D")); // Readonly
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual("EVal", h.get("E")); // Write once, but not twice
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews Y.Assert.areEqual("DValEVal", h.get("DE"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews },
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews testConstructor : function() {
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews var h = this.createHost({A:"MyAVal", B:"MyBVal", C:"MyCVal", D:"MyDVal", E:"MyEVal", DE:"MyDEVal"});
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews h.set("C", "MyNewCVal");
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews h.set("D", "MyNewDVal");
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews h.set("E", "MyNewEVal");
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual("MyAVal", h.get("A"));
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews Y.Assert.areEqual("MyBVal", h.get("B"));
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual("MyCVal", h.get("C")); // Write Once, set in constructor
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual("DVal", h.get("D")); // Read Only
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual("MyEVal", h.get("E")); // Write Once, set in constructor
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual("MyDEVal", h.get("DE"));
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington },
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington testSet : function() {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington var h = this.createHost();
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington h.set("A", "MyNewAVal");
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington h.set("B", "MyNewBVal");
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington h.set("C", "MyNewCVal");
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington h.set("D", "MyNewDVal");
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington h.set("E", "MyNewEVal");
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington h.set("DE", "MyNewDEVal");
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual("MyNewAVal", h.get("A"));
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual("MyNewBVal", h.get("B"));
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual("MyNewCVal", h.get("C")); // Write once, set on first set.
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual("DVal", h.get("D")); // Read Only
bf54ac86eeddce16b67c525d38d1096cc956f478Mark Andrews Y.Assert.areEqual("EVal", h.get("E")); // Write Once
eaccf5e805405de257b5a4840256c580fefe00e3Mark Andrews
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual("MyNewDEVal", h.get("DE"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews },
abf32d940f8f674b3971ef41b306a01b3da8d2cfMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews testWriteOncePostInit : function() {
eaccf5e805405de257b5a4840256c580fefe00e3Mark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews var h = this.createHost();
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews h.set("E", "MyNewEVal");
eaccf5e805405de257b5a4840256c580fefe00e3Mark Andrews h.set("C", "MyNewCVal");
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual("MyNewCVal", h.get("C")); // Write Once, default value
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews Y.Assert.areEqual("EVal", h.get("E")); // Write Once, default value
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews },
eaccf5e805405de257b5a4840256c580fefe00e3Mark Andrews
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington testWriteOnce : function() {
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews var h = this.createHost({E:"MyEVal"});
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews h.set("E", "MyNewEVal");
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington Y.Assert.areEqual("MyEVal", h.get("E")); // Write Once, on init
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington },
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews testWriteOnceInitOnly : function() {
83a810eba60ae87341a2d177ff60d834e26d7a90Mark Andrews var h = this.createHost({ initOnly: "initOnlyVal"});
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington h.set("initOnly", "NewInitOnlyVal");
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual("initOnlyVal", h.get("initOnly"));
2bef3713093349af52ba61eaab07adf3207da873Mark Andrews },
2bef3713093349af52ba61eaab07adf3207da873Mark Andrews
2bef3713093349af52ba61eaab07adf3207da873Mark Andrews testWriteOnceInitOnlyNotProvided : function() {
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews var h1 = this.createHost();
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews h1.set("initOnly", "InitOnlyVal");
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews Y.Assert.areEqual(undefined, h1.get("initOnly"));
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews },
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews
83a810eba60ae87341a2d177ff60d834e26d7a90Mark Andrews testAdHocGetSet : function() {
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews var h = this.createHost();
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews Y.Assert.areEqual(undefined, h.get("AdHoc"));
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews h.set("AdHoc", "TestAdHoc");
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews Y.Assert.areEqual("TestAdHoc", h.get("AdHoc"));
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews h.addAttr("AdHoc", {
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews setter: function(val) {
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews return val.toUpperCase();
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews }
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews });
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews h.set("AdHoc", "TestAdHocConfigured");
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews Y.Assert.areEqual("TESTADHOCCONFIGURED", h.get("AdHoc"));
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington },
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews testAdHocConstructorEnabled : function() {
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews AttrHost.prototype._allowAdHocAttrs = true;
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews var h = this.createHost({
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews A: "MyAVal",
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington foo: "foo",
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews bar: "bar",
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews plugins : ["not"]
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews });
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews AttrHost.prototype._allowAdHocAttrs = false;
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews // Only add AdHoc Attrs
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews Y.Assert.areEqual("foo", h.get("foo"));
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews Y.Assert.areEqual("bar", h.get("bar"));
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews // Configured Attrs
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews Y.Assert.areEqual("DVal", h.get("D"));
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews Y.Assert.areEqual("MyAVal", h.get("A"));
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews // Not _NON_ATTRS_CFG
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews Y.Assert.isUndefined(h.get("plugins"));
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews },
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews testAdHocConstructorDisabled : function() {
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews
6fac7ff1f9ec9c3873d3b55c5079fa79aba1f146Mark Andrews var h = this.createHost({
3a9a66b32adf379e680d18e92428058910880119Mark Andrews A: "MyAVal",
48b492d73ae5328c5efef4b9e0f22063e0ab058aMark Andrews foo: "foo",
48b492d73ae5328c5efef4b9e0f22063e0ab058aMark Andrews bar: "bar",
48b492d73ae5328c5efef4b9e0f22063e0ab058aMark Andrews plugins : ["not"]
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews });
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews // Only add AdHoc Attrs
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual(undefined, h.get("foo"));
3a9a66b32adf379e680d18e92428058910880119Mark Andrews Y.Assert.areEqual(undefined, h.get("bar"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
7e5b2100ea65658a7ec3795919b4ecd29a6f118aMark Andrews // Configured attributes
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual("DVal", h.get("D"));
ca9a8f6d0b0f2a400a96f868193471510364336fMark Andrews Y.Assert.areEqual("MyAVal", h.get("A"));
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews // Not _NON_ATTRS_CFG
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.isUndefined(h.get("plugins"));
3a9a66b32adf379e680d18e92428058910880119Mark Andrews },
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews
2da2220fe7af2c45724b50b0187523b1fab0cf08Rob Austein testMassSetGet : function() {
7e5b2100ea65658a7ec3795919b4ecd29a6f118aMark Andrews var h = this.createHost();
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews h.setAttrs({
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews "A" : "MyNewAVal",
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews "B": "MyNewBVal",
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews "C": "MyNewCVal",
3a9a66b32adf379e680d18e92428058910880119Mark Andrews "D": "MyNewDVal",
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews "E": "MyNewEVal",
7e5b2100ea65658a7ec3795919b4ecd29a6f118aMark Andrews "DE": "MyNewDEVal",
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington complex: "MyNewComplexVal"
3a9a66b32adf379e680d18e92428058910880119Mark Andrews });
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
3a9a66b32adf379e680d18e92428058910880119Mark Andrews var expectedVals = {
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews A: "MyNewAVal",
3a9a66b32adf379e680d18e92428058910880119Mark Andrews B: "MyNewBVal",
7e5b2100ea65658a7ec3795919b4ecd29a6f118aMark Andrews C: "MyNewCVal",
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews D: "DVal",
abf32d940f8f674b3971ef41b306a01b3da8d2cfMark Andrews E: "EVal",
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews DE: "MyNewDEVal",
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington complex: "MyNewComplexVal",
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington initialized: true,
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews destroyed: false
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews };
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual(expectedVals.A, h.get("A"));
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews Y.Assert.areEqual(expectedVals.B, h.get("B"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual(expectedVals.C, h.get("C")); // Write once, set on first set.
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual(expectedVals.D, h.get("D")); // Read Only
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews Y.Assert.areEqual(expectedVals.E, h.get("E")); // Write Once
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual(expectedVals.DE, h.get("DE"));
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews areObjectsReallyEqual(expectedVals, h.getAttrs());
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews },
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews testModifiedAttrs : function() {
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews var h = this.createHost();
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington h.setAttrs({
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington A: "MyNewAVal",
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews C: "MyNewCVal",
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews D: "MyNewDVal"
83a810eba60ae87341a2d177ff60d834e26d7a90Mark Andrews });
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews var expectedVals = {
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews A: "MyNewAVal",
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews initialized:true
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews };
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington areObjectsReallyEqual(expectedVals, h.getAttrs(true));
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews },
7a6ad11e0185a73984410f3252f3c49c3a301dbdBrian Wellington
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews testValidation : function() {
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews var h = this.createHost();
7a6ad11e0185a73984410f3252f3c49c3a301dbdBrian Wellington
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews h.set("A", "MyAVal");
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual("MyAVal", h.get("A"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews h.set("A", 100);
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual("MyAVal", h.get("A")); // Validation should prevent the attribute from being set
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington h.set("B", "two");
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual("two", h.get("B"));
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington h.set("B", 2);
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual(2, h.get("B"));
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews h.set("B", false);
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual(2, h.get("B")); // Validation should prevent the attribute from being set
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington },
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington testPrivateSet : function() {
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews var h = this.createHost();
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews h.set("D", "MyNewDVal");
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington h.set("E", "MyNewEVal");
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual("DVal", h.get("D"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual("EVal", h.get("E"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews h._set("D", "TryDAgain");
3a9a66b32adf379e680d18e92428058910880119Mark Andrews h._set("E", "TryEAgain");
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual("TryDAgain", h.get("D"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual("TryEAgain", h.get("E"));
e076d0c88be69de7c190ab924d095e69d2e11f7aAndreas Gustafsson },
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
e076d0c88be69de7c190ab924d095e69d2e11f7aAndreas Gustafsson testComplexDefault : function() {
e076d0c88be69de7c190ab924d095e69d2e11f7aAndreas Gustafsson var h = this.createHost();
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews var o = {
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews X : {
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews A: 1
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews },
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y : {
01bf5871f8861eb805dd8ca79bdb9b0b9e4e6a5eMark Andrews A: 2
c718d15a9a95054ee3c71540c02335426071fc6dMark Andrews },
01bf5871f8861eb805dd8ca79bdb9b0b9e4e6a5eMark Andrews Z : {
01bf5871f8861eb805dd8ca79bdb9b0b9e4e6a5eMark Andrews A: 3
01bf5871f8861eb805dd8ca79bdb9b0b9e4e6a5eMark Andrews }
c718d15a9a95054ee3c71540c02335426071fc6dMark Andrews };
01bf5871f8861eb805dd8ca79bdb9b0b9e4e6a5eMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual(1, h.get("complex.X.A"));
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual(2, h.get("complex.Y.A"));
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews Y.Assert.areEqual(3, h.get("complex.Z.A"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington areObjectsReallyEqual({A:1}, h.get("complex.X"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews areObjectsReallyEqual({A:2}, h.get("complex.Y"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews areObjectsReallyEqual({A:3}, h.get("complex.Z"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews var val = h.get("complex");
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.each(val, function(v, k) {
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews areObjectsReallyEqual(v, o[k]);
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews });
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews },
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews testComplexSet : function() {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington var h = this.createHost();
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington h.set("complex.X.A", 111);
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual(111, h.get("complex.X.A"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
49ef9cb60f37eb190986b750db57a194c8f7321cMark Andrews h.set("complex.X.B", 112);
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual(112, h.get("complex.X.B"));
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews areObjectsReallyEqual({A:111, B:112}, h.get("complex.X"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews h.set("complex.W.B", 113);
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual(undefined, h.get("complex.W"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual(undefined, h.get("complex.W.B"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington h.set("complex.Y", {B:222});
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews Y.Assert.areEqual(222, h.get("complex.Y.B"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual(undefined, h.get("complex.Y.A"));
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington },
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews testInitialValidation: function() {
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews var h = this.createHost({A:5});
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual("AVal", h.get("A")); // Numerical value validation failure should revert to default value
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews },
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews testProtect : function() {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington var h = this.createHost();
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews var q = h._protectAttrs(AttrHost.ATTRS);
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areNotSame(AttrHost.ATTRS, q);
53aed64e0f8553762fc0c380ee41cb42f514c7d5Brian Wellington Y.Assert.areEqual(Y.dump(AttrHost.ATTRS), Y.dump(q));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
53aed64e0f8553762fc0c380ee41cb42f514c7d5Brian Wellington q.A.newprop = "new prop value";
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews q.A.value = "modified value";
53aed64e0f8553762fc0c380ee41cb42f514c7d5Brian Wellington
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews Y.Assert.areNotEqual(Y.dump(AttrHost.ATTRS), Y.dump(q));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews }
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews };
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews var extendedTemplate = {
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews name: "Core Extended Class Tests",
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews createHost : function(cfg) {
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews return new ExtendedAttrHost(cfg);
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews },
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews setUp : function() {},
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews tearDown : function() {},
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews testDefault : function() {
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews var h = this.createHost();
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews Y.Assert.areEqual("ExtAVal", h.get("A"));
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews Y.Assert.areEqual("ExtBVal", h.get("B"));
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews Y.Assert.areEqual(undefined, h.get("C"));
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews Y.Assert.areEqual("EXTDVAL", h.get("D"));
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews Y.Assert.areEqual("exteval", h.get("E"));
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews Y.Assert.areEqual("ExtFVal", h.get("F"));
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews Y.Assert.areEqual("EXTDVALexteval", h.get("DE"));
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews },
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews testConstructor : function() {
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews var h = this.createHost({A:"MyAVal", B:"MyBVal", C:"MyCVal", D:"MyDVal", E:"MyEVal", F:"MyFVal"});
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews h.set("C", "MyNewCVal");
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews h.set("D", "MyNewDVal");
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews h.set("E", "MyNewEVal");
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews Y.Assert.areEqual("MyAVal", h.get("A"));
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews Y.Assert.areEqual("MyBVal", h.get("B"));
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews Y.Assert.areEqual("MyCVal", h.get("C"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual("EXTDVAL", h.get("D"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual("myeval", h.get("E"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual("MyFVal", h.get("F"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual("EXTDVALmyeval", h.get("DE"));
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington },
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews testSet : function() {
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews var h = this.createHost();
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews h.set("A", "MyNewAVal");
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews h.set("B", "MyNewBVal");
7e1a8f402e3881388db37152f71c698cb1f1c426Mark Andrews h.set("C", "MyNewCVal");
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews h.set("D", "MyNewDVal");
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews h.set("E", "MyNewEVal");
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington h.set("F", "MyNewFVal");
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews h.set("DE", "MyNewDEVal");
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews Y.Assert.areEqual("MyNewAVal", h.get("A"));
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual("MyNewBVal", h.get("B"));
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews Y.Assert.areEqual("MyNewCVal", h.get("C"));
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual("EXTDVAL", h.get("D"));
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews Y.Assert.areEqual("exteval", h.get("E"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual("MyNewFVal", h.get("F"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual("MyNewDEVal", h.get("DE"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews },
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews testAdHocGetSet : function() {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington var h = this.createHost();
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual(undefined, h.get("AdHoc"));
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews h.set("AdHoc", "TestAdHoc");
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual("TestAdHoc", h.get("AdHoc"));
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington },
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews testMassSetGet : function() {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington var h = this.createHost();
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews h.setAttrs({
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews "A" : "MyNewAVal",
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews "B": "MyNewBVal",
73eb75dc212911e4da58a3ce0a4672d3910193ebBrian Wellington "C": "MyNewCVal",
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews "D": "MyNewDVal",
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews "E": "MyNewEVal",
bf54ac86eeddce16b67c525d38d1096cc956f478Mark Andrews "F": "MyNewFVal",
bf54ac86eeddce16b67c525d38d1096cc956f478Mark Andrews "DE": "MyNewDEVal",
73eb75dc212911e4da58a3ce0a4672d3910193ebBrian Wellington complex: "MyNewComplexVal",
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews "I" : "MyNewIVal",
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews "PassThrough" : "MyPassThrough",
7e5b2100ea65658a7ec3795919b4ecd29a6f118aMark Andrews "Z" : "MyZ"
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews });
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews var expectedVals = {
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews A: "MyNewAVal",
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews B: "MyNewBVal",
605bd686e437162b5ab65ac4e7c1be0bba1886ddMark Andrews C: "MyNewCVal",
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews D: "EXTDVAL",
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington E: "exteval",
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews F: "MyNewFVal",
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews DE: "MyNewDEVal",
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews complex: "MyNewComplexVal",
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews G: 35,
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews H: 25,
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews I: "MyNewIVal",
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews PassThrough: "MyPassThrough",
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Z: "MYZ",
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews initialized:true,
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews destroyed:false
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews };
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual(expectedVals.A, h.get("A"));
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual(expectedVals.B, h.get("B"));
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual(expectedVals.C, h.get("C")); // Write once, set on first set.
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual(expectedVals.D, h.get("D")); // Read Only
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual(expectedVals.E, h.get("E")); // Write Once
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews Y.Assert.areEqual(expectedVals.F, h.get("F"));
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual(expectedVals.DE, h.get("DE"));
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington areObjectsReallyEqual(expectedVals, h.getAttrs());
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews },
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews testModifiedAttrs : function() {
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews var h = this.createHost();
8227257b1c0224a7991e04bb79dc5059d5062dfbAndreas Gustafsson
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews h.setAttrs({
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews A: "MyNewAVal",
8227257b1c0224a7991e04bb79dc5059d5062dfbAndreas Gustafsson C: "MyNewCVal",
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews D: "MyNewDVal",
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews F: "MyNewFVal"
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews });
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews
8227257b1c0224a7991e04bb79dc5059d5062dfbAndreas Gustafsson var expectedVals = {
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews A: "MyNewAVal",
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews F: "MyNewFVal",
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington initialized:true
9cae013ec71ac94303038a9e82b71e5d67cb13c5Mark Andrews };
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews areObjectsReallyEqual(expectedVals, h.getAttrs(true));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews },
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews testValidation : function() {
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews var h = this.createHost();
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews h.set("A", "MyAVal");
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews Y.Assert.areEqual("MyAVal", h.get("A"));
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews h.set("A", 100);
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews Y.Assert.areEqual("MyAVal", h.get("A")); // Validation should prevent the attribute from being set
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews h.set("B", "two");
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual("two", h.get("B"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
99f467f016d9354c7548b7d24b65ac986b118a52Andreas Gustafsson h.set("B", 2);
99f467f016d9354c7548b7d24b65ac986b118a52Andreas Gustafsson Y.Assert.areEqual("two", h.get("B")); // Validation should prevent the attribute from being set
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews h.set("B", true);
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual("two", h.get("B")); // Validation should prevent the attribute from being set
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
83a810eba60ae87341a2d177ff60d834e26d7a90Mark Andrews h.set("F", "MyNewFVal");
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual("MyNewFVal", h.get("F"));
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews h.set("F", 3);
b0804b92737de82fc15fb44e35f70797b4ee166fMark Andrews Y.Assert.areEqual("MyNewFVal", h.get("F")); // Validation should prevent the attribute from being set
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews },
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews testPrivateSet : function() {
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews var h = this.createHost();
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews h.set("D", "MyNewDVal");
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington h.set("E", "MyNewEVal");
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews Y.Assert.areEqual("EXTDVAL", h.get("D"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual("exteval", h.get("E"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews h._set("D", "TryDAgain");
832cebe0cbc843785897f1c124ae54958028c4e7Mark Andrews h._set("E", "TryEAgain");
832cebe0cbc843785897f1c124ae54958028c4e7Mark Andrews
832cebe0cbc843785897f1c124ae54958028c4e7Mark Andrews Y.Assert.areEqual("TRYDAGAIN", h.get("D"));
832cebe0cbc843785897f1c124ae54958028c4e7Mark Andrews Y.Assert.areEqual("tryeagain", h.get("E"));
832cebe0cbc843785897f1c124ae54958028c4e7Mark Andrews },
832cebe0cbc843785897f1c124ae54958028c4e7Mark Andrews
832cebe0cbc843785897f1c124ae54958028c4e7Mark Andrews testComplexDefault : function() {
832cebe0cbc843785897f1c124ae54958028c4e7Mark Andrews var h = this.createHost();
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews var o = {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington X : {
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews A: 1111
aa85e0c64e3e659f11d10e40eafdfe122ff684afMark Andrews },
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y : {
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington A: 2222
75216e007570b8ea36b3ac9cca096bf70c0ca6f6Mark Andrews },
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Z : {
eaccf5e805405de257b5a4840256c580fefe00e3Mark Andrews A: 3
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington }
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington };
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington Y.Assert.areEqual(1111, h.get("complex.X.A"));
eaccf5e805405de257b5a4840256c580fefe00e3Mark Andrews Y.Assert.areEqual(2222, h.get("complex.Y.A"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual(3, h.get("complex.Z.A"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews areObjectsReallyEqual({A:1111}, h.get("complex.X"));
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson areObjectsReallyEqual({A:2222}, h.get("complex.Y"));
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson areObjectsReallyEqual({A:3}, h.get("complex.Z"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
992616aaf75643a0c9f84826f0a1ed5a27e84328Mark Andrews var val = h.get("complex");
d912d1139efa8410785f0fc88dfb7dc7fbaae6deMark Andrews
113aa279d1f5dbe77dfaa5a7f35623d49c85b77fMark Andrews Y.each(val, function(v, k) {
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews areObjectsReallyEqual(v, o[k]);
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews });
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews },
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson
3341c8b653577f2f0cb8b72702ea6197035334ffMark Andrews testComplexSet : function() {
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson var h = this.createHost();
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson h.set("complex.X.A", 111);
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson Y.Assert.areEqual(111, h.get("complex.X.A"));
d912d1139efa8410785f0fc88dfb7dc7fbaae6deMark Andrews
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington h.set("complex.X.B", 112);
46e873c835bf7d9ec3e1097e0aceb8db5b1ae93aMark Andrews Y.Assert.areEqual(112, h.get("complex.X.B"));
1b0a1b6d994d736ccb243886c3ba188978003641Mark Andrews areObjectsReallyEqual({A:111, B:112}, h.get("complex.X"));
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
282e38d96feb488fddbbc0b0409491094786977fMark Andrews h.set("complex.W.B", 113);
46e873c835bf7d9ec3e1097e0aceb8db5b1ae93aMark Andrews Y.Assert.areEqual(undefined, h.get("complex.W"));
46e873c835bf7d9ec3e1097e0aceb8db5b1ae93aMark Andrews Y.Assert.areEqual(undefined, h.get("complex.W.B"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews h.set("complex.Y", {B:222});
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual(222, h.get("complex.Y.B"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews Y.Assert.areEqual(undefined, h.get("complex.Y.A"));
068a66979695c77359e7a9181bb3f831c965b21cMark Andrews },
9e3a7b0faf417a10f5f689edf288807b2d5eedc5Brian Wellington
8fca573ba41a1669fff64f234275e956551eb6e5Mark Andrews testOnDemandInit : function() {
8fca573ba41a1669fff64f234275e956551eb6e5Mark Andrews var h = this.createHost();
0ca8fddd5b5e26d8a05f0936fc4b2666a025b9c0Mark Andrews
0ca8fddd5b5e26d8a05f0936fc4b2666a025b9c0Mark Andrews Y.Assert.areEqual(35, h.get("G"));
8fca573ba41a1669fff64f234275e956551eb6e5Mark Andrews Y.Assert.areEqual(25, h.get("H"));
8fca573ba41a1669fff64f234275e956551eb6e5Mark Andrews },
8fca573ba41a1669fff64f234275e956551eb6e5Mark Andrews
0ca8fddd5b5e26d8a05f0936fc4b2666a025b9c0Mark Andrews testGetterSetterValidatorNameArg : function() {
8fca573ba41a1669fff64f234275e956551eb6e5Mark Andrews var h = this.createHost();
8fca573ba41a1669fff64f234275e956551eb6e5Mark Andrews h.set("I.a", 6);
8fca573ba41a1669fff64f234275e956551eb6e5Mark Andrews h.set("I", {a:7, b:8});
8fca573ba41a1669fff64f234275e956551eb6e5Mark Andrews }
8fca573ba41a1669fff64f234275e956551eb6e5Mark Andrews };
8fca573ba41a1669fff64f234275e956551eb6e5Mark Andrews
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews var perfTemplate = {
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews name: "Performance Tests",
d56e188030368b835122d759ebbf8d9613c166f4Mark Andrews
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews testTimeConstruction: function() {
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews var start, end, n = 20, t, i;
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews start = new Date().getTime();
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews for (i = 0; i < n; i++) {
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews t = new Test(null, false);
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews t.getAttrs();
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews t = null;
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews }
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews end = new Date().getTime();
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews Y.log("Construction Time Populated (upfront): " + ((end-start)/n), "perf");
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews start = new Date().getTime();
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews for (i = 0; i < n; i++) {
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews t = new Test();
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews t.getAttrs();
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews t = null;
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews }
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews end = new Date().getTime();
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews Y.log("Construction Time Populated (lazy): " + ((end-start)/n), "perf");
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews
821d2613356f81e5bb5c107288d6d5cf35c2a1e8Mark Andrews start = new Date().getTime();
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews for (i = 0; i < n; i++) {
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews t = new Test(null, false);
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews t = null;
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews }
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews end = new Date().getTime();
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews Y.log("Construction Time (upfront): " + ((end-start)/n), "perf");
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews start = new Date().getTime();
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews for (i = 0; i < n; i++) {
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews t = new Test();
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews t = null;
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews }
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews end = new Date().getTime();
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews var time = (end-start)/n;
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews var expectedTime = (Y.UA.ie && Y.UA.ie <= 6) ? 15 : 10;
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews Y.log("Construction Time (lazy): " + time, "perf");
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews start = new Date().getTime();
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews for (i = 0; i < n; i++) {
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews t = new Test(null, true, true);
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews t = null;
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews }
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews end = new Date().getTime();
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews Y.log("Construction Time (lazy and silent init): " + ((end-start)/n), "perf");
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews Y.Assert.isTrue((time < expectedTime));
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews },
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews testStateForPerfSwitches : function() {
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews // Lazy
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews t = new Test();
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews var x = t.getAttrs();
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews // Non Lazy (Upfront)
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews t = new Test(null, false);
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews var y = t.getAttrs();
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews // Lazy and Silent
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews t = new Test(null, true, true);
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews var z = t.getAttrs();
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews Y.Assert.areEqual(Y.dump(x), Y.dump(y), "Lazy vs. Upfront: attr state is not equal");
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews Y.Assert.areEqual(Y.dump(y), Y.dump(z), "Upfront vs. Lazy and Silent: attr state is not equal");
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews }
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews }
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews var suite = new Y.Test.Suite({name:"Base Core Unit Tests"});
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews suite.add(new Y.Test.Case(basicTemplate));
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews suite.add(new Y.Test.Case(extendedTemplate));
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews suite.add(new Y.Test.Case(basicTemplate));
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews suite.add(new Y.Test.Case(extendedTemplate));
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews Y.Test.Runner.add(suite);
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews Y.Test.Runner.setName("Base Core Tests");
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews Y.Test.Runner.disableLogging();
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews Y.Test.Runner.run();
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews var console;
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews Y.one("#btnRun").set("disabled", false).on("click", function() {
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews if (!console) {
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews //create the console
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews console = new Y.Console({
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews width:"100%",
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews height:"95%",
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews id:"console",
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews verbose : false,
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews printTimeout: 0,
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews newestOnTop : false,
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews entryTemplate: '<pre class="{entry_class} {cat_class} {src_class}">'+
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews '<span class="{entry_cat_class}">{label}</span>'+
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews '<span class="{entry_content_class}">{message}</span>'+
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews '</pre>',
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews render:true
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews });
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews var perfSuite = new Y.Test.Suite({name:"Attribute Performance Tests"});
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews perfSuite.add(new Y.Test.Case(perfTemplate));
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews Y.Test.Runner.add(perfSuite);
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews }
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews Y.Test.Runner.enableLogging();
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews Y.Test.Runner.run();
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews });
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews });
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews </script>
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews</head>
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews<body class="yui3-skin-sam">
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews <p><input type="button" value="Run Tests" id="btnRun" disabled=true></p>
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews</body>
4f087942583014b241adca1bc78c6db89ed96e94Mark Andrews</html>