90 lines
1.8 KiB
JavaScript
90 lines
1.8 KiB
JavaScript
'use strict'
|
|
|
|
var o = require('../../ospec/ospec')
|
|
|
|
o.spec('stream', function () {
|
|
var prop
|
|
|
|
o.beforeEach(function () {
|
|
prop = require('../../stream')
|
|
})
|
|
|
|
o.spec('scan', function () {
|
|
var scan
|
|
|
|
o.beforeEach(function () {
|
|
scan = require('../scan')
|
|
})
|
|
|
|
o('defaults to seed', function () {
|
|
var parent = prop()
|
|
var child = scan(function (out, p) {
|
|
return out - p
|
|
}, 123, parent)
|
|
o(child()).equals(123)
|
|
})
|
|
|
|
o('accumulates values as expected', function () {
|
|
var parent = prop()
|
|
var child = scan(function (arr, p) {
|
|
return arr.concat(p)
|
|
}, [], parent)
|
|
|
|
parent(7)
|
|
parent('11')
|
|
parent(undefined)
|
|
parent({ a: 1 })
|
|
var result = child()
|
|
|
|
// deepEquals fails on arrays?
|
|
o(result[0]).equals(7)
|
|
o(result[1]).equals('11')
|
|
o(result[2]).equals(undefined)
|
|
o(result[3]).deepEquals({ a: 1 })
|
|
})
|
|
})
|
|
|
|
o.spec('scanMerge', function () {
|
|
var scanMerge
|
|
|
|
o.beforeEach(function () {
|
|
scanMerge = require('../scan-merge')
|
|
})
|
|
|
|
o('defaults to seed', function () {
|
|
var parent1 = prop()
|
|
var parent2 = prop()
|
|
|
|
var child = scanMerge([
|
|
[parent1, function (out, p1) {
|
|
return out + p1
|
|
}],
|
|
[parent2, function (out, p2) {
|
|
return out + p2
|
|
}]
|
|
], -10)
|
|
|
|
o(child()).equals(-10)
|
|
})
|
|
|
|
o('accumulates as expected', function () {
|
|
var parent1 = prop()
|
|
var parent2 = prop()
|
|
|
|
var child = scanMerge([
|
|
[parent1, function (out, p1) {
|
|
return out + p1
|
|
}],
|
|
[parent2, function (out, p2) {
|
|
return out + p2 + p2
|
|
}]
|
|
], 'a')
|
|
|
|
parent1('b')
|
|
parent2('c')
|
|
parent1('b')
|
|
|
|
o(child()).equals('abccb')
|
|
})
|
|
})
|
|
})
|