widget.html revision 4de1c70b905d1ec094efa1406a5264e29ea112c9
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai #console .yui3-console-entry {
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai padding:2px;
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai min-height:0;
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai #console .yui3-console-entry-fail .yui3-console-entry-cat {
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai background-color:red;
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai #console .yui3-console-entry-pass .yui3-console-entry-cat {
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai background-color:green;
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai #console .yui3-console-entry-perf .yui3-console-entry-cat {
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai background-color:blue;
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai position:static;
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai html, body {
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai height:100%;
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai /** Extended Core Tests Need This. Custom CSS **/
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai .yui3-mywidget-hidden {
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai display:none;
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai /** Custom Widget Tests Need This. Custom CSS **/
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai .yui3-mycustomwidget-hidden {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai visibility:hidden;
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai <p><input type="button" value="Run Tests" id="btnRun" disabled=true></p>
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai <div id="widgetRenderContainer" style="height:300px;width:300px"></div>
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai useBrowserConsole:false,
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai filter: (window.location.search.match(/[?&]filter=([^&]+)/) || [])[1] || 'min'
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai }).use('test', 'widget', 'node-event-simulate', 'console', function (Y) {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai // Extended Core Tests
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai function MyWidget() {
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai MyWidget.superclass.constructor.apply(this, arguments);
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai // Single Box Tests
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai function MySingleBoxWidget() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai MySingleBoxWidget.superclass.constructor.apply(this, arguments);
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai MySingleBoxWidget.NAME = "mySingleBoxWidget";
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai CONTENT_TEMPLATE:null
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var suite = new Y.Test.Suite("Widget Tests");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var coreTests = {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai name : "Core",
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai createWidget: function(cfg) {
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai return new Y.Widget(cfg);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testInstantiation" : function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // Basic API
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testInitState" : function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual("div", w.get("boundingBox").get("tagName").toLowerCase());
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual("div", w.get("contentBox").get("tagName").toLowerCase());
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("disabled"), "disabled should be false");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("focused"), "focused should be false");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame("", w.get("height"), "height should be empty string");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame("", w.get("width"), "width should be empty string");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isString(w.get("id"), "id should be a string");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("initialized"), "initialized should be true");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("destroyed"), "destroyed should be false");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("rendered"), "rendered should be false");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("visible"), "visible should be true");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isNull(w.get("tabIndex"), "tabIndex should be null");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testNonRenderedStateUpdate" : function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // WRITE ONCE
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai id: "foobar",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai boundingBox: Y.Node.create("<span id='bb'></span>"),
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai srcNode: Y.Node.create("<span id='cb'></span>")
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("disabled", true);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("height", 100);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("width", 200);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("visible", false);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("tabIndex", 5);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual("span", w.get("boundingBox").get("tagName").toLowerCase());
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual("span", w.get("contentBox").get("tagName").toLowerCase());
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual("bb", w.get("boundingBox").get("id"));
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual("cb", w.get("contentBox").get("id"));
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("disabled"), "disabled should be true");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("focused"), "focused should be false"); // focused is READONLY
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual("100", w.get("height"), "height should be 100px");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual("200", w.get("width"), "width should be 200px");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual("foobar", w.get("id"), "id should be foobar");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("visible"), "visible should be false");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual(5, w.get("tabIndex"), "tabIndex should be 5");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testValidationReadonlyWriteonce" : function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("focused", true);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("rendered", true);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // WRITE ONCE
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("boundingBox", Y.Node.create("<span id='bb'></span>"));
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("contentBox", Y.Node.create("<span id='cb'></span>"));
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("render", true);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("tabIndex", "foo");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // State should be the same as the initial state
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual("div", w.get("boundingBox").get("tagName").toLowerCase());
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual("div", w.get("contentBox").get("tagName").toLowerCase());
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("disabled"), "disabled should be false");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("focused"), "focused should be false");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame("", w.get("height"), "height should be empty string");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame("", w.get("width"), "width should be empty string");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isString(w.get("id"), "id should be a string");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("initialized"), "initialized should be true");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("destroyed"), "destroyed should be false");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("rendered"), "rendered should be false");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("visible"), "visible should be true");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isNull(w.get("tabIndex"), "tabIndex should be null");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testStaticClassNameGeneration" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areEqual("yui3-widget-foo-bar", Y.Widget.getClassName("foo", "bar"));
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testInstanceClassNameGeneration" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areEqual("yui3-widget-foo-bar", w.getClassName("foo", "bar"));
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testCssPrefix" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areEqual("yui3-widget", w._cssPrefix, "Unexpected Prefix");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testRender" : function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai id: "widgetRender"
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var bbFromDom = Y.Node.one("#widgetRender");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(bbFromDom), "boundingBox not found in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(bbFromDom.get("firstChild").compareTo(w.get("contentBox")), "contentBox not first child of boundingBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(bbFromDom.compareTo(Y.Node.one("body").get("firstChild")), "widget not inserted to body");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("rendered"), "Rendered flag not set");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testRenderTo" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai id: "widgetRender"
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai w.render("#widgetRenderContainer");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var bbFromDom = Y.Node.one("#widgetRender");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isTrue(bbFromDom.get("parentNode").compareTo(Y.Node.one("#widgetRenderContainer")), "widget not rendered to container passed to render()");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(bbFromDom), "boundingBox not found in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(bbFromDom.get("firstChild").compareTo(w.get("contentBox")), "contentBox not first child of boundingBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("rendered"), "Rendered flag not set");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testBaseClassNames" : function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var bb = w.get("boundingBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var cb = w.get("contentBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(bb.hasClass("yui3-widget"), "bb missing yui3-widget marker");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(cb.hasClass("yui3-widget-content"), "cb missing yui3-widget-content marker");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testHeight" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai render:"#widgetRenderContainer"
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var bb = w.get("boundingBox"),
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai cb = w.get("contentBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // Default CSS has no border/padding/margin on BB/CB so this should be fine in all browsers
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual(100, bb.get("offsetHeight"), "100 height not set correctly in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual(100, cb.get("offsetHeight"), "100 height not set correctly in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("height", "200px");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual(200, bb.get("offsetHeight"), "200px height not set correctly in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual(200, cb.get("offsetHeight"), "200px height not set correctly in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("height", "50%");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual(150, bb.get("offsetHeight"), "% height not set correctly in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual(150, cb.get("offsetHeight"), "% height not set correctly in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testWidth" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai render:"#widgetRenderContainer"
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var bb = w.get("boundingBox"),
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai cb = w.get("contentBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // Default CSS has no border/padding/margin on BB/CB so this should be fine in all browsers
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual(100, bb.get("offsetWidth"), "100 width not set correctly in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual(100, cb.get("offsetWidth"), "100 width not set correctly in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("width", "200px");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual(200, bb.get("offsetWidth"), "200px width not set correctly in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual(200, cb.get("offsetWidth"), "200px width not set correctly in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("width", "50%");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual(150, bb.get("offsetWidth"), "% width not set correctly in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual(150, cb.get("offsetWidth"), "% width not set correctly in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testDisabled" : function() {
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget({render:true});
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var bb = w.get("boundingBox");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var className = w._cssPrefix + "-disabled";
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("disabled"), "disabled should be false by default");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFalse(bb.hasClass(className), "bb should not have a disabled marker class");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("disabled", true);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("disabled"), "disabled should be true");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isTrue(bb.hasClass(className), "bb should have a disabled marker");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("disabled", false);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("disabled"), "disabled should be false");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFalse(bb.hasClass(className), "bb should not have a disabled marker class");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testDisableEnable" : function() {
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget({render:true});
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var bb = w.get("boundingBox");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var className = w._cssPrefix + "-disabled";
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("disabled"), "disabled should be false by default");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFalse(bb.hasClass(className), "bb should not have a disabled marker class");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("disabled"), "disabled should be true");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isTrue(bb.hasClass(className), "bb should have a disabled marker");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("disabled"), "disabled should be false");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFalse(bb.hasClass(className), "bb should not have a disabled marker class");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testFocusBlur" : function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // The focused attribute is read-only, so we test through the public api
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget({render:true});
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var bb = w.get("boundingBox");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var className = w._cssPrefix + "-focused";
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // TODO ENH REQUEST: This doesn't seem right. We should focus on render.
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("focused"), "focused should be false by default");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFalse(bb.hasClass(className), "bb should not have a disabled marker class");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("focused"), "focused should be true");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isTrue(bb.hasClass(className), "bb should have a focused marker");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("focused"), "focused should be false");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFalse(bb.hasClass(className), "bb should not have a focused marker class");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testTabIndex" : function() {
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget({render:true});
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var bb = w.get("boundingBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isNull(w.get("tabIndex"), "tabIndex should be null by default");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(bb.get("tabIndex") <= 0, "tabIndex should not be set by default"); // default varies across browsers 0 or -1
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame(6, w.get("tabIndex"), "tabIndex should be 6");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // FIXME: See http://yuilibrary.com/projects/yui3/ticket/2531105
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // Y.Assert.areSame(6, bb.get("tabIndex"), "tabIndex should be 6");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame("testId", w.get("id"), "id not set");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame("testId", bb.get("id"), "id not reflected in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("visible"), "visible should be true by default");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFalse(bb.hasClass(className), "bb should not have a hidden marker class");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areNotEqual("none", bb.getStyle("display"), "widget should not be display:none");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("visible"), "visible should be false");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isTrue(bb.hasClass(className), "bb should have an hidden marker");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual("none", bb.getStyle("display"), "Default CSS should hide widget using display:none");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("visible"), "visible should be true by default");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFalse(bb.hasClass(className), "bb should not have a hidden marker class");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areNotEqual("none", bb.getStyle("display"), "widget should not be display:none");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isTrue(w.get("visible"), "visible should be true by default");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFalse(bb.hasClass(className), "bb should not have a hidden marker class");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.areNotEqual("none", bb.getStyle("display"), "widget should not be display:none");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFalse(w.get("visible"), "visible should be false");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isTrue(bb.hasClass(className), "bb should have an hidden marker");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.areEqual("none", bb.getStyle("display"), "Default CSS should hide widget using display:none");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isTrue(w.get("visible"), "visible should be true by default");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFalse(bb.hasClass(className), "bb should not have a hidden marker class");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.areNotEqual("none", bb.getStyle("display"), "widget should not be display:none");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var container = Y.one("#widgetRenderContainer");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(bb), "bb passed to constructor, not used");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("contentBox").compareTo(bb.get("firstChild")), "Missing contentBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").get("parentNode").compareTo(container), "boundingBox moved from it's place in the DOM");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var container = Y.one("#widgetRenderContainer");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("contentBox").compareTo(cb), "cb passed to constructor, not used");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(cb.get("parentNode")), "Missing boundingBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").get("parentNode").compareTo(container), "contentBox moved from it's place in the DOM");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var container = Y.one("#widgetRenderContainer");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(bb), "bb passed to constructor, not used");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("contentBox").compareTo(cb), "cb passed to constructor, not used");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(cb.get("parentNode")), "bb not not cb's parent");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").get("parentNode").compareTo(container), "bb moved from it's place in the DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").get("firstChild").compareTo(cb), "cb not bb's firstChild");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var container = Y.one("#widgetRenderContainer");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // NOTE: PE content sits in body, not container
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.one("body").append("<div id='bbTest'></div>");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(bb), "bb passed to constructor, not used");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("contentBox").compareTo(bb.get("firstChild")), "Missing contentBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").get("parentNode").compareTo(container), "boundingBox moved from it's place in the DOM");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var container = Y.one("#widgetRenderContainer");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.one("body").append("<div id='cbTest'></div>");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("contentBox").compareTo(cb), "cb passed to constructor, not used");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(cb.get("parentNode")), "Missing boundingBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").get("parentNode").compareTo(container), "contentBox moved from it's place in the DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testBoundingBoxContentBoxRenderTo" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var container = Y.one("#widgetRenderContainer");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.one("body").append("<div id='bbTest'></div>");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(bb), "bb passed to constructor, not used");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("contentBox").compareTo(cb), "cb passed to constructor, not used");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(cb.get("parentNode")), "bb not not cb's parent");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").get("parentNode").compareTo(container), "bb moved from it's place in the DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").get("firstChild").compareTo(cb), "cb not bb's firstChild");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var container = Y.one("#widgetRenderContainer");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai container.append("<div id='srcNode'><div id='foo'></div></div>");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("contentBox").compareTo(sn), "srcNode should end up being cb");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("srcNode").compareTo(sn), "srcNode should still be accessible from srcNode attribute");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(sn.get("parentNode")), "Missing boundingBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").get("parentNode").compareTo(container), "srcNode moved from it's place in the DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isNotNull(w.get("contentBox").one("#foo"), "contents of srcNode not maintained");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai ocb.append("<div><div id='outerContent'>Outer</div></div>");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai icb.append("<div><div id='innerContent'>Inner</div></div>");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame(o, Y.Widget.getByNode(outerContent), "Couldn't find outer widget from content");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame(i, Y.Widget.getByNode(innerContent), "Couldn't find inner widget from content");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame(o, Y.Widget.getByNode(o.get("contentBox")), "Couldn't find outer widget from outer contentBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame(o, Y.Widget.getByNode(o.get("boundingBox")), "Couldn't find outer widget from outer boundingBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame(i, Y.Widget.getByNode(i.get("contentBox")), "Couldn't find inner widget from inner contentBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame(i, Y.Widget.getByNode(i.get("boundingBox")), "Couldn't find inner widget from inner boundingBox");
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai Y.ObjectAssert.ownsNoKeys(w.get("strings"), "No strings should be available by default");
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai Y.Assert.areEqual("one", w.get("strings").stringOne);
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai Y.Assert.areEqual("two", w.get("strings").stringTwo);
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai Y.Assert.areEqual("three", w.get("strings").stringThree);
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai Y.Assert.areEqual("four", w.get("strings").stringFour);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var n = Y.Node.create('<div id="srcNode" class="yui3-widget-loading">Src Node Content</div>');
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isTrue(n.hasClass("yui3-widget-loading"), "yui3-widget-loading should not have been removed");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame(n, w.get("contentBox"), "srcNode not used as content box");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(n.hasClass("yui3-widget-loading"), "yui3-widget-loading should have removed");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var n = Y.Node.create('<div id="srcNode" class="yui3-mywidget-loading">Src Node Content</div>');
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isTrue(n.hasClass("yui3-mywidget-loading"), "yui3-mywidget-loading should not have been removed");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.areSame(n, w.get("contentBox"), "srcNode not used as content box");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFalse(n.hasClass("yui3-mywidget-loading"), "yui3-mywidget-loading should have removed");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isTrue(bb.hasClass("yui3-widget"), "bb missing generic yui3-widget marker");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isTrue(bb.hasClass("yui3-mywidget"), "bb missing yui3-mywidget marker");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isTrue(cb.hasClass("yui3-mywidget-content"), "cb missing yui3-mywidget-content marker");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFalse(cb.hasClass("yui3-widget-content"), "cb shouldn't have yui3-widget-content marker");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areEqual("yui3-mywidget", w._cssPrefix, "Unexpected Prefix");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testInstanceClassNameGeneration" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areEqual("yui3-mywidget-foo-bar", w.getClassName("foo", "bar"));
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai MyLifecycleWidget.superclass.constructor.apply(this, arguments);
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isTrue(this.get("boundingBox").inDoc());
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isTrue(this.get("contentBox").inDoc());
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isTrue(this.get("contentBox").compareTo(this.get("boundingBox").get("firstChild")));
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "lazyAttr" : {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "nonLazyAttr" : {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var expected = [
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "preconstructor",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "nonLazySetter",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "initializer",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "lazySetter",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "afterInit",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "postconstructor",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "onDestroy",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "destructor",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "afterDestroy"
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.ArrayAssert.itemsAreEqual(expected, w.__test, "Unexpected phase order");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var expected = [
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "preconstructor",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "nonLazySetter",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "initializer",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "lazySetter",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "afterInit",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "postconstructor",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "afterRender",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "onDestroy",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "destructor",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "afterDestroy"
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.ArrayAssert.itemsAreEqual(expected, w.__test, "Unexpected phase order");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai MyCustomWidget.superclass.constructor.apply(this, arguments);
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai DEF_PARENT_NODE: "#customWidgetRenderContainer",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai listNodes : {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai titleNode: {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai HTML_PARSER : {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai // FIXME: Ideally we should be able to do a this.get("titleNode") here. However,
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai // HTML_PARSER is called during widget initializer, when sub-class attrs aren't yet configured
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai // Moving all attribute set up to before all initializers, should allow us to do this.
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var labelHolder = srcNode.one("> h1");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai if (labelHolder) {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai return labelHolder.get("text");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai listNodes: ["> ul > li"],
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai titleNode: "> h1"
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai MyCustomWidget.NAME = "myCustomWidget";
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai name : "Custom Widget",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testDefaultParentNode" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var w = new MyCustomWidget({
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai id: "customWidget"
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var bbFromDom = Y.Node.one("#customWidget");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isTrue(bbFromDom.get("parentNode").compareTo(Y.Node.one("#customWidgetRenderContainer")), "Custom widget not rendered to container passed to render()");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(bbFromDom), "boundingBox not found in DOM");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isTrue(bbFromDom.get("firstChild").compareTo(w.get("contentBox")), "contentBox not first child of boundingBox");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isTrue(w.get("rendered"), "Rendered flag not set");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testDefaultParentNodeUsingRenderAttr" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var w = new MyCustomWidget({
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai id: "customWidget",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai render: true
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var bbFromDom = Y.Node.one("#customWidget");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isTrue(bbFromDom.get("parentNode").compareTo(Y.Node.one("#customWidgetRenderContainer")), "Custom widget not rendered to container passed to render()");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(bbFromDom), "boundingBox not found in DOM");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isTrue(bbFromDom.get("firstChild").compareTo(w.get("contentBox")), "contentBox not first child of boundingBox");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isTrue(w.get("rendered"), "Rendered flag not set");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testBoundingBoxTemplate" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var w = new MyCustomWidget({
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var bb = w.get("boundingBox");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areEqual("p", bb.get("tagName").toLowerCase());
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testContentBoxTemplate" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var w = new MyCustomWidget({
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var bb = w.get("contentBox");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areEqual("ul", bb.get("tagName").toLowerCase());
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testModifyAttr-Visible" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var w = new MyCustomWidget();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isFalse(w.get("visible"), "Custom widget should be hidden by default");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var bb = w.get("boundingBox");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isTrue(bb.hasClass("yui3-mycustomwidget-hidden"), "custom bb should have a hidden marker class");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areEqual("hidden", bb.getStyle("visibility"), "custom widget should not be visibility:hidden");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testModifyAttr-Strings" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var w = new MyCustomWidget();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var expected = {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai custStringOne:"one",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai custStringTwo:"two"
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var actual = w.get("strings");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.ObjectAssert.areEqual(expected, actual, "Unexpected strings");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.ObjectAssert.areEqual(actual, expected, "Unexpected strings");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testNewAttr" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var w = new MyCustomWidget();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areEqual("custAttrValue", w.get("custAttr"), "New attribute not added");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testHTMLParser" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai // HTML to Parse
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var markup = Y.Node.create('<div id="customWidgetContent"><h1>My Label</h1><ul><li>Item1</li><li>Item2</li></ul></div>');
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Node.one("body").append(markup);
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var w = new MyCustomWidget({
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai srcNode: "#customWidgetContent"
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areEqual("My Label", w.get("label"), "label not picked up from markup");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areEqual("h1", w.get("titleNode").get("tagName").toLowerCase(), "titleNode not picked up from markup");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areEqual(2, w.get("listNodes").size(), "listNodes count does not match markup");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areSame("li", w.get("listNodes").item(0).get("tagName").toLowerCase(), "listNode 0 not picked up from markup");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areSame("li", w.get("listNodes").item(1).get("tagName").toLowerCase(), "listNode 1 not picked up from markup");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areSame("Item1", w.get("listNodes").item(0).get("text"), "listNode 0 not picked up from markup");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areSame("Item2", w.get("listNodes").item(1).get("text"), "listNode 1 not picked up from markup");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai name : "Events"
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai name : "getSkinName",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "getSkinName should return null if not rendered" : function () {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var w = new Y.Widget();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "getSkinName should return name from BB if available": function () {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var bb = Y.Node.create( '<div class="yui3-skin-foo"><div></div></div>' ),
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai cb = bb.one( 'div' ),
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai boundingBox: bb,
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai contentBox: cb
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "getSkinName should return name from body or null": function () {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var w = new Y.Widget().render(),
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai body = Y.one( 'body' );
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai body.removeClass( "yui3-skin-sam" );
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai body.addClass( "yui3-skin-sam" );
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "getSkinName should return name from ancestor if both ancestor and body are classed": function () {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var w = new Y.Widget().render( '#testbed' ),
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai body = Y.one( 'body' );
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai body.addClass( "yui3-skin-sam" );
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai name:"destroy",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai testRenderedDestroy: function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var w = new Y.Widget({id:"foo"}).render();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isNull(Y.Node.one("#foo"), "Bounding box still in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai } catch(e) {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.fail("w.destroy() on a rendered widget threw an exception" + e);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai testRenderedDeepDestroy: function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var w = new Y.Widget({id:"foo"}).render();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var nref = Y.Node.create('<div id="deep">Foo</div>');
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.get("contentBox").appendChild(nref);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isNull(Y.Node.one("#foo"), "Bounding box still in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isNull(Y.Node.one("#deep"), "Deep content box still in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isNull(Y.Node.getDOMNode(nref), "Deep content still in Node cache");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai } catch(e) {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.fail("w.destroy(true) on a rendered widget threw an exception" + e);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai testUnrenderedDestroy: function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var w = new Y.Widget();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai } catch(e) {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.fail("w.destroy() on an unrendered widget threw an exception" + e);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai testSingleBoxDestroy: function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var w = new MySingleBoxWidget({
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isNull(Y.Node.one("#foo"), "Bounding box still in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai } catch(e) {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.fail("w.destroy() on a single box widget threw an exception" + e);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai testSingleBoxDeepDestroy: function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var w = new MySingleBoxWidget({
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var nref = Y.Node.create('<div id="deep_single">Foo</div>');
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.get("contentBox").appendChild(nref);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isNull(Y.Node.one("#foo"), "Bounding box still in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isNull(Y.Node.one("#deep_single"), "Deep content box still in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isNull(Y.Node.getDOMNode(nref), "Deep content still in Node cache");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai } catch(e) {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.fail("w.destroy(true) on a single box widget threw an exception" + e);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai name:"UI Events",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai testSingleSimple: function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var w, h, cb,
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai actualEvents = [],
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai expectedEvents = ["widget:click"];
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai cb = w.get("contentBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai cb.append("<p class='et'>Some Content For My Widget</p>");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai h = function(e) { actualEvents.push(e.type); };
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.on("click", h);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai cb.one(".et").simulate("click");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.ArrayAssert.itemsAreEqual(expectedEvents, actualEvents);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai testSingleComplex: function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var w, h, cb
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai actualEvents = [],
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai expectedEvents = ["widget:render",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "widget:renderedChange",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "widget:render",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "widget:mousedown",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "widget:mouseup",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "widget:mouseup",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "widget:mouseup",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "widget:mouseup",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "widget:mouseup",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "widget:mouseup",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "widget:click"];
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai cb = w.get("contentBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai cb.append("<p class='et'>Some Content For My Widget</p>");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai h = function(e) { actualEvents.push(e.type); };
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "render": h,
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "renderedChange": h
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.on("widget:mouseup", h);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.on("foo|widget:mouseup", h);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.on("mouseup", h);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.after("widget:mouseup", h);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.after("foo|widget:mouseup", h);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.after("mouseup", h);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "mousedown" : h,
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "render" : h
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai cb.one(".et").simulate("mousedown");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai cb.one(".et").simulate("mouseup");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai cb.one(".et").simulate("click");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.ArrayAssert.itemsAreEqual(expectedEvents, actualEvents);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai testNested: function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var outer = new Y.Widget();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var inner = new Y.Widget();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var ocb = outer.get('contentBox');
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var icb = inner.get('contentBox');
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var expectedEvents = ["outerClick", "innerClick", "outerClick"];
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var actualEvents = [];
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai ocb.setContent("<span class='oet'>Outer Content</span>");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai icb.setContent("<span class='iet'>Inner Content</span>");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai inner.after('click', function() {actualEvents.push("innerClick");});
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai outer.after('click', function() {actualEvents.push("outerClick");});
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // Only outer
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai ocb.one(".oet").simulate("click");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // One Inner, One Outer
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai ocb.one(".iet").simulate("click");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.ArrayAssert.itemsAreEqual(expectedEvents, actualEvents);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai testMultipleInstances : function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var actualEvents = [],
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai expectedEvents = ["clickOuter", "clickInner", "clickOuter"],
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai YUI().use('widget', function (Y) {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w1 = new Y.Widget({render:true});
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w1.get('contentBox').append('<div class="w2-container"></div><span class="miouter">Outer</span>');
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w1.on('click', function (e) {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai YUI().use('widget', function (Y1) {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w2 = new Y1.Widget({render:".w2-container"});
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w2.get('contentBox').append('<span class="miinner">Inner</span>');
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w2.on('click', function (e) {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Node.one(".miouter").simulate("click"); // only outer, once.
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Node.one(".miinner").simulate("click"); // inner, bubbled to outer (once each, without JS errors)
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.ArrayAssert.itemsAreEqual(expectedEvents, actualEvents);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai name:"clone",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai testWidgetClone : function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var a = new Y.Widget();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var b = new Y.Widget();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var c = new Y.Widget();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var a2 = Y.clone(a1);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var a3 = Y.clone(a2);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var b2 = Y.clone(b1);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var b3 = Y.clone(b2);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var c2 = Y.clone(c1);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var c3 = Y.clone(c2);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai testWidgetHashClone : function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // When Widget's are properties of an object it seems to break apart
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // something not passed to the recursive call maybe?
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var a = new Y.Widget();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var b = new Y.Widget();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var c = new Y.Widget();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var o2 = Y.clone(o1);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var o3 = Y.clone(o2);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai testBaseClone : function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var a = new Y.Base();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var b = new Y.Base();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var c = new Y.Base();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // Base works fine
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var a2 = Y.clone(a1);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var a3 = Y.clone(a2);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var b2 = Y.clone(b1);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var b3 = Y.clone(b2);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var c2 = Y.clone(c1);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var c3 = Y.clone(c2);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai testBaseHashClone : function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var a = new Y.Base();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var b = new Y.Base();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var c = new Y.Base();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var o2 = Y.clone(o1);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var o3 = Y.clone(o2);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var console;
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.one("#btnRun").set("disabled", false).on("click", function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai if (!console) {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai console = new Y.Console({
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai id:"console",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai width:"100%",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai height:"90%",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai verbose : false,
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai printTimeout: 0,
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai newestOnTop : false,
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai entryTemplate: '<pre class="{entry_class} {cat_class} {src_class}">'+
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai '<span class="{entry_cat_class}">{label}</span>'+
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai '<span class="{entry_content_class}">{message}</span>'+
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai }).render();