diff options
Diffstat (limited to 'includes/js/dojo/tests/_base/connect.js')
-rw-r--r-- | includes/js/dojo/tests/_base/connect.js | 225 |
1 files changed, 0 insertions, 225 deletions
diff --git a/includes/js/dojo/tests/_base/connect.js b/includes/js/dojo/tests/_base/connect.js deleted file mode 100644 index 3761861..0000000 --- a/includes/js/dojo/tests/_base/connect.js +++ /dev/null @@ -1,225 +0,0 @@ -if(!dojo._hasResource["tests._base.connect"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. -dojo._hasResource["tests._base.connect"] = true; -dojo.provide("tests._base.connect"); - -hub = function(){ -} - -failures = 0; -bad = function(){ - failures++; -} - -good = function(){ -} - -// make 'iterations' connections to hub -// roughly half of which will be to 'good' and -// half to 'bad' -// all connections to 'bad' are disconnected -// test can then be performed on the values -// 'failures' and 'successes' -markAndSweepTest = function(iterations){ - var marked = []; - // connections - for(var i=0; i<iterations; i++){ - if(Math.random() < 0.5){ - marked.push(dojo.connect('hub', bad)); - }else{ - dojo.connect('hub', good); - } - } - // Randomize markers (only if the count isn't very high) - if(i < Math.pow(10, 4)){ - var rm = [ ]; - while(marked.length){ - var m = Math.floor(Math.random() * marked.length); - rm.push(marked[m]); - marked.splice(m, 1); - } - marked = rm; - } - for(var m=0; m<marked.length; m++){ - dojo.disconnect(marked[m]); - } - // test - failures = 0; - hub(); - // return number of disconnected functions that fired (should be 0) - return failures; -} - -markAndSweepSubscribersTest = function(iterations){ - var topic = "hubbins"; - var marked = []; - // connections - for(var i=0; i<iterations; i++){ - if(Math.random() < 0.5){ - marked.push(dojo.subscribe(topic, bad)); - }else{ - dojo.subscribe(topic, good); - } - } - // Randomize markers (only if the count isn't very high) - if(i < Math.pow(10, 4)){ - var rm = [ ]; - while(marked.length){ - var m = Math.floor(Math.random() * marked.length); - rm.push(marked[m]); - marked.splice(m, 1); - } - marked = rm; - } - for(var m=0; m<marked.length; m++){ - dojo.unsubscribe(marked[m]); - } - // test - failures = 0; - dojo.publish(topic); - // return number of unsubscribed functions that fired (should be 0) - return failures; -} - -tests.register("tests._base.connect", - [ - function smokeTest(t){ - // foo sets ok to false - var ok = false; - var foo = { "foo": function(){ ok=false; } }; - // connected function sets ok to true - dojo.connect(foo, "foo", null, function(){ ok=true; }); - foo.foo(); - t.is(true, ok); - }, - function basicTest(t) { - var out = ''; - var obj = { - foo: function() { - out += 'foo'; - }, - bar: function() { - out += 'bar'; - }, - baz: function() { - out += 'baz'; - } - }; - // - var foobar = dojo.connect(obj, "foo", obj, "bar"); - dojo.connect(obj, "bar", obj, "baz"); - // - out = ''; - obj.foo(); - t.is('foobarbaz', out); - // - out = ''; - obj.bar(); - t.is('barbaz', out); - // - out = ''; - obj.baz(); - t.is('baz', out); - // - dojo.connect(obj, "foo", obj, "baz"); - dojo.disconnect(foobar); - // - out = ''; - obj.foo(); - t.is('foobaz', out); - // - out = ''; - obj.bar(); - t.is('barbaz', out); - // - out = ''; - obj.baz(); - t.is('baz', out); - }, - function hubConnectDisconnect1000(t){ - t.is(0, markAndSweepTest(1000)); - }, - function args4Test(t){ - // standard 4 args test - var ok, obj = { foo: function(){ok=false;}, bar: function(){ok=true} }; - dojo.connect(obj, "foo", obj, "bar"); - obj.foo(); - t.is(true, ok); - }, - function args3Test(t){ - // make some globals - var ok; - dojo.global["gFoo"] = function(){ok=false;}; - dojo.global["gOk"] = function(){ok=true;}; - // 3 arg shorthand for globals (a) - var link = dojo.connect("gFoo", null, "gOk"); - gFoo(); - dojo.disconnect(link); - t.is(true, ok); - // 3 arg shorthand for globals (b) - link = dojo.connect(null, "gFoo", "gOk"); - gFoo(); - dojo.disconnect(link); - t.is(true, ok); - // verify disconnections - gFoo(); - t.is(false, ok); - }, - function args2Test(t){ - // make some globals - var ok; - dojo.global["gFoo"] = function(){ok=false;}; - dojo.global["gOk"] = function(){ok=true;}; - // 2 arg shorthand for globals - var link = dojo.connect("gFoo", "gOk"); - gFoo(); - dojo.disconnect(link); - t.is(true, ok); - // 2 arg shorthand for globals, alternate scoping - link = dojo.connect("gFoo", gOk); - gFoo(); - dojo.disconnect(link); - t.is(true, ok); - }, - function scopeTest1(t){ - var foo = { ok: true, foo: function(){this.ok=false;} }; - var bar = { ok: false, bar: function(){this.ok=true} }; - // link foo.foo to bar.bar with natural scope - var link = dojo.connect(foo, "foo", bar, "bar"); - foo.foo(); - t.is(false, foo.ok); - t.is(true, bar.ok); - }, - function scopeTest2(t){ - var foo = { ok: true, foo: function(){this.ok=false;} }; - var bar = { ok: false, bar: function(){this.ok=true} }; - // link foo.foo to bar.bar such that scope is always 'foo' - var link = dojo.connect(foo, "foo", bar.bar); - foo.foo(); - t.is(true, foo.ok); - t.is(false, bar.ok); - }, - function connectPublisher(t){ - var foo = { inc: 0, foo: function(){ this.inc++; } }; - var bar = { inc: 0, bar: function(){ this.inc++; } }; - var c1h = dojo.connectPublisher("/blah", foo, "foo"); - var c2h = dojo.connectPublisher("/blah", foo, "foo"); - dojo.subscribe("/blah", bar, "bar"); - foo.foo(); - t.is(1, foo.inc); - t.is(2, bar.inc); - dojo.disconnect(c1h); - foo.foo(); - t.is(2, foo.inc); - t.is(3, bar.inc); - dojo.disconnect(c2h); - foo.foo(); - t.is(3, foo.inc); - t.is(3, bar.inc); - }, - function publishSubscribe1000(t){ - t.is(markAndSweepSubscribersTest(1000), 0); - } - ] -); - -} |