You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
1.8 KiB
89 lines
1.8 KiB
var test = require('tape')
|
|
|
|
var Result = require('./index.js')
|
|
|
|
test('can create Ok', function t(assert) {
|
|
var v = Result.Ok(42)
|
|
|
|
assert.equal(!!v, true)
|
|
assert.equal(v.v, 42)
|
|
|
|
assert.end()
|
|
})
|
|
|
|
test('can check for Ok', function t(assert) {
|
|
var result = Result.Ok(42)
|
|
|
|
assert.equal(Result.isOk(result), true)
|
|
assert.equal(Result.Ok(result), 42)
|
|
|
|
assert.end()
|
|
})
|
|
|
|
test('check for Ok fails for Err', function t(assert) {
|
|
var result = Result.Err(new Error('foo'))
|
|
|
|
assert.equal(Result.isOk(result), false)
|
|
assert.equal(Result.Ok(result), undefined)
|
|
|
|
assert.end()
|
|
})
|
|
|
|
test('can create Err', function t(assert) {
|
|
var err = Result.Err(new Error('foo'))
|
|
|
|
assert.equal(!!err, true)
|
|
assert.equal(err.err.message, 'foo')
|
|
|
|
assert.end()
|
|
})
|
|
|
|
test('can check for Err', function t(assert) {
|
|
var result = Result.Err(new Error('foo'))
|
|
|
|
assert.equal(Result.isErr(result), true)
|
|
assert.equal(Result.Err(result).message, 'foo')
|
|
|
|
assert.end()
|
|
})
|
|
|
|
test('check for Err fails for Ok', function t(assert) {
|
|
var result = Result.Ok(42)
|
|
|
|
assert.equal(Result.isErr(result), false)
|
|
assert.equal(Result.Err(result), undefined)
|
|
|
|
assert.end()
|
|
})
|
|
|
|
test('Ok can support null value', function t(assert) {
|
|
var result = Result.Ok(null)
|
|
|
|
assert.equal(!!result, true)
|
|
assert.equal(result.v, null)
|
|
|
|
assert.equal(Result.isOk(result), true)
|
|
assert.equal(Result.Ok(result), null)
|
|
|
|
assert.equal(Result.isErr(result), false)
|
|
assert.equal(Result.Err(result), undefined)
|
|
|
|
assert.end()
|
|
})
|
|
|
|
test('Ok throws if you box undefined', function t(assert) {
|
|
assert.throws(function () {
|
|
Result.Ok(undefined)
|
|
}, /Cannot box `undefined` in Result.Ok/)
|
|
|
|
assert.end()
|
|
})
|
|
|
|
test('Err throws if you box non-error', function t(assert) {
|
|
assert.throws(function () {
|
|
Result.Err(42)
|
|
}, /Cannot box a non-error in Result.Err/)
|
|
|
|
assert.end()
|
|
})
|