| require './_prepare' | 
|   | 
| object = mod 'object' | 
|   | 
| test 'isBareObject', -> | 
|   | 
|     object.isBareObject('a').should.equal false | 
|   | 
|     object.isBareObject({'a': 'a'}).should.equal true | 
|   | 
| test 'typeOf', -> | 
|   | 
|     object.typeOf('s').should.equal 'string' | 
|     object.typeOf(0).should.equal 'number' | 
|     object.typeOf(false).should.equal 'boolean' | 
|     object.typeOf({}).should.equal 'object' | 
|     object.typeOf(arguments).should.equal 'arguments' | 
|     object.typeOf([]).should.equal 'array' | 
|   | 
| test 'empty', -> | 
|   | 
|     o = | 
|   | 
|         a: 1 | 
|         b: 2 | 
|   | 
|   | 
|     object.empty o | 
|   | 
|     o.should.not.have.property 'a' | 
|     o.should.not.have.property 'b' | 
|   | 
| test 'fastEmpty', -> | 
|   | 
|     o = | 
|         a: 1 | 
|         b: 2 | 
|   | 
|   | 
|     object.fastEmpty o | 
|   | 
|     o.should.not.have.property 'a' | 
|     o.should.not.have.property 'b' | 
|   | 
| test 'clone', -> | 
|   | 
|     object.clone([1])[0].should.equal 1 | 
|     object.clone({a:1}).a.should.equal 1 | 
|   | 
|     o = {a: 1} | 
|   | 
|     object.clone(o).should.not.equal o | 
|   | 
| test 'clone [include prototype]', -> | 
|   | 
|     class C | 
|   | 
|         constructor: (@a) -> | 
|   | 
|         sayA: -> @a + 'a' | 
|   | 
|     a = new C 'a' | 
|   | 
|     a.sayA().should.equal 'aa' | 
|   | 
|     b = object.clone a, yes | 
|   | 
|     b.should.not.equal a | 
|   | 
|     b.constructor.should.equal C | 
|   | 
|     b.a.should.equal 'a' | 
|   | 
|     b.a = 'a2' | 
|   | 
|     b.sayA().should.equal 'a2a' | 
|   | 
| test 'clone [without prototype]', -> | 
|   | 
|     class C | 
|   | 
|         constructor: (@a) -> | 
|   | 
|         sayA: -> @a + 'a' | 
|   | 
|     a = new C 'a' | 
|   | 
|     a.sayA().should.equal 'aa' | 
|   | 
|     b = object.clone a, no | 
|   | 
|     b.should.equal a | 
|   | 
| test 'overrideOnto [basic]', -> | 
|   | 
|     onto = | 
|         a: 'a' | 
|         b: | 
|             c: 'c' | 
|             d: | 
|                 e: 'e' | 
|   | 
|     what = | 
|         a: 'a2' | 
|         b: | 
|             c: 'c2' | 
|             d: | 
|                 f: 'f2' | 
|   | 
|     object.overrideOnto onto, what | 
|   | 
|     onto.a.should.equal 'a2' | 
|     onto.b.should.have.property 'c' | 
|     onto.b.c.should.equal 'c2' | 
|     onto.b.d.should.not.have.property 'f' | 
|     onto.b.d.e.should.equal 'e' | 
|   | 
| test 'override', -> | 
|   | 
|     onto = | 
|   | 
|         a: 'a' | 
|   | 
|         b: | 
|   | 
|             c: 'c' | 
|   | 
|             d: | 
|   | 
|                 e: 'e' | 
|   | 
|     what = | 
|   | 
|         a: 'a2' | 
|   | 
|         b: | 
|   | 
|             c: 'c2' | 
|   | 
|             d: | 
|   | 
|                 f: 'f2' | 
|   | 
|   | 
|     onto2 = object.override onto, what | 
|   | 
|     onto2.a.should.equal 'a2' | 
|     onto2.b.should.have.property 'c' | 
|     onto2.b.c.should.equal 'c2' | 
|     onto2.b.d.should.not.have.property 'f' | 
|     onto2.b.d.e.should.equal 'e' | 
|   | 
|     onto.should.not.equal onto2 | 
|   | 
| do -> | 
|   | 
|     what = | 
|   | 
|         a: 'a2' | 
|   | 
|         c: -> | 
|   | 
|         z: 'z' | 
|   | 
|         y: | 
|   | 
|             a: 'a' | 
|   | 
|     onto = | 
|   | 
|         a: 'a' | 
|   | 
|         b: 'b' | 
|   | 
|     test 'appendOnto [basic]', -> | 
|   | 
|         object.appendOnto onto, what | 
|   | 
|         onto.a.should.equal 'a2' | 
|         onto.b.should.equal 'b' | 
|         onto.z.should.equal 'z' | 
|   | 
|     test "appendOnto [shallow copies instances]", -> | 
|   | 
|         onto.c.should.be.instanceof Function | 
|         onto.c.should.equal what.c | 
|   | 
|   | 
|     test "appendOnto [clones objects]", -> | 
|   | 
|         onto.should.have.property 'y' | 
|         onto.y.a.should.equal 'a' | 
|         onto.y.should.not.equal what.y | 
|   | 
| test 'groupProps', -> | 
|   | 
|     obj = | 
|   | 
|         a1: '1' | 
|         a2: '2' | 
|   | 
|         b1: '1' | 
|         b2: '2' | 
|   | 
|         c1: '1' | 
|         c2: '2' | 
|   | 
|         rest1: '1' | 
|         rest2: '2' | 
|   | 
|     groups = object.groupProps obj, | 
|   | 
|         a: ['a1', 'a2'] | 
|   | 
|         b: [/^b[0-9]+$/] | 
|   | 
|         c: (key) -> key[0] is 'c' | 
|   | 
|     groups.a.should.have.property 'a1' | 
|     groups.a.a1.should.equal '1' | 
|   | 
|     groups.a.should.have.property 'a2' | 
|   | 
|     groups.b.should.have.property 'b1' | 
|     groups.b.should.have.property 'b2' | 
|   | 
|     groups.c.should.have.property 'c1' | 
|     groups.c.should.have.property 'c2' | 
|   | 
|     groups.rest.should.have.property 'rest1' | 
|     groups.rest.should.have.property 'rest1' | 
|   | 
|     groups.rest.should.not.have.property 'c1' |