96 lines
2.2 KiB
Lua
96 lines
2.2 KiB
Lua
lust = require 'tests/lust'
|
|
Rx = require 'rx'
|
|
|
|
for _, fn in pairs({'describe', 'it', 'test', 'expect', 'spy', 'before', 'after'}) do
|
|
_G[fn] = lust[fn]
|
|
end
|
|
|
|
observableSpy = function(observable)
|
|
local onNext = spy()
|
|
local onError = spy()
|
|
local onCompleted = spy()
|
|
local observer = Rx.Observer.create(onNext, onError, onCompleted)
|
|
observable:subscribe(observer)
|
|
return onNext, onError, onCompleted
|
|
end
|
|
|
|
lust.paths['produce'] = {
|
|
'nothing',
|
|
'error',
|
|
test = function(observable, ...)
|
|
local args = {...}
|
|
local values
|
|
if type(args[1]) ~= 'table' then
|
|
values = {}
|
|
for i = 1, math.max(#args, 1) do
|
|
table.insert(values, {args[i]})
|
|
end
|
|
else
|
|
values = args[1]
|
|
end
|
|
|
|
local onNext, onError, onCompleted = observableSpy(observable)
|
|
expect(observable).to.be.an(Rx.Observable)
|
|
expect(onNext).to.equal(values)
|
|
expect(#onError).to.equal(0)
|
|
expect(#onCompleted).to.equal(1)
|
|
return true
|
|
end
|
|
}
|
|
|
|
lust.paths['nothing'] = {
|
|
f = function(observable)
|
|
local onNext, onError, onCompleted = observableSpy(observable)
|
|
expect(observable).to.be.an(Rx.Observable)
|
|
expect(#onNext).to.equal(0)
|
|
expect(#onError).to.equal(0)
|
|
expect(#onCompleted).to.equal(1)
|
|
return true
|
|
end
|
|
}
|
|
|
|
lust.paths['error'] = {
|
|
f = function(observable)
|
|
local _, onError = observableSpy(observable)
|
|
expect(observable).to.be.an(Rx.Observable)
|
|
expect(#onError).to.equal(1)
|
|
return true
|
|
end
|
|
}
|
|
|
|
table.insert(lust.paths['to'], 'produce')
|
|
|
|
if arg[1] then
|
|
arg[1] = arg[1]:gsub('^(tests/)', ''):gsub('%.lua$', '')
|
|
dofile('tests/' .. arg[1] .. '.lua')
|
|
else
|
|
local files = {
|
|
'observer',
|
|
'observable',
|
|
'subscription',
|
|
'subject',
|
|
'asyncsubject',
|
|
'behaviorsubject',
|
|
'replaysubject'
|
|
}
|
|
|
|
for i, file in ipairs(files) do
|
|
dofile('tests/' .. file .. '.lua')
|
|
if next(files, i) then
|
|
print()
|
|
end
|
|
end
|
|
end
|
|
|
|
local red = string.char(27) .. '[31m'
|
|
local green = string.char(27) .. '[32m'
|
|
local normal = string.char(27) .. '[0m'
|
|
|
|
if lust.errors > 0 then
|
|
io.write(red .. lust.errors .. normal .. ' failed, ')
|
|
end
|
|
|
|
print(green .. lust.passes .. normal .. ' passed')
|
|
|
|
if lust.errors > 0 then os.exit(1) end
|