summaryrefslogtreecommitdiff
path: root/includes/js/dojo/tests/_base/declare.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/js/dojo/tests/_base/declare.js')
-rw-r--r--includes/js/dojo/tests/_base/declare.js197
1 files changed, 197 insertions, 0 deletions
diff --git a/includes/js/dojo/tests/_base/declare.js b/includes/js/dojo/tests/_base/declare.js
new file mode 100644
index 0000000..11720ec
--- /dev/null
+++ b/includes/js/dojo/tests/_base/declare.js
@@ -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
+ ]
+);
+
+}