runner.lua 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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 onCompleted = spy(observer, '_onCompleted')
  11. observable:subscribe(observer)
  12. return onNext, onError, onCompleted
  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, onCompleted = observableSpy(observable)
  28. expect(observable).to.be.an(Rx.Observable)
  29. expect(onNext).to.equal(values)
  30. expect(#onError).to.equal(0)
  31. expect(#onCompleted).to.equal(1)
  32. return true
  33. end
  34. }
  35. lust.paths['nothing'] = {
  36. f = function(observable)
  37. local onNext, onError, onCompleted = observableSpy(observable)
  38. expect(observable).to.be.an(Rx.Observable)
  39. expect(#onNext).to.equal(0)
  40. expect(#onError).to.equal(0)
  41. expect(#onCompleted).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. 'subscription',
  54. 'subject',
  55. 'asyncsubject',
  56. 'behaviorsubject',
  57. 'replaysubject'
  58. }
  59. for i, file in ipairs(files) do
  60. dofile('tests/' .. file .. '.lua')
  61. if next(files, i) then
  62. print()
  63. end
  64. end
  65. end
  66. local red = string.char(27) .. '[31m'
  67. local green = string.char(27) .. '[32m'
  68. local normal = string.char(27) .. '[0m'
  69. if lust.errors > 0 then
  70. io.write(red .. lust.errors .. normal .. ' failed, ')
  71. end
  72. print(green .. lust.passes .. normal .. ' passed')
  73. if lust.errors > 0 then os.exit(1) end