base-core.html revision 1c99bd1672dfadc9e981726419cc465d406c474b
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai <script type="text/javascript" src="/build/yui/yui.js"></script>
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai #console .yui3-console-entry {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai padding:2px;
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai min-height:0;
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai #console .yui3-console-entry-fail .yui3-console-entry-cat {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai background-color:red;
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai #console .yui3-console-entry-pass .yui3-console-entry-cat {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai background-color:green;
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai #console .yui3-console-entry-perf .yui3-console-entry-cat {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai background-color:blue;
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai position:static;
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai html, body {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai height:100%;
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai useBrowserConsole:false,
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai filter: (window.location.search.match(/[?&]filter=([^&]+)/) || [])[1] || 'min'
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai }).use("dump", "base-core", "console", "test", function(Y) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai function areObjectsReallyEqual(o1, o2) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai function Test(cfg, lazy, silentInit) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai this._lazyAddAttrs = lazy;
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai this._silentInit = silentInit;
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Test.superclass.constructor.apply(this, arguments);
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai value: "Foo",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai setter: function(n) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai value: "Bar",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai setter: function(n) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai value: false,
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai setter: function(lock) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai return lock;
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai value: false
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai value: false
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai value: false
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai value: false
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai value: false,
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai setter: function(val) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai value: null,
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai setter: function(val) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai return false;
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai value: ['default'],
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai getter: function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai return false;
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai setter: function(g) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai value: null,
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai setter: function(g) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai writeOnce: true,
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai writeOnce: true,
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai writeOnce: true,
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai foo: function() {}
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai function AttrHost(config) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai AttrHost.superclass.constructor.apply(this, arguments);
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai value:"AVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai validator: function(value) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai return (value === undefined || Y.Lang.isString(value) || Y.Lang.isNumber(value));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai writeOnce: true
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai value:"DVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai readOnly: true
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai value:"EVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai writeOnce: true
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai valueFn: function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai initOnly : {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai writeOnce:"initOnly"
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai function ExtendedAttrHost(config) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai AttrHost.superclass.constructor.apply(this, arguments);
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai ExtendedAttrHost.NAME = "extendedAttrHost";
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai value:"ExtAVal"
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai value:"ExtBVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai validator: function(value) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai return ((value == undefined) || Y.Lang.isString(value));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai value:"ExtDVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai setter: function(val) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai return (Y.Lang.isString(val)) ? val.toUpperCase() : val;
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai value:"ExtEVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai getter: function(val) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai return (Y.Lang.isString(val)) ? val.toLowerCase() : val;
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai value:"ExtFVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai setter: function(val) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai return (Y.Lang.isString(val)) ? val : Y.AttributeCore.INVALID_VALUE;
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai value: 2222,
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai setter: function(val) { // Should be ignored. Can't set setters for complex sub vals
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai return val + 10000;
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai valueFn:function(val) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai // Referring to H before it's set up
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai return this.get("H") + 10;
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai getter: function(val) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai return val*5;
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai getter: "_getI",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai setter: "_setI",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai validator: "_validateI"
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai PassThrough : {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai value: "passthrough",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai getter: function(val) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai return this._passthrough;
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai setter: function(val) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai this._passthrough = val;
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai getter: function(val) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.extend(ExtendedAttrHost, AttrHost, {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai _validateI : function(val, name) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai if (name.indexOf(".") == -1) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai return true;
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai _getI : function(val, name) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai if (name.indexOf(".") == -1) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai _setI : function(val, name) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai if (name.indexOf(".") == -1) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai var basicTemplate = {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai name: "Core Base Class Tests",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai createHost : function(cfg) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai return new AttrHost(cfg);
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai setUp : function() {},
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai tearDown : function() {},
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testDefault : function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual("DVal", h.get("D")); // Readonly
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual("EVal", h.get("E")); // Write once, but not twice
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testConstructor : function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai var h = this.createHost({A:"MyAVal", B:"MyBVal", C:"MyCVal", D:"MyDVal", E:"MyEVal", DE:"MyDEVal"});
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("C", "MyNewCVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("D", "MyNewDVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("E", "MyNewEVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual("MyCVal", h.get("C")); // Write Once, set in constructor
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual("DVal", h.get("D")); // Read Only
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual("MyEVal", h.get("E")); // Write Once, set in constructor
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testSet : function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("A", "MyNewAVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("B", "MyNewBVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("C", "MyNewCVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("D", "MyNewDVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("E", "MyNewEVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("DE", "MyNewDEVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual("MyNewCVal", h.get("C")); // Write once, set on first set.
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual("DVal", h.get("D")); // Read Only
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual("EVal", h.get("E")); // Write Once
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testWriteOncePostInit : function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("E", "MyNewEVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("C", "MyNewCVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual("MyNewCVal", h.get("C")); // Write Once, default value
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual("EVal", h.get("E")); // Write Once, default value
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testWriteOnce : function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai var h = this.createHost({E:"MyEVal"});
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("E", "MyNewEVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual("MyEVal", h.get("E")); // Write Once, on init
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testWriteOnceInitOnly : function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai var h = this.createHost({ initOnly: "initOnlyVal"});
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("initOnly", "NewInitOnlyVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual("initOnlyVal", h.get("initOnly"));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testWriteOnceInitOnlyNotProvided : function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h1.set("initOnly", "InitOnlyVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual(undefined, h1.get("initOnly"));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testAdHocGetSet : function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("AdHoc", "TestAdHoc");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual("TestAdHoc", h.get("AdHoc"));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai setter: function(val) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("AdHoc", "TestAdHocConfigured");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual("TESTADHOCCONFIGURED", h.get("AdHoc"));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testMassSetGet : function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai "A" : "MyNewAVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai "B": "MyNewBVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai "C": "MyNewCVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai "D": "MyNewDVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai "E": "MyNewEVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai "DE": "MyNewDEVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai complex: "MyNewComplexVal"
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai var expectedVals = {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai A: "MyNewAVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai B: "MyNewBVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai C: "MyNewCVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai DE: "MyNewDEVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai complex: "MyNewComplexVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai initialized: true,
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai destroyed: false
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual(expectedVals.C, h.get("C")); // Write once, set on first set.
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual(expectedVals.D, h.get("D")); // Read Only
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual(expectedVals.E, h.get("E")); // Write Once
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual(expectedVals.DE, h.get("DE"));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai areObjectsReallyEqual(expectedVals, h.getAttrs());
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testModifiedAttrs : function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai A: "MyNewAVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai C: "MyNewCVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai D: "MyNewDVal"
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai var expectedVals = {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai A: "MyNewAVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai initialized:true
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai areObjectsReallyEqual(expectedVals, h.getAttrs(true));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testValidation : function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("A", "MyAVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual("MyAVal", h.get("A")); // Validation should prevent the attribute from being set
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual(2, h.get("B")); // Validation should prevent the attribute from being set
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testPrivateSet : function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("D", "MyNewDVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("E", "MyNewEVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h._set("D", "TryDAgain");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h._set("E", "TryEAgain");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testComplexDefault : function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai areObjectsReallyEqual({A:1}, h.get("complex.X"));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai areObjectsReallyEqual({A:2}, h.get("complex.Y"));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai areObjectsReallyEqual({A:3}, h.get("complex.Z"));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai var val = h.get("complex");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.each(val, function(v, k) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai areObjectsReallyEqual(v, o[k]);
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testComplexSet : function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai areObjectsReallyEqual({A:111, B:112}, h.get("complex.X"));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual(undefined, h.get("complex.W"));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual(undefined, h.get("complex.W.B"));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual(undefined, h.get("complex.Y.A"));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testInitialValidation: function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai var h = this.createHost({A:5});
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual("AVal", h.get("A")); // Numerical value validation failure should revert to default value
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testProtect : function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai var q = h._protectAttrs(AttrHost.ATTRS);
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual(Y.dump(AttrHost.ATTRS), Y.dump(q));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai q.A.newprop = "new prop value";
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai q.A.value = "modified value";
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areNotEqual(Y.dump(AttrHost.ATTRS), Y.dump(q));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai var extendedTemplate = {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai name: "Core Extended Class Tests",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai createHost : function(cfg) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai return new ExtendedAttrHost(cfg);
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai setUp : function() {},
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai tearDown : function() {},
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testDefault : function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual("EXTDVALexteval", h.get("DE"));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testConstructor : function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai var h = this.createHost({A:"MyAVal", B:"MyBVal", C:"MyCVal", D:"MyDVal", E:"MyEVal", F:"MyFVal"});
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("C", "MyNewCVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("D", "MyNewDVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("E", "MyNewEVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual("EXTDVALmyeval", h.get("DE"));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testSet : function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("A", "MyNewAVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("B", "MyNewBVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("C", "MyNewCVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("D", "MyNewDVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("E", "MyNewEVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("F", "MyNewFVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("DE", "MyNewDEVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testAdHocGetSet : function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("AdHoc", "TestAdHoc");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual("TestAdHoc", h.get("AdHoc"));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testMassSetGet : function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai "A" : "MyNewAVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai "B": "MyNewBVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai "C": "MyNewCVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai "D": "MyNewDVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai "E": "MyNewEVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai "F": "MyNewFVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai "DE": "MyNewDEVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai complex: "MyNewComplexVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai "I" : "MyNewIVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai "PassThrough" : "MyPassThrough",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai var expectedVals = {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai A: "MyNewAVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai B: "MyNewBVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai C: "MyNewCVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai D: "EXTDVAL",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai E: "exteval",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai F: "MyNewFVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai DE: "MyNewDEVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai complex: "MyNewComplexVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai I: "MyNewIVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai PassThrough: "MyPassThrough",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai initialized:true,
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai destroyed:false
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual(expectedVals.C, h.get("C")); // Write once, set on first set.
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual(expectedVals.D, h.get("D")); // Read Only
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual(expectedVals.E, h.get("E")); // Write Once
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual(expectedVals.DE, h.get("DE"));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai areObjectsReallyEqual(expectedVals, h.getAttrs());
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testModifiedAttrs : function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai A: "MyNewAVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai C: "MyNewCVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai D: "MyNewDVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai F: "MyNewFVal"
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai var expectedVals = {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai A: "MyNewAVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai F: "MyNewFVal",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai initialized:true
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai areObjectsReallyEqual(expectedVals, h.getAttrs(true));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testValidation : function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("A", "MyAVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual("MyAVal", h.get("A")); // Validation should prevent the attribute from being set
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual("two", h.get("B")); // Validation should prevent the attribute from being set
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual("two", h.get("B")); // Validation should prevent the attribute from being set
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("F", "MyNewFVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual("MyNewFVal", h.get("F")); // Validation should prevent the attribute from being set
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testPrivateSet : function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("D", "MyNewDVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("E", "MyNewEVal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h._set("D", "TryDAgain");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h._set("E", "TryEAgain");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testComplexDefault : function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai areObjectsReallyEqual({A:1111}, h.get("complex.X"));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai areObjectsReallyEqual({A:2222}, h.get("complex.Y"));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai areObjectsReallyEqual({A:3}, h.get("complex.Z"));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai var val = h.get("complex");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.each(val, function(v, k) {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai areObjectsReallyEqual(v, o[k]);
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testComplexSet : function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai areObjectsReallyEqual({A:111, B:112}, h.get("complex.X"));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual(undefined, h.get("complex.W"));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual(undefined, h.get("complex.W.B"));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual(undefined, h.get("complex.Y.A"));
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testOnDemandInit : function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testGetterSetterValidatorNameArg : function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai h.set("I", {a:7, b:8});
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai var perfTemplate = {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai name: "Performance Tests",
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai testTimeConstruction: function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai var start, end, n = 20, t, i;
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai start = new Date().getTime();
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.log("Construction Time Populated (upfront): " + ((end-start)/n), "perf");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai t = new Test();
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai end = new Date().getTime();
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.log("Construction Time Populated (lazy): " + ((end-start)/n), "perf");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai start = new Date().getTime();
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.log("Construction Time (upfront): " + ((end-start)/n), "perf");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai t = new Test();
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai end = new Date().getTime();
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai var time = (end-start)/n;
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai var expectedTime = (Y.UA.ie && Y.UA.ie <= 6) ? 15 : 10;
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.log("Construction Time (lazy): " + time, "perf");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai t = new Test(null, true, true);
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai end = new Date().getTime();
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.log("Construction Time (lazy and silent init): " + ((end-start)/n), "perf");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual(Y.dump(x), Y.dump(y), "Lazy vs. Upfront: attr state is not equal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.Assert.areEqual(Y.dump(y), Y.dump(z), "Upfront vs. Lazy and Silent: attr state is not equal");
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai var suite = new Y.Test.Suite({name:"Base Core Unit Tests"});
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai Y.one("#btnRun").set("disabled", false).on("click", function() {
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai entryTemplate: '<pre class="{entry_class} {cat_class} {src_class}">'+
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai '<span class="{entry_cat_class}">{label}</span>'+
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai '<span class="{entry_content_class}">{message}</span>'+
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai var perfSuite = new Y.Test.Suite({name:"Attribute Performance Tests"});
42ca760bb9929dcdf6624637a7613f6f1ebcb4b4Satyen Desai <p><input type="button" value="Run Tests" id="btnRun" disabled=true></p>