567 lines
13 KiB
CoffeeScript
Executable File
567 lines
13 KiB
CoffeeScript
Executable File
###
|
|
Test suite for node AND browser in one file
|
|
So, we are need some data from global
|
|
Its so wrong, but its OK for test
|
|
###
|
|
# resolve require from [window] or by require()
|
|
# _ = @_ ? require 'lodash'
|
|
|
|
lib_path = GLOBAL?.lib_path || ''
|
|
|
|
extend = require "#{lib_path}whet.extend"
|
|
|
|
describe 'whet.extend:', ->
|
|
|
|
str = int = arr = date = obj = deep = null
|
|
|
|
beforeEach ->
|
|
str = 'me a test'
|
|
int = 10
|
|
arr = [ 1, 'what', new Date( 81, 8, 4 )];
|
|
date = new Date( 81, 4, 13 );
|
|
|
|
obj =
|
|
str : str
|
|
int : int
|
|
arr : arr
|
|
date : date
|
|
|
|
deep =
|
|
ori : obj
|
|
layer :
|
|
int : 10
|
|
str : 'str'
|
|
date : new Date( 84, 5, 12 )
|
|
arr : [ 101, 'dude', new Date( 82, 10, 4 )]
|
|
deep :
|
|
str : obj.str
|
|
int : int
|
|
arr : obj.arr
|
|
date : new Date( 81, 7, 4 )
|
|
|
|
describe 'should merge string with:', ->
|
|
|
|
it 'string', ->
|
|
ori = 'what u gonna say';
|
|
target = extend ori, str
|
|
|
|
ori.should.eql 'what u gonna say'
|
|
str.should.eql 'me a test'
|
|
target.should.eql
|
|
'0' : 'm',
|
|
'1' : 'e',
|
|
'2' : ' ',
|
|
'3' : 'a',
|
|
'4' : ' ',
|
|
'5' : 't',
|
|
'6' : 'e',
|
|
'7' : 's',
|
|
'8' : 't'
|
|
|
|
it 'number', ->
|
|
ori = 'what u gonna say'
|
|
target = extend ori, int
|
|
|
|
ori.should.eql 'what u gonna say'
|
|
int.should.eql 10
|
|
target.should.eql {}
|
|
|
|
it 'array', ->
|
|
ori = 'what u gonna say'
|
|
target = extend ori, arr
|
|
|
|
ori.should.eql 'what u gonna say'
|
|
arr.should.eql [ 1, 'what', new Date( 81, 8, 4 )]
|
|
target.should.eql
|
|
'0' : 1,
|
|
'1' : 'what',
|
|
'2' : new Date( 81, 8, 4 )
|
|
|
|
it 'date', ->
|
|
ori = 'what u gonna say'
|
|
target = extend ori, date
|
|
|
|
ori.should.eql 'what u gonna say'
|
|
date.should.eql new Date( 81, 4, 13 )
|
|
target.should.eql new Date( 81, 4, 13 )
|
|
|
|
it 'object', ->
|
|
ori = 'what u gonna say'
|
|
target = extend ori, obj
|
|
|
|
ori.should.eql 'what u gonna say'
|
|
obj.should.eql
|
|
str : 'me a test',
|
|
int : 10,
|
|
arr : [ 1, 'what', new Date( 81, 8, 4 )],
|
|
date : new Date( 81, 4, 13 )
|
|
|
|
target.should.eql
|
|
str : 'me a test',
|
|
int : 10,
|
|
arr : [ 1, 'what', new Date( 81, 8, 4 )],
|
|
date : new Date( 81, 4, 13 )
|
|
|
|
describe 'should merge number with:', ->
|
|
|
|
it 'string', ->
|
|
ori = 20
|
|
target = extend ori, str
|
|
|
|
ori.should.eql 20
|
|
str.should.eql 'me a test'
|
|
target.should.eql
|
|
'0' : 'm',
|
|
'1' : 'e',
|
|
'2' : ' ',
|
|
'3' : 'a',
|
|
'4' : ' ',
|
|
'5' : 't',
|
|
'6' : 'e',
|
|
'7' : 's',
|
|
'8' : 't'
|
|
|
|
it 'number', ->
|
|
ori = 20
|
|
target = extend ori, int
|
|
|
|
ori.should.eql 20
|
|
int.should.eql 10
|
|
target.should.eql {}
|
|
|
|
it 'array', ->
|
|
ori = 20
|
|
target = extend ori, arr
|
|
|
|
ori.should.eql 20
|
|
arr.should.eql [ 1, 'what', new Date( 81, 8, 4 )]
|
|
target.should.eql
|
|
'0' : 1,
|
|
'1' : 'what',
|
|
'2' : new Date( 81, 8, 4 )
|
|
|
|
it 'date', ->
|
|
ori = 20
|
|
target = extend ori, date
|
|
|
|
ori.should.eql 20
|
|
date.should.eql new Date( 81, 4, 13 )
|
|
target.should.eql new Date( 81, 4, 13 )
|
|
|
|
it 'object', ->
|
|
ori = 20
|
|
target = extend ori, obj
|
|
|
|
ori.should.eql 20
|
|
obj.should.eql
|
|
str : 'me a test',
|
|
int : 10,
|
|
arr : [ 1, 'what', new Date( 81, 8, 4 )],
|
|
date : new Date( 81, 4, 13 )
|
|
|
|
target.should.eql
|
|
str : 'me a test',
|
|
int : 10,
|
|
arr : [ 1, 'what', new Date( 81, 8, 4 )],
|
|
date : new Date( 81, 4, 13 )
|
|
|
|
describe 'should merge array with:', ->
|
|
|
|
it 'string', ->
|
|
ori = [ 1, 2, 3, 4, 5, 6 ]
|
|
target = extend ori, str
|
|
|
|
ori.should.eql [ 'm', 'e', ' ', 'a', ' ', 't', 'e', 's', 't' ]
|
|
str.should.eql 'me a test'
|
|
target.should.eql
|
|
'0' : 'm',
|
|
'1' : 'e',
|
|
'2' : ' ',
|
|
'3' : 'a',
|
|
'4' : ' ',
|
|
'5' : 't',
|
|
'6' : 'e',
|
|
'7' : 's',
|
|
'8' : 't'
|
|
|
|
it 'number', ->
|
|
ori = [ 1, 2, 3, 4, 5, 6 ]
|
|
target = extend ori, int
|
|
|
|
ori.should.eql [ 1, 2, 3, 4, 5, 6 ]
|
|
int.should.eql 10
|
|
target.should.eql [ 1, 2, 3, 4, 5, 6 ]
|
|
|
|
it 'array', ->
|
|
ori = [ 1, 2, 3, 4, 5, 6 ]
|
|
target = extend ori, arr
|
|
|
|
ori.should.eql [ 1, 'what', new Date( 81, 8, 4 ), 4, 5, 6 ]
|
|
arr.should.eql [ 1, 'what', new Date( 81, 8, 4 )]
|
|
target.should.eql [ 1, 'what', new Date( 81, 8, 4 ), 4, 5, 6 ]
|
|
|
|
it 'date', ->
|
|
ori = [ 1, 2, 3, 4, 5, 6 ]
|
|
target = extend ori, date
|
|
|
|
ori.should.eql [ 1, 2, 3, 4, 5, 6 ]
|
|
date.should.eql new Date( 81, 4, 13 )
|
|
target.should.eql [ 1, 2, 3, 4, 5, 6 ]
|
|
|
|
it 'object', ->
|
|
ori = [ 1, 2, 3, 4, 5, 6 ]
|
|
target = extend ori, obj
|
|
|
|
ori.length.should.equal 6
|
|
ori[ 'str' ].should.eql 'me a test'
|
|
ori[ 'int' ].should.eql 10
|
|
ori[ 'arr' ].should.eql [ 1, 'what', new Date( 81, 8, 4 )]
|
|
ori[ 'date' ].should.eql new Date( 81, 4, 13 )
|
|
obj.should.eql
|
|
str : 'me a test',
|
|
int : 10,
|
|
arr : [ 1, 'what', new Date( 81, 8, 4 )],
|
|
date : new Date( 81, 4, 13 )
|
|
|
|
target.length.should.equal 6
|
|
target[ 'str' ].should.eql 'me a test'
|
|
target[ 'int' ].should.eql 10
|
|
target[ 'arr' ].should.eql [ 1, 'what', new Date( 81, 8, 4 )]
|
|
target[ 'date' ].should.eql new Date( 81, 4, 13 )
|
|
|
|
describe 'should merge date with:', ->
|
|
|
|
it 'string', ->
|
|
ori = new Date( 81, 9, 20 )
|
|
target = extend ori, str
|
|
|
|
ori.should.eql
|
|
'0' : 'm',
|
|
'1' : 'e',
|
|
'2' : ' ',
|
|
'3' : 'a',
|
|
'4' : ' ',
|
|
'5' : 't',
|
|
'6' : 'e',
|
|
'7' : 's',
|
|
'8' : 't'
|
|
|
|
str.should.eql 'me a test'
|
|
target.should.eql
|
|
'0' : 'm',
|
|
'1' : 'e',
|
|
'2' : ' ',
|
|
'3' : 'a',
|
|
'4' : ' ',
|
|
'5' : 't',
|
|
'6' : 'e',
|
|
'7' : 's',
|
|
'8' : 't'
|
|
|
|
it 'number', ->
|
|
ori = new Date( 81, 9, 20 )
|
|
target = extend ori, int
|
|
|
|
ori.should.eql {}
|
|
int.should.eql 10
|
|
target.should.eql {}
|
|
|
|
it 'array', ->
|
|
ori = new Date( 81, 9, 20 )
|
|
target = extend ori, arr
|
|
|
|
ori.should.eql [ 1, 'what', new Date( 81, 8, 4 )]
|
|
int.should.eql 10
|
|
target.should.eql [ 1, 'what', new Date( 81, 8, 4 )]
|
|
|
|
it 'date', ->
|
|
ori = new Date( 81, 9, 20 )
|
|
target = extend ori, date
|
|
|
|
ori.should.eql {}
|
|
date.should.eql new Date( 81, 4, 13 )
|
|
target.should.eql {}
|
|
|
|
it 'object', ->
|
|
ori = new Date( 81, 9, 20 )
|
|
target = extend ori, obj
|
|
|
|
ori.should.eql
|
|
str : 'me a test',
|
|
int : 10,
|
|
arr : [ 1, 'what', new Date( 81, 8, 4 )],
|
|
date : new Date( 81, 4, 13 )
|
|
|
|
obj.should.eql
|
|
str : 'me a test',
|
|
int : 10,
|
|
arr : [ 1, 'what', new Date( 81, 8, 4 )],
|
|
date : new Date( 81, 4, 13 )
|
|
|
|
target.should.eql
|
|
str : 'me a test',
|
|
int : 10,
|
|
arr : [ 1, 'what', new Date( 81, 8, 4 )],
|
|
date : new Date( 81, 4, 13 )
|
|
|
|
describe 'should merge object with:', ->
|
|
|
|
it 'string', ->
|
|
ori =
|
|
str : 'no shit'
|
|
int : 76
|
|
arr : [ 1, 2, 3, 4 ]
|
|
date : new Date( 81, 7, 26 )
|
|
|
|
target = extend ori, str
|
|
|
|
ori.should.eql
|
|
'0' : 'm',
|
|
'1' : 'e',
|
|
'2' : ' ',
|
|
'3' : 'a',
|
|
'4' : ' ',
|
|
'5' : 't',
|
|
'6' : 'e',
|
|
'7' : 's',
|
|
'8' : 't',
|
|
str: 'no shit',
|
|
int: 76,
|
|
arr: [ 1, 2, 3, 4 ],
|
|
date: new Date( 81, 7, 26 )
|
|
|
|
str.should.eql 'me a test'
|
|
target.should.eql
|
|
'0' : 'm',
|
|
'1' : 'e',
|
|
'2' : ' ',
|
|
'3' : 'a',
|
|
'4' : ' ',
|
|
'5' : 't',
|
|
'6' : 'e',
|
|
'7' : 's',
|
|
'8' : 't',
|
|
str: 'no shit',
|
|
int: 76,
|
|
arr: [ 1, 2, 3, 4 ],
|
|
date: new Date( 81, 7, 26 )
|
|
|
|
it 'number', ->
|
|
ori =
|
|
str : 'no shit',
|
|
int : 76,
|
|
arr : [ 1, 2, 3, 4 ],
|
|
date : new Date( 81, 7, 26 )
|
|
|
|
target = extend ori, int
|
|
|
|
ori.should.eql
|
|
str : 'no shit',
|
|
int : 76,
|
|
arr : [ 1, 2, 3, 4 ],
|
|
date : new Date( 81, 7, 26 )
|
|
|
|
int.should.eql 10
|
|
target.should.eql
|
|
str : 'no shit',
|
|
int : 76,
|
|
arr : [ 1, 2, 3, 4 ],
|
|
date : new Date( 81, 7, 26 )
|
|
|
|
it 'array', ->
|
|
ori =
|
|
str : 'no shit',
|
|
int : 76,
|
|
arr : [ 1, 2, 3, 4 ],
|
|
date : new Date( 81, 7, 26 )
|
|
|
|
target = extend ori, arr
|
|
|
|
ori.should.eql
|
|
'0' : 1,
|
|
'1' : 'what',
|
|
'2' : new Date( 81, 8, 4 ),
|
|
str : 'no shit',
|
|
int : 76,
|
|
arr : [ 1, 2, 3, 4 ],
|
|
date : new Date( 81, 7, 26 )
|
|
|
|
arr.should.eql [ 1, 'what', new Date( 81, 8, 4 )]
|
|
target.should.eql
|
|
'0' : 1,
|
|
'1' : 'what',
|
|
'2' : new Date( 81, 8, 4 ),
|
|
str : 'no shit',
|
|
int : 76,
|
|
arr : [ 1, 2, 3, 4 ],
|
|
date : new Date( 81, 7, 26 )
|
|
|
|
it 'date', ->
|
|
ori =
|
|
str : 'no shit',
|
|
int : 76,
|
|
arr : [ 1, 2, 3, 4 ],
|
|
date : new Date( 81, 7, 26 )
|
|
|
|
target = extend ori, date
|
|
|
|
ori.should.eql
|
|
str : 'no shit',
|
|
int : 76,
|
|
arr : [ 1, 2, 3, 4 ],
|
|
date : new Date( 81, 7, 26 )
|
|
|
|
date.should.eql new Date( 81, 4, 13 )
|
|
target.should.eql
|
|
str : 'no shit',
|
|
int : 76,
|
|
arr : [ 1, 2, 3, 4 ],
|
|
date : new Date( 81, 7, 26 )
|
|
|
|
it 'object', ->
|
|
ori =
|
|
str : 'no shit',
|
|
int : 76,
|
|
arr : [ 1, 2, 3, 4 ],
|
|
date : new Date( 81, 7, 26 )
|
|
|
|
target = extend ori, obj
|
|
|
|
ori.should.eql
|
|
str : 'me a test',
|
|
int : 10,
|
|
arr : [ 1, 'what', new Date( 81, 8, 4 )],
|
|
date : new Date( 81, 4, 13 )
|
|
|
|
obj.should.eql
|
|
str : 'me a test',
|
|
int : 10,
|
|
arr : [ 1, 'what', new Date( 81, 8, 4 )],
|
|
date : new Date( 81, 4, 13 )
|
|
|
|
target.should.eql
|
|
str : 'me a test',
|
|
int : 10,
|
|
arr : [ 1, 'what', new Date( 81, 8, 4 )],
|
|
date : new Date( 81, 4, 13 )
|
|
|
|
describe 'should make deep clone: ', ->
|
|
|
|
it 'object with object', ->
|
|
ori =
|
|
str : 'no shit',
|
|
int : 76,
|
|
arr : [ 1, 2, 3, 4 ],
|
|
date : new Date( 81, 7, 26 )
|
|
|
|
target = extend true, ori, deep
|
|
|
|
ori.should.eql
|
|
str : 'no shit',
|
|
int : 76,
|
|
arr : [ 1, 2, 3, 4 ],
|
|
date : new Date( 81, 7, 26 ),
|
|
ori :
|
|
str : 'me a test',
|
|
int : 10,
|
|
arr : [ 1, 'what', new Date( 81, 8, 4 )],
|
|
date : new Date( 81, 4, 13 )
|
|
layer :
|
|
int : 10,
|
|
str : 'str',
|
|
date : new Date( 84, 5, 12 ),
|
|
arr : [ 101, 'dude', new Date( 82, 10, 4 )],
|
|
deep :
|
|
str : 'me a test',
|
|
int : 10,
|
|
arr : [ 1, 'what', new Date( 81, 8, 4 )],
|
|
date : new Date( 81, 7, 4 )
|
|
|
|
deep.should.eql
|
|
ori :
|
|
str : 'me a test',
|
|
int : 10,
|
|
arr : [ 1, 'what', new Date( 81, 8, 4 )],
|
|
date : new Date( 81, 4, 13 )
|
|
layer :
|
|
int : 10,
|
|
str : 'str',
|
|
date : new Date( 84, 5, 12 ),
|
|
arr : [ 101, 'dude', new Date( 82, 10, 4 )],
|
|
deep :
|
|
str : 'me a test',
|
|
int : 10,
|
|
arr : [ 1, 'what', new Date( 81, 8, 4 )],
|
|
date : new Date( 81, 7, 4 )
|
|
|
|
target.should.eql
|
|
str : 'no shit',
|
|
int : 76,
|
|
arr : [ 1, 2, 3, 4 ],
|
|
date : new Date( 81, 7, 26 ),
|
|
ori :
|
|
str : 'me a test',
|
|
int : 10,
|
|
arr : [ 1, 'what', new Date( 81, 8, 4 )],
|
|
date : new Date( 81, 4, 13 )
|
|
layer :
|
|
int : 10,
|
|
str : 'str',
|
|
date : new Date( 84, 5, 12 ),
|
|
arr : [ 101, 'dude', new Date( 82, 10, 4 )],
|
|
deep :
|
|
str : 'me a test',
|
|
int : 10,
|
|
arr : [ 1, 'what', new Date( 81, 8, 4 )],
|
|
date : new Date( 81, 7, 4 )
|
|
|
|
target.layer.deep = 339;
|
|
deep.should.eql
|
|
ori :
|
|
str : 'me a test',
|
|
int : 10,
|
|
arr : [ 1, 'what', new Date( 81, 8, 4 )],
|
|
date : new Date( 81, 4, 13 )
|
|
layer :
|
|
int : 10,
|
|
str : 'str',
|
|
date : new Date( 84, 5, 12 ),
|
|
arr : [ 101, 'dude', new Date( 82, 10, 4 )],
|
|
deep :
|
|
str : 'me a test',
|
|
int : 10,
|
|
arr : [ 1, 'what', new Date( 81, 8, 4 )],
|
|
date : new Date( 81, 7, 4 )
|
|
|
|
###
|
|
NEVER USE EXTEND WITH THE ABOVE SITUATION
|
|
###
|
|
|
|
describe 'must pass additional test: ', ->
|
|
|
|
it 'should merge objects with \'null\' and \'undefined\'', ->
|
|
ori =
|
|
a : 10
|
|
b : null
|
|
c : 'test data'
|
|
d : undefined
|
|
|
|
additional =
|
|
x : 'googol'
|
|
y : 8939843
|
|
z : null
|
|
az : undefined
|
|
|
|
target = extend ori, additional
|
|
target.should.to.be.eql
|
|
a : 10
|
|
b : null
|
|
c : 'test data'
|
|
d : undefined
|
|
x : 'googol'
|
|
y : 8939843
|
|
z : null
|
|
az : undefined
|
|
|
|
|