New file |
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]); |
} |
} |
] |
); |
|
} |