// nodeunit

this.tests = {

    clone: {
        "2 args": function(test){
            //TODO: 2 args test
            test.done();        
        },
        "3 args": function(test){
            //TODO: 3 args test
            test.done();        
        },
        create: function(test){
            var c = clone.create({a:1});
                test.ok( c.hasOwnProperty('a') );
                test.equal( Object.getPrototypeOf(c), clone.prototype);
                test.strictEqual( Object.getOwnPropertyNames(c).length, 1);

            test.done();
        },

        __inits__: function(test){
            var obj = clone.create({
                getterCalls: 0
                },{
                __inits__: {
                    getterOnce: function(){
                        this.getterCalls++;
                        return 'G';
                    }  
                }
            });

            test.equal(obj.getterOnce, 'G');
            test.equal(obj.getterOnce, 'G');
            test.equal(obj.getterOnce, 'G');
            test.equal(obj.getterCalls, 1);

            test.done();
        }

    }
};

@@ -48,64 +48,778 @@
    %22
-2 args%22: function(test)%7B%0A            //TODO: 2 args test
+1 arg%22: function(test)%7B%0A            var p = %7Bp:%7B%7D%7D;%0A            var c = clone(p);%0A%0A            test.strictEqual( Object.getPrototypeOf(c), p);%0A            test.ok(!c.hasOwnProperty('p') );%0A            test.equal( Object.getOwnPropertyNames(c).length, 0);%0A            test.strictEqual(c.p, p.p);%0A%0A            test.done();%0A        %7D,%0A        %0A        %222 args%22: function(test)%7B%0A            var p = %7Bp:%7B%7D%7D, s = %7Bs:%7B%7D%7D;%0A            var c = clone(p,s);%0A%0A                test.strictEqual( Object.getPrototypeOf(c), p);%0A                test.ok( c.hasOwnProperty('s') );%0A                test.ok(!c.hasOwnProperty('p') );%0A                test.equal( Object.getOwnPropertyNames(c).length, 1);%0A                test.strictEqual(c.p, p.p);%0A                test.strictEqual(c.s, s.s);%0A
 %0A   
@@ -851,32 +851,41 @@
     %0A        %7D,%0A
+        %0A
         %223 args%22
@@ -918,27 +918,602 @@
     
-//TODO: 3 args test
+var p = %7Bp:%7B%7D%7D, s = %7Bs:%7B%7D%7D, b = %7Bb:%7B%7D%7D;%0A            var c = clone(p,s,b);%0A%0A                test.strictEqual( Object.getPrototypeOf(c), b);%0A                test.strictEqual( Object.getPrototypeOf(b), p);%0A                test.ok( c.hasOwnProperty('s') );%0A                test.ok(!c.hasOwnProperty('p') );%0A                test.ok(!c.hasOwnProperty('b') );%0A                test.equal( Object.getOwnPropertyNames(c).length, 1);%0A                test.strictEqual(c.p, p.p);%0A                test.strictEqual(c.s, s.s);            %0A                test.strictEqual(c.b, b.b);            %0A               
 %0A   
@@ -1534,32 +1534,32 @@
 done();        %0A
-
         %7D,%0A     
@@ -1545,32 +1545,41 @@
     %0A        %7D,%0A
+        %0A
         create: 

add tests