Opal-Estate-Pro/node_modules/whet.extend/test/extend_test.coffee
2019-09-13 11:27:52 +07:00

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