attribute-core.html revision 2b7125b1271732c191ab0b73be768534afd62fc5
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai<html>
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai<head>
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai <title>Attribute Core Tests</title>
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai <script type="text/javascript" src="/build/yui/yui.js"></script>
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai <style type="text/css">
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai #console .yui3-console-entry {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai padding:2px;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai margin:0px;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai min-height:0;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai #console .yui3-console-entry-fail .yui3-console-entry-cat {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai background-color:red;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai #console .yui3-console-entry-pass .yui3-console-entry-cat {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai background-color:green;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai #console .yui3-console-entry-perf .yui3-console-entry-cat {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai background-color:blue;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai #console {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai position:static;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai html, body {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai height:100%;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai </style>
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai <script type="text/javascript">
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai YUI({
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai useBrowserConsole:false,
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai filter: (window.location.search.match(/[?&]filter=([^&]+)/) || [])[1] || 'min'
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }).use("dump", "attribute-core", "console", "test", function(Y) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai function areObjectsReallyEqual(o1, o2) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.ObjectAssert.areEqual(o1, o2);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.ObjectAssert.areEqual(o2, o1);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai function TestAugment(attrs, values) {}
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.augment(TestAugment, Y.AttributeCore);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai function TestAugmentWithATTRS(attrs, values) {}
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai TestAugmentWithATTRS.ATTRS = {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai foo: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value:"bar"
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai };
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.augment(TestAugmentWithATTRS, Y.AttributeCore);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai function Test(cfg, lazy) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai this._initAttrHost(null, cfg, lazy);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai };
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Test.ATTRS = {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai attr1: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: "Foo",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai setter: function(n) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai return n;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai attr2: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: "Bar",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai setter: function(n) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai return n;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai attr3: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: true
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai attr4: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: 3
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai attr5: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: 3
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai attr6: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: false,
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai setter: function(lock) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai return lock;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai attr7: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: false
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai attr8: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: true
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai attr9: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: true
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai attr10: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: false
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai attr11: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: true
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai attr12: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: false
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai attr13: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: false
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai attr14: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: false,
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai setter: function(val) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai return val;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai attr15: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: null,
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai setter: function(val) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai return false;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai attr16: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: ['default'],
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai getter: function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai return false;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai setter: function(g) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai return g;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai attr17: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: null,
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai setter: function(g) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai return g;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai attr18: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai writeOnce: true,
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: null
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai attr19: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai writeOnce: true,
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: null
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai attr20: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai writeOnce: true,
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: null
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai };
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai // Straightup augment, no wrapper functions
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.mix(Test, Y.AttributeCore, false, null, 1);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai function AttrHost(cfg) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai this._initAttrHost(null, cfg, true);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai AttrHost.ATTRS = {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai A: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value:"AVal",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai validator: Y.Lang.isString,
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai broadcast:1
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai B: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai validator: function(value) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai return (value === undefined || Y.Lang.isString(value) || Y.Lang.isNumber(value));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai broadcast:2
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai C: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai writeOnce: true
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai D: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value:"DVal",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai readOnly: true
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai E: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value:"EVal",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai writeOnce: true
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai DE: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai valueFn: function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai return this.get("D") + this.get("E");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai complex: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai X : {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai A: 1
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y : {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai A: 2
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Z : {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai A: 3
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai initOnly : {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai writeOnce:"initOnly"
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai };
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai // Straightup augment, no wrapper functions
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.mix(AttrHost, Y.AttributeCore, false, null, 1);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var augmentTemplate = {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai name: "Augment Tests",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testSetGetNoAttrs : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var h = new TestAugment();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("foo", "bar");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("bar", h.get("foo"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testSetGetWithAttrs : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var h = new TestAugmentWithATTRS();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("bar", h.get("foo"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("foo", "foobar");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("foobar", h.get("foo"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testCustomAugment : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai function FooBar(userVals) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Attribute.call(this, null, userVals);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai };
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai FooBar.ATTRS = {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai foo:{
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value:"bar"
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai };
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai // Straightup augment, no wrapper functions
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.mix(FooBar, Y.Attribute, false, null, 1);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var o1 = new FooBar();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("bar", o1.get("foo"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai o1.set("foo", "foobar");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("foobar", o1.get("foo"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var o2 = new FooBar({foo:"barfoo"});
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("barfoo", o2.get("foo"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testObjectAugment: function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var o = {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai methodOne: function() {}
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai };
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.augment(o, Y.Attribute);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai o.set("foo", "bar");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("bar", o.get("foo"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai };
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var basicTemplate = {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai name: "Core Base Class Tests",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai createHost : function(cfg) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai return new AttrHost(cfg);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai setUp : function() {},
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai tearDown : function() {},
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testDefault : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var h = this.createHost();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("AVal", h.get("A"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(undefined, h.get("B"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(undefined, h.get("C"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("DVal", h.get("D")); // Readonly
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("EVal", h.get("E")); // Write once, but not twice
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("DValEVal", h.get("DE"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testConstructor : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var h = this.createHost({A:"MyAVal", B:"MyBVal", C:"MyCVal", D:"MyDVal", E:"MyEVal", DE:"MyDEVal"});
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("C", "MyNewCVal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("D", "MyNewDVal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("E", "MyNewEVal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("MyAVal", h.get("A"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("MyBVal", h.get("B"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("MyCVal", h.get("C")); // Write Once, set in constructor
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("DVal", h.get("D")); // Read Only
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("MyEVal", h.get("E")); // Write Once, set in constructor
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("MyDEVal", h.get("DE"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testSet : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var h = this.createHost();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("A", "MyNewAVal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("B", "MyNewBVal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("C", "MyNewCVal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("D", "MyNewDVal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("E", "MyNewEVal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("DE", "MyNewDEVal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("MyNewAVal", h.get("A"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("MyNewBVal", h.get("B"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("MyNewCVal", h.get("C")); // Write once, set on first set.
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("DVal", h.get("D")); // Read Only
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("EVal", h.get("E")); // Write Once
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("MyNewDEVal", h.get("DE"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testWriteOncePostInit : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var h = this.createHost();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("E", "MyNewEVal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("C", "MyNewCVal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("MyNewCVal", h.get("C")); // Write Once, default value
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("EVal", h.get("E")); // Write Once, default value
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testWriteOnce : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var h = this.createHost({E:"MyEVal"});
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("E", "MyNewEVal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("MyEVal", h.get("E")); // Write Once, on init
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testWriteOnceInitOnly : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var h = this.createHost({ initOnly: "initOnlyVal"});
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("initOnly", "NewInitOnlyVal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("initOnlyVal", h.get("initOnly"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testWriteOnceInitOnlyNotProvided : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var h1 = this.createHost();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h1.set("initOnly", "InitOnlyVal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(undefined, h1.get("initOnly"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testAdHocGetSet : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var h = this.createHost();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(undefined, h.get("AdHoc"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("AdHoc", "TestAdHoc");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("TestAdHoc", h.get("AdHoc"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.addAttr("AdHoc", {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai setter: function(val) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai return val.toUpperCase();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai });
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("AdHoc", "TestAdHocConfigured");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("TESTADHOCCONFIGURED", h.get("AdHoc"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testMassSetGet : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var h = this.createHost();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.setAttrs({
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai "A" : "MyNewAVal",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai "B": "MyNewBVal",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai "C": "MyNewCVal",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai "D": "MyNewDVal",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai "E": "MyNewEVal",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai "DE": "MyNewDEVal",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai complex: "MyNewComplexVal"
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai });
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var expectedVals = {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai A: "MyNewAVal",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai B: "MyNewBVal",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai C: "MyNewCVal",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai D: "DVal",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai E: "EVal",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai DE: "MyNewDEVal",
2b7125b1271732c191ab0b73be768534afd62fc5Dav Glass complex: "MyNewComplexVal",
2b7125b1271732c191ab0b73be768534afd62fc5Dav Glass initOnly: undefined
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai };
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(expectedVals.A, h.get("A"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(expectedVals.B, h.get("B"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(expectedVals.C, h.get("C")); // Write once, set on first set.
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(expectedVals.D, h.get("D")); // Read Only
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(expectedVals.E, h.get("E")); // Write Once
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(expectedVals.DE, h.get("DE"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai areObjectsReallyEqual(expectedVals, h.getAttrs());
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testModifiedAttrs : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var h = this.createHost();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.setAttrs({
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai A: "MyNewAVal",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai C: "MyNewCVal",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai D: "MyNewDVal"
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai });
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var expectedVals = {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai A: "MyNewAVal"
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai };
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai areObjectsReallyEqual(expectedVals, h.getAttrs(true));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testValidation : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var h = this.createHost();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("A", "MyAVal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("MyAVal", h.get("A"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("A", 100);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("MyAVal", h.get("A")); // Validation should prevent the attribute from being set
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("B", "two");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("two", h.get("B"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("B", 2);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(2, h.get("B"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("B", false);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(2, h.get("B")); // Validation should prevent the attribute from being set
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testPrivateSet : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var h = this.createHost();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("D", "MyNewDVal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("E", "MyNewEVal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("DVal", h.get("D"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("EVal", h.get("E"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h._set("D", "TryDAgain");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h._set("E", "TryEAgain");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("TryDAgain", h.get("D"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("TryEAgain", h.get("E"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testComplexDefault : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var h = this.createHost();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var o = {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai X : {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai A: 1
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y : {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai A: 2
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Z : {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai A: 3
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai };
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(1, h.get("complex.X.A"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(2, h.get("complex.Y.A"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(3, h.get("complex.Z.A"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai areObjectsReallyEqual({A:1}, h.get("complex.X"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai areObjectsReallyEqual({A:2}, h.get("complex.Y"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai areObjectsReallyEqual({A:3}, h.get("complex.Z"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var val = h.get("complex");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.each(val, function(v, k) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai areObjectsReallyEqual(v, o[k]);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai });
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testComplexSet : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var h = this.createHost();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("complex.X.A", 111);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(111, h.get("complex.X.A"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("complex.X.B", 112);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(112, h.get("complex.X.B"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai areObjectsReallyEqual({A:111, B:112}, h.get("complex.X"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("complex.W.B", 113);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(undefined, h.get("complex.W"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(undefined, h.get("complex.W.B"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("complex.Y", {B:222});
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(222, h.get("complex.Y.B"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(undefined, h.get("complex.Y.A"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testInitialValidation: function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var h = this.createHost({A:5});
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("AVal", h.get("A")); // Numerical value validation failure should revert to default value
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testProtect : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var h = this.createHost();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var q = h._protectAttrs(AttrHost.ATTRS);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areNotSame(AttrHost.ATTRS, q);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(Y.dump(AttrHost.ATTRS), Y.dump(q));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai q.A.newprop = "new prop value";
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai q.A.value = "modified value";
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areNotEqual(Y.dump(AttrHost.ATTRS), Y.dump(q));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai };
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var perfTemplate = {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai name: "Performance Tests",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testTimeConstruction: function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var start, end, n = 20, t, i;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai start = new Date().getTime();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai for (i = 0; i < n; i++) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai t = new Test(null, false);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai t.getAttrs();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai t = null;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai end = new Date().getTime();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.log("Construction Time Populated (upfront): " + ((end-start)/n), "perf");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai start = new Date().getTime();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai for (i = 0; i < n; i++) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai t = new Test();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai t.getAttrs();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai t = null;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai end = new Date().getTime();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.log("Construction Time Populated (lazy): " + ((end-start)/n), "perf");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai start = new Date().getTime();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai for (i = 0; i < n; i++) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai t = new Test(null, false);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai t = null;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai end = new Date().getTime();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.log("Construction Time (upfront): " + ((end-start)/n), "perf");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai start = new Date().getTime();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai for (i = 0; i < n; i++) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai t = new Test();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai t = null;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai end = new Date().getTime();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var time = (end-start)/n;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var expectedTime = (Y.UA.ie && Y.UA.ie <= 6) ? 15 : 10;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.log("Construction Time (lazy): " + time, "perf");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai start = new Date().getTime();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai for (i = 0; i < n; i++) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai t = new Test(null, true, true);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai t = null;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai end = new Date().getTime();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.log("Construction Time (lazy and silent init): " + ((end-start)/n), "perf");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.isTrue((time < expectedTime));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai },
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testStateForPerfSwitches : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai // Lazy
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai t = new Test();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var x = t.getAttrs();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai // Non Lazy (Upfront)
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai t = new Test(null, false);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var y = t.getAttrs();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai // Lazy and Silent
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai t = new Test(null, true, true);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var z = t.getAttrs();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(Y.dump(x), Y.dump(y), "Lazy vs. Upfront: attr state is not equal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(Y.dump(y), Y.dump(z), "Upfront vs. Lazy and Silent: attr state is not equal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var suite = new Y.Test.Suite({name:"Attribute Core Unit Tests"});
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai suite.add(new Y.Test.Case(basicTemplate));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai suite.add(new Y.Test.Case(augmentTemplate));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai suite.add(new Y.Test.Case(basicTemplate));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai suite.add(new Y.Test.Case(augmentTemplate)); // run twice, just to make sure static class state not modified
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Test.Runner.add(suite);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Test.Runner.setName("Attribute Core Tests");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Test.Runner.disableLogging();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Test.Runner.run();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var console;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.one("#btnRun").set("disabled", false).on("click", function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai if (!console) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai //create the console
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai console = new Y.Console({
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai width:"100%",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai height:"95%",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai id:"console",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai verbose : false,
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai printTimeout: 0,
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai newestOnTop : false,
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai entryTemplate: '<pre class="{entry_class} {cat_class} {src_class}">'+
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai '<span class="{entry_cat_class}">{label}</span>'+
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai '<span class="{entry_content_class}">{message}</span>'+
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai '</pre>',
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai render:true
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai });
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var perfSuite = new Y.Test.Suite({name:"Attribute Performance Tests"});
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai perfSuite.add(new Y.Test.Case(perfTemplate));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Test.Runner.add(perfSuite);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai }
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Test.Runner.enableLogging();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Test.Runner.run();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai });
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai });
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai </script>
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai</head>
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai<body class="yui3-skin-sam">
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai <p><input type="button" value="Run Tests" id="btnRun" disabled=true></p>
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai</body>
2b7125b1271732c191ab0b73be768534afd62fc5Dav Glass</html>