diff options
Diffstat (limited to 'includes/js/dojo/tests/_base/lang.js')
-rw-r--r-- | includes/js/dojo/tests/_base/lang.js | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/includes/js/dojo/tests/_base/lang.js b/includes/js/dojo/tests/_base/lang.js new file mode 100644 index 0000000..38acbff --- /dev/null +++ b/includes/js/dojo/tests/_base/lang.js @@ -0,0 +1,180 @@ +if(!dojo._hasResource["tests._base.lang"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. +dojo._hasResource["tests._base.lang"] = true; +dojo.provide("tests._base.lang"); + +tests.register("tests._base.lang", + [ + function mixin(t){ + var src = { + foo: function(){ + t.debug("foo"); + }, + bar: "bar" + }; + var dest = {}; + dojo.mixin(dest, src); + t.assertEqual("function", typeof dest["foo"]); + t.assertEqual("string", typeof dest["bar"]); + }, + + function extend(t){ + var src = { + foo: function(){ + t.debug("foo"); + }, + bar: "bar" + }; + function dest(){} + dojo.extend(dest, src); + var test = new dest(); + t.assertEqual("function", typeof test["foo"]); + t.assertEqual("string", typeof test["bar"]); + }, + + function isObject(t){ + t.assertFalse(dojo.isObject(true)); + t.assertFalse(dojo.isObject(false)); + t.assertFalse(dojo.isObject("foo")); + t.assertTrue(dojo.isObject(new String("foo"))); + t.assertTrue(dojo.isObject(null)); + t.assertTrue(dojo.isObject({})); + t.assertTrue(dojo.isObject([])); + t.assertTrue(dojo.isObject(new Array())); + }, + + function isArray(t){ + t.assertTrue(dojo.isArray([])); + t.assertTrue(dojo.isArray(new Array())); + t.assertFalse(dojo.isArray({})); + }, + + function isArrayLike(t){ + t.assertFalse(dojo.isArrayLike("thinger")); + t.assertTrue(dojo.isArrayLike(new Array())); + t.assertFalse(dojo.isArrayLike({})); + t.assertTrue(dojo.isArrayLike(arguments)); + }, + + function isString(t){ + t.assertFalse(dojo.isString(true)); + t.assertFalse(dojo.isString(false)); + t.assertTrue(dojo.isString("foo")); + t.assertTrue(dojo.isString(new String("foo"))); + t.assertFalse(dojo.isString(null)); + t.assertFalse(dojo.isString({})); + t.assertFalse(dojo.isString([])); + }, + + function partial(t){ + var scope = { foo: "bar" }; + var scope2 = { foo: "baz" }; + function thinger(arg1, arg2){ + return [this.foo, arg1, arg2]; + } + + var st1 = dojo.partial(thinger); + t.assertEqual("bar", st1.call(scope)[0]); + t.assertEqual(undefined, st1()[0]); + var st2 = dojo.partial(thinger, "foo", "bar"); + t.assertEqual("bar", st2()[2]); + var st3 = dojo.partial(thinger, "foo", "bar"); + }, + + function nestedPartial(t){ + function thinger(arg1, arg2){ + return [arg1, arg2]; + } + + var st1 = dojo.partial(thinger, "foo"); + t.assertEqual(undefined, st1()[1]); + t.assertEqual("bar", st1("bar")[1]); + + // partials can accumulate + var st2 = dojo.partial(st1, "thud"); + t.assertEqual("foo", st2()[0]); + t.assertEqual("thud", st2()[1]); + }, + + function hitch(t){ + var scope = { foo: "bar" }; + var scope2 = { foo: "baz" }; + function thinger(){ + return [this.foo, arguments.length]; + } + + var st1 = dojo.hitch(scope, thinger); + t.assertEqual("bar", st1()[0]); + t.assertEqual(0, st1()[1]); + + var st2 = dojo.hitch(scope2, thinger); + t.assertEqual("baz", st2()[0]); + t.assertEqual(0, st1()[1]); + t.assertEqual(1, st1("blah")[1]); + + // st2 should be "scope proof" + t.assertEqual("baz", st2.call(scope)[0]); + }, + + function hitchWithArgs(t){ + var scope = { foo: "bar" }; + var scope2 = { foo: "baz" }; + function thinger(){ + return [this.foo, arguments.length]; + } + + var st1 = dojo.hitch(scope, thinger, "foo", "bar"); + t.assertEqual("bar", st1()[0]); + t.assertEqual(2, st1()[1]); + var st2 = dojo.hitch(scope2, thinger, "foo", "bar"); + t.assertEqual("baz", st2()[0]); + t.assertEqual(2, st2()[1]); + }, + + function hitchAsPartial(t){ + var scope = { foo: "bar" }; + var scope2 = { foo: "baz" }; + function thinger(arg1, arg2){ + return [this.foo, arg1, arg2]; + } + + var st1 = dojo.hitch(null, thinger); + t.assertEqual("bar", st1.call(scope)[0]); + t.assertEqual(undefined, st1()[0]); + var st2 = dojo.hitch(null, thinger, "foo", "bar"); + t.assertEqual("bar", st2()[2]); + var st3 = dojo.hitch(null, thinger, "foo", "bar"); + }, + + function _toArray(t){ + var obj1 = [ 'foo', 'bar', 'spam', 'ham' ]; + + function thinger(){ + return dojo._toArray(arguments); + } + var obj2 = thinger.apply(this, obj1); + t.assertEqual(obj1[0], obj2[0]); + }, + + function clone(t) { + var obj1 = {foo: 'bar', answer: 42, jan102007: new Date(2007, 0, 10), + baz: { + a: null, + b: [ + 1, "b", 2.3, true, false + //, function(){ return 4; }, /\d+/gm + ] + } + }; + var obj2 = dojo.clone(obj1); + t.assertEqual(obj1.foo, obj2.foo); + t.assertEqual(obj1.answer, obj2.answer); + t.assertEqual(obj1.jan102007, obj2.jan102007); + t.assertEqual(obj1.baz.a, obj2.baz.a); + for(var i = 0; i < obj1.baz.b.length; ++i){ + t.assertEqual(obj1.baz.b[i], obj2.baz.b[i]); + } + } + ] +); + +} |