198 lines
5.2 KiB
JavaScript
198 lines
5.2 KiB
JavaScript
|
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
|
||
|
]
|
||
|
);
|
||
|
|
||
|
}
|