]> git.pond.sub.org Git - eow/blobdiff - static/dojo-release-1.1.1/dojo/tests/_base/lang.js
add Dojo 1.1.1
[eow] / static / dojo-release-1.1.1 / dojo / tests / _base / lang.js
diff --git a/static/dojo-release-1.1.1/dojo/tests/_base/lang.js b/static/dojo-release-1.1.1/dojo/tests/_base/lang.js
new file mode 100644 (file)
index 0000000..38acbff
--- /dev/null
@@ -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]);
+                       }
+               } 
+       ]
+);
+
+}