]> git.pond.sub.org Git - eow/blobdiff - static/dojo-release-1.1.1/dojo/tests/_base/declare.js
add Dojo 1.1.1
[eow] / static / dojo-release-1.1.1 / dojo / tests / _base / declare.js
diff --git a/static/dojo-release-1.1.1/dojo/tests/_base/declare.js b/static/dojo-release-1.1.1/dojo/tests/_base/declare.js
new file mode 100644 (file)
index 0000000..11720ec
--- /dev/null
@@ -0,0 +1,197 @@
+if(!dojo._hasResource["tests._base.declare"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["tests._base.declare"] = true;
+dojo.provide("tests._base.declare");
+
+tests.register("tests._base.declare",
+       [
+               function smokeTest(t){
+                       dojo.declare("tests._base.declare.tmp");
+                       var tmp = new tests._base.declare.tmp();
+                       dojo.declare("testsFoo");
+                       var tmp = new testsFoo();
+               },
+               function smokeTest2(t){
+                       dojo.declare("tests._base.declare.foo", null, {
+                               foo: "thonk"
+                       });
+                       var tmp = new tests._base.declare.foo();
+                       t.is("thonk", tmp.foo);
+
+                       dojo.declare("testsFoo2", null, {
+                               foo: "thonk"
+                       });
+                       var tmp2 = new testsFoo2();
+                       t.is("thonk", tmp2.foo);
+               },
+               function smokeTestWithCtor(t){
+                       dojo.declare("tests._base.declare.fooBar", null, {
+                               constructor: function(){
+                                       this.foo = "blah";
+                               },
+                               foo: "thonk"
+                       });
+                       var tmp = new tests._base.declare.fooBar();
+                       t.is("blah", tmp.foo);
+               },
+               function smokeTestCompactArgs(t){
+                       dojo.declare("tests._base.declare.fooBar2", null, {
+                               foo: "thonk"
+                       });
+                       var tmp = new tests._base.declare.fooBar2();
+                       t.is("thonk", tmp.foo);
+               },
+               function subclass(t){
+                       dojo.declare("tests._base.declare.tmp3", null, {
+                               foo: "thonk"
+                       });
+                       dojo.declare("tests._base.declare.tmp4", tests._base.declare.tmp3);
+                       var tmp = new tests._base.declare.tmp4();
+                       t.is("thonk", tmp.foo);
+               },
+               function subclassWithCtor(t){
+                       dojo.declare("tests._base.declare.tmp5", null, {
+                               constructor: function(){
+                                       this.foo = "blah";
+                               },
+                               foo: "thonk"
+                       });
+                       dojo.declare("tests._base.declare.tmp6", tests._base.declare.tmp5);
+                       var tmp = new tests._base.declare.tmp6();
+                       t.is("blah", tmp.foo);
+               },
+               function mixinSubclass(t){
+                       dojo.declare("tests._base.declare.tmp7", null, { 
+                               foo: "thonk" 
+                       });
+                       dojo.declare("tests._base.declare.tmp8", null, {
+                               constructor: function(){
+                                       this.foo = "blah";
+                               }
+                       });
+                       var tmp = new tests._base.declare.tmp8();
+                       t.is("blah", tmp.foo);
+                       dojo.declare("tests._base.declare.tmp9",
+                               [
+                                       tests._base.declare.tmp7, // prototypal
+                                       tests._base.declare.tmp8  // mixin
+                               ]);
+                       var tmp2 = new tests._base.declare.tmp9();
+                       t.is("blah", tmp2.foo);
+               },
+               function superclassRef(t){
+                       dojo.declare("tests._base.declare.tmp10", null, {
+                               foo: "thonk"
+                       });
+                       dojo.declare("tests._base.declare.tmp11", tests._base.declare.tmp10, {
+                               constructor: function(){
+                                       this.foo = "blah";
+                               }
+                       });
+                       var tmp = new tests._base.declare.tmp11();
+                       t.is("blah", tmp.foo);
+                       t.is("thonk", tests._base.declare.tmp11.superclass.foo);
+               },
+               function inheritedCall(t){
+                       var foo = "xyzzy";
+                       dojo.declare("tests._base.declare.tmp12", null, {
+                               foo: "thonk",
+                               bar: function(arg1, arg2){
+                                       if(arg1){
+                                               this.foo = arg1;
+                                       }
+                                       if(arg2){
+                                               foo = arg2;
+                                       }
+                               }
+                       });
+                       dojo.declare("tests._base.declare.tmp13", tests._base.declare.tmp12, {
+                               constructor: function(){
+                                       this.foo = "blah";
+                               }
+                       });
+                       var tmp = new tests._base.declare.tmp13();
+                       t.is("blah", tmp.foo);
+                       t.is("xyzzy", foo);
+                       tmp.bar("zot");
+                       t.is("zot", tmp.foo);
+                       t.is("xyzzy", foo);
+                       tmp.bar("trousers", "squiggle");
+                       t.is("trousers", tmp.foo);
+                       t.is("squiggle", foo);
+               },
+               function inheritedExplicitCall(t){
+                       var foo = "xyzzy";
+                       dojo.declare("tests._base.declare.tmp14", null, {
+                               foo: "thonk",
+                               bar: function(arg1, arg2){
+                                       if(arg1){
+                                               this.foo = arg1;
+                                       }
+                                       if(arg2){
+                                               foo = arg2;
+                                       }
+                               }
+                       });
+                       dojo.declare("tests._base.declare.tmp15", tests._base.declare.tmp14, {
+                               constructor: function(){
+                                       this.foo = "blah";
+                               },
+                               bar: function(arg1, arg2){
+                                       this.inherited("bar", arguments, [arg2, arg1]);
+                               },
+                               baz: function(arg1, arg2){
+                                       tests._base.declare.tmp15.superclass.bar.apply(this, arguments);
+                               }
+                       });
+                       var tmp = new tests._base.declare.tmp15();
+                       t.is("blah", tmp.foo);
+                       t.is("xyzzy", foo);
+                       tmp.baz("zot");
+                       t.is("zot", tmp.foo);
+                       t.is("xyzzy", foo);
+                       tmp.bar("trousers", "squiggle");
+                       t.is("squiggle", tmp.foo);
+                       t.is("trousers", foo);
+               },
+               function inheritedMixinCalls(t){
+                       dojo.declare("tests._base.declare.tmp16", null, {
+                               foo: "",
+                               bar: function(){
+                                       this.foo += "tmp16";
+                               }
+                       });
+                       dojo.declare("tests._base.declare.mixin16", null, {
+                               bar: function(){
+                                       this.inherited(arguments);
+                                       this.foo += ".mixin16";
+                               }
+                       });
+                       dojo.declare("tests._base.declare.mixin17", tests._base.declare.mixin16, {
+                               bar: function(){
+                                       this.inherited(arguments);
+                                       this.foo += ".mixin17";
+                               }
+                       });
+                       dojo.declare("tests._base.declare.tmp17", [tests._base.declare.tmp16, tests._base.declare.mixin17], {
+                               bar: function(){
+                                       this.inherited(arguments);
+                                       this.foo += ".tmp17";
+                               }
+                       });
+                       var tmp = new tests._base.declare.tmp17();
+                       tmp.bar();
+                       t.is("tmp16.mixin16.mixin17.tmp17", tmp.foo);
+               },
+               function mixinPreamble(t){
+                       var passed = false;
+                       dojo.declare("tests._base.declare.tmp16");
+                       new tests._base.declare.tmp16({ preamble: function(){ passed = true; } });
+                       t.t(passed);
+               }
+               // FIXME: there are still some permutations to test like:
+               //      - ctor arguments
+               //      - multi-level inheritance + L/R conflict checks
+       ]
+);
+
+}