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 <script type="text/javascript" src="/build/yui/yui.js"></script>
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai #console .yui3-console-entry {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai padding:2px;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai min-height:0;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai #console .yui3-console-entry-fail .yui3-console-entry-cat {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai background-color:red;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai #console .yui3-console-entry-pass .yui3-console-entry-cat {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai background-color:green;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai #console .yui3-console-entry-perf .yui3-console-entry-cat {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai background-color:blue;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai position:static;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai html, body {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai height:100%;
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 function areObjectsReallyEqual(o1, o2) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai function TestAugment(attrs, values) {}
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai function TestAugmentWithATTRS(attrs, values) {}
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.augment(TestAugmentWithATTRS, Y.AttributeCore);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai function Test(cfg, lazy) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai this._initAttrHost(null, cfg, lazy);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: "Foo",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai setter: function(n) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: "Bar",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai setter: function(n) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: false,
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai setter: function(lock) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai return lock;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: false
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: false
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: false
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: false
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: false,
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai setter: function(val) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: null,
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai setter: function(val) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai return false;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: ['default'],
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai getter: function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai return false;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai setter: function(g) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value: null,
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai setter: function(g) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai writeOnce: true,
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai writeOnce: true,
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai writeOnce: true,
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai // Straightup augment, no wrapper functions
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai function AttrHost(cfg) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai this._initAttrHost(null, cfg, true);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value:"AVal",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai validator: function(value) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai return (value === undefined || Y.Lang.isString(value) || Y.Lang.isNumber(value));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai writeOnce: true
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value:"DVal",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai readOnly: true
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai value:"EVal",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai writeOnce: true
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai valueFn: function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai initOnly : {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai writeOnce:"initOnly"
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai // Straightup augment, no wrapper functions
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.mix(AttrHost, Y.AttributeCore, false, null, 1);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var augmentTemplate = {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai name: "Augment Tests",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testSetGetNoAttrs : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var h = new TestAugment();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("foo", "bar");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testSetGetWithAttrs : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var h = new TestAugmentWithATTRS();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("foo", "foobar");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testCustomAugment : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai function FooBar(userVals) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Attribute.call(this, null, userVals);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai // Straightup augment, no wrapper functions
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var o1 = new FooBar();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai o1.set("foo", "foobar");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var o2 = new FooBar({foo:"barfoo"});
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testObjectAugment: function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai methodOne: function() {}
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai o.set("foo", "bar");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var basicTemplate = {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai name: "Core Base Class Tests",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai createHost : function(cfg) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai return new AttrHost(cfg);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai setUp : function() {},
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai tearDown : function() {},
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testDefault : function() {
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 testConstructor : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var h = this.createHost({A:"MyAVal", B:"MyBVal", C:"MyCVal", D:"MyDVal", E:"MyEVal", DE:"MyDEVal"});
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("C", "MyNewCVal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("D", "MyNewDVal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("E", "MyNewEVal");
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 testSet : function() {
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 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 testWriteOncePostInit : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("E", "MyNewEVal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("C", "MyNewCVal");
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 testWriteOnce : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var h = this.createHost({E:"MyEVal"});
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("E", "MyNewEVal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("MyEVal", h.get("E")); // Write Once, on init
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testWriteOnceInitOnly : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var h = this.createHost({ initOnly: "initOnlyVal"});
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("initOnly", "NewInitOnlyVal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("initOnlyVal", h.get("initOnly"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testWriteOnceInitOnlyNotProvided : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h1.set("initOnly", "InitOnlyVal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(undefined, h1.get("initOnly"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testAdHocGetSet : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("AdHoc", "TestAdHoc");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("TestAdHoc", h.get("AdHoc"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai setter: function(val) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("AdHoc", "TestAdHocConfigured");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("TESTADHOCCONFIGURED", h.get("AdHoc"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testMassSetGet : function() {
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 var expectedVals = {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai A: "MyNewAVal",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai B: "MyNewBVal",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai C: "MyNewCVal",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai DE: "MyNewDEVal",
2b7125b1271732c191ab0b73be768534afd62fc5Dav Glass complex: "MyNewComplexVal",
2b7125b1271732c191ab0b73be768534afd62fc5Dav Glass initOnly: undefined
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 areObjectsReallyEqual(expectedVals, h.getAttrs());
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testModifiedAttrs : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai A: "MyNewAVal",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai C: "MyNewCVal",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai D: "MyNewDVal"
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var expectedVals = {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai A: "MyNewAVal"
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai areObjectsReallyEqual(expectedVals, h.getAttrs(true));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testValidation : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("A", "MyAVal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual("MyAVal", h.get("A")); // Validation should prevent the attribute from being set
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(2, h.get("B")); // Validation should prevent the attribute from being set
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testPrivateSet : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("D", "MyNewDVal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h.set("E", "MyNewEVal");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h._set("D", "TryDAgain");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai h._set("E", "TryEAgain");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testComplexDefault : function() {
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 var val = h.get("complex");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.each(val, function(v, k) {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai areObjectsReallyEqual(v, o[k]);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testComplexSet : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai areObjectsReallyEqual({A:111, B:112}, h.get("complex.X"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(undefined, h.get("complex.W"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(undefined, h.get("complex.W.B"));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(undefined, h.get("complex.Y.A"));
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 testProtect : function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var q = h._protectAttrs(AttrHost.ATTRS);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areEqual(Y.dump(AttrHost.ATTRS), Y.dump(q));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai q.A.newprop = "new prop value";
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai q.A.value = "modified value";
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.Assert.areNotEqual(Y.dump(AttrHost.ATTRS), Y.dump(q));
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var perfTemplate = {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai name: "Performance Tests",
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai testTimeConstruction: function() {
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var start, end, n = 20, t, i;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai start = new Date().getTime();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.log("Construction Time Populated (upfront): " + ((end-start)/n), "perf");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai t = new Test();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai end = new Date().getTime();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.log("Construction Time Populated (lazy): " + ((end-start)/n), "perf");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai start = new Date().getTime();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.log("Construction Time (upfront): " + ((end-start)/n), "perf");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai t = new Test();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai end = new Date().getTime();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var time = (end-start)/n;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai var expectedTime = (Y.UA.ie && Y.UA.ie <= 6) ? 15 : 10;
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.log("Construction Time (lazy): " + time, "perf");
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai t = new Test(null, true, true);
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai end = new Date().getTime();
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.log("Construction Time (lazy and silent init): " + ((end-start)/n), "perf");
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 var suite = new Y.Test.Suite({name:"Attribute Core Unit Tests"});
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai suite.add(new Y.Test.Case(augmentTemplate)); // run twice, just to make sure static class state not modified
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai Y.one("#btnRun").set("disabled", false).on("click", function() {
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 var perfSuite = new Y.Test.Suite({name:"Attribute Performance Tests"});
fdaf522f78615dc3145b1771f6f8daba2df06bb6Satyen Desai <p><input type="button" value="Run Tests" id="btnRun" disabled=true></p>