summaryrefslogtreecommitdiff
path: root/includes/js/dojo/tests/_base/lang.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/js/dojo/tests/_base/lang.js')
-rw-r--r--includes/js/dojo/tests/_base/lang.js180
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]);
+ }
+ }
+ ]
+);
+
+}