runner.lua 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. lust = require 'tests/lust'
  2. Rx = require 'rx'
  3. for _, fn in pairs({'describe', 'it', 'test', 'expect', 'spy', 'before', 'after'}) do
  4. _G[fn] = lust[fn]
  5. end
  6. observableSpy = function(observable)
  7. local observer = Rx.Observer.create(_, function() end, _)
  8. local onNext = spy(observer, '_onNext')
  9. local onError = spy(observer, '_onError')
  10. local onComplete = spy(observer, '_onComplete')
  11. observable:subscribe(observer)
  12. return onNext, onError, onComplete
  13. end
  14. lust.paths['produce'] = {
  15. 'nothing',
  16. f = function(observable, ...)
  17. local args = {...}
  18. local values
  19. if type(args[1]) ~= 'table' then
  20. values = {}
  21. for i = 1, math.max(#args, 1) do
  22. table.insert(values, {args[i]})
  23. end
  24. else
  25. values = args[1]
  26. end
  27. local onNext, onError, onComplete = observableSpy(observable)
  28. expect(observable).to.be.an(Rx.Observable)
  29. expect(onNext).to.equal(values)
  30. expect(#onError).to.equal(0)
  31. expect(#onComplete).to.equal(1)
  32. return true
  33. end
  34. }
  35. lust.paths['nothing'] = {
  36. f = function(observable)
  37. local onNext, onError, onComplete = observableSpy(observable)
  38. expect(observable).to.be.an(Rx.Observable)
  39. expect(#onNext).to.equal(0)
  40. expect(#onError).to.equal(0)
  41. expect(#onComplete).to.equal(1)
  42. return true
  43. end
  44. }
  45. table.insert(lust.paths['to'], 'produce')
  46. if arg[1] then
  47. arg[1] = arg[1]:gsub('^(tests/)', ''):gsub('%.lua$', '')
  48. dofile('tests/' .. arg[1] .. '.lua')
  49. else
  50. local files = {
  51. 'observer',
  52. 'observable'
  53. }
  54. for i, file in ipairs(files) do
  55. dofile('tests/' .. file .. '.lua')
  56. if next(files, i) then
  57. print()
  58. end
  59. end
  60. end
  61. local red = string.char(27) .. '[31m'
  62. local green = string.char(27) .. '[32m'
  63. local normal = string.char(27) .. '[0m'
  64. if lust.errors > 0 then
  65. io.write(red .. lust.errors .. normal .. ' failed, ')
  66. end
  67. print(green .. lust.passes .. normal .. ' passed')
  68. if lust.errors > 0 then os.exit(1) end