You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
143 lines
2.2 KiB
143 lines
2.2 KiB
require './_prepare' |
|
|
|
array = mod 'array' |
|
|
|
test 'from', -> |
|
|
|
array.from([1]).should.be.an.instanceOf Array |
|
array.from([1])[0].should.equal 1 |
|
|
|
# test 'clone', -> |
|
|
|
# a = [0, 1, 2] |
|
|
|
# b = array.clone a |
|
|
|
# b[0].should.equal 0 |
|
# b[1].should.equal 1 |
|
|
|
# b[0] = 3 |
|
|
|
# a[0].should.equal 0 |
|
|
|
test 'pluck', -> |
|
|
|
a = [0, 1, 2, 3] |
|
|
|
after = array.pluck a, 1 |
|
|
|
after.length.should.equal 3 |
|
|
|
after[0].should.equal 0 |
|
after[1].should.equal 2 |
|
after[2].should.equal 3 |
|
after.should.equal a |
|
|
|
test 'pluckMultiple', -> |
|
|
|
a = [0, 1, 2, 3, 4, 5, 6] |
|
|
|
array.pluckMultiple a, [0, 4, 2, 6] |
|
|
|
a.length.should.equal 3 |
|
a[0].should.equal 1 |
|
a[1].should.equal 3 |
|
a[2].should.equal 5 |
|
|
|
test 'pluckItem', -> |
|
|
|
a = [0, 1, 2, 3, 2, 4, 2] |
|
|
|
array.pluckItem a, 2 |
|
|
|
a[0].should.equal 0 |
|
a[1].should.equal 1 |
|
a[2].should.equal 3 |
|
a[3].should.equal 4 |
|
|
|
array.pluckItem([1], 2).length.should.equal 1 |
|
|
|
|
|
test 'pluckOneItem', -> |
|
|
|
a = [0, 1, 2, 3, 2, 4, 2] |
|
|
|
array.pluckOneItem a, 2 |
|
|
|
a[0].should.equal 0 |
|
a[1].should.equal 1 |
|
a[2].should.equal 3 |
|
a[3].should.equal 2 |
|
a[4].should.equal 4 |
|
a[5].should.equal 2 |
|
|
|
a = [1, 2] |
|
|
|
array.pluckOneItem a, 1 |
|
|
|
a.length.should.equal 1 |
|
a[0].should.equal 2 |
|
|
|
array.pluckOneItem([], 1).length.should.equal 0 |
|
|
|
array.pluckOneItem([1], 2).length.should.equal 1 |
|
|
|
test 'plcukByCallback', -> |
|
|
|
a = [0, 1, 2, 3] |
|
|
|
array.pluckByCallback a, (val, i) -> |
|
|
|
return yes if val is 2 |
|
|
|
return no |
|
|
|
a[0].should.equal 0 |
|
a[1].should.equal 1 |
|
a[2].should.equal 3 |
|
|
|
test 'injectByCallback', -> |
|
|
|
shouldInject = (valA, valB, toInject) -> |
|
|
|
unless valA? |
|
|
|
return yes if toInject <= valB |
|
|
|
return no |
|
|
|
unless valB? |
|
|
|
return yes if valA <= toInject |
|
|
|
return no |
|
|
|
return yes if valA <= toInject <= valB |
|
|
|
return no |
|
|
|
a = [0.5, 1, 2.5, 2.5, 2.75, 2.75, 3] |
|
|
|
array.injectByCallback a, 0, shouldInject |
|
|
|
a[0].should.equal 0 |
|
a[1].should.equal 0.5 |
|
a[7].should.equal 3 |
|
|
|
a = [0.5, 1, 2.5, 2.5, 2.75, 2.75, 3] |
|
|
|
array.injectByCallback a, 2.7, shouldInject |
|
|
|
a[0].should.equal 0.5 |
|
a[4].should.equal 2.7 |
|
a[5].should.equal 2.75 |
|
a[7].should.equal 3 |
|
|
|
a = [0.5, 1, 2.5, 2.5, 2.75, 2.75, 3] |
|
|
|
array.injectByCallback a, 3.2, shouldInject |
|
|
|
a[0].should.equal 0.5 |
|
a[4].should.equal 2.75 |
|
a[6].should.equal 3 |
|
a[7].should.equal 3.2 |