test.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. var test = require('tape')
  2. var Result = require('./index.js')
  3. test('can create Ok', function t(assert) {
  4. var v = Result.Ok(42)
  5. assert.equal(!!v, true)
  6. assert.equal(v.v, 42)
  7. assert.end()
  8. })
  9. test('can check for Ok', function t(assert) {
  10. var result = Result.Ok(42)
  11. assert.equal(Result.isOk(result), true)
  12. assert.equal(Result.Ok(result), 42)
  13. assert.end()
  14. })
  15. test('check for Ok fails for Err', function t(assert) {
  16. var result = Result.Err(new Error('foo'))
  17. assert.equal(Result.isOk(result), false)
  18. assert.equal(Result.Ok(result), undefined)
  19. assert.end()
  20. })
  21. test('can create Err', function t(assert) {
  22. var err = Result.Err(new Error('foo'))
  23. assert.equal(!!err, true)
  24. assert.equal(err.err.message, 'foo')
  25. assert.end()
  26. })
  27. test('can check for Err', function t(assert) {
  28. var result = Result.Err(new Error('foo'))
  29. assert.equal(Result.isErr(result), true)
  30. assert.equal(Result.Err(result).message, 'foo')
  31. assert.end()
  32. })
  33. test('check for Err fails for Ok', function t(assert) {
  34. var result = Result.Ok(42)
  35. assert.equal(Result.isErr(result), false)
  36. assert.equal(Result.Err(result), undefined)
  37. assert.end()
  38. })
  39. test('Ok can support null value', function t(assert) {
  40. var result = Result.Ok(null)
  41. assert.equal(!!result, true)
  42. assert.equal(result.v, null)
  43. assert.equal(Result.isOk(result), true)
  44. assert.equal(Result.Ok(result), null)
  45. assert.equal(Result.isErr(result), false)
  46. assert.equal(Result.Err(result), undefined)
  47. assert.end()
  48. })
  49. test('Ok throws if you box undefined', function t(assert) {
  50. assert.throws(function () {
  51. Result.Ok(undefined)
  52. }, /Cannot box `undefined` in Result.Ok/)
  53. assert.end()
  54. })
  55. test('Err throws if you box non-error', function t(assert) {
  56. assert.throws(function () {
  57. Result.Err(42)
  58. }, /Cannot box a non-error in Result.Err/)
  59. assert.end()
  60. })