@pacote/iff
Version:
Conditional expressions with Option support.
36 lines (31 loc) • 1.03 kB
text/typescript
import { None, Some } from '@pacote/option'
import { describe, expect, test } from 'vitest'
import { iff } from '../src/index'
describe('when both consequent and alternative functions are provided', () => {
test('calls consequent when predicate is satisfied', () => {
const actual = iff(
true,
() => 'consequent',
() => 'alternative',
)
expect(actual).toBe('consequent')
})
test('calls alternative when predicate fails', () => {
const actual = iff(
false,
() => 'consequent',
() => 'alternative',
)
expect(actual).toBe('alternative')
})
})
describe('when only the consequent function is provided', () => {
test('calls consequent when predicate is satisfied, yielding Some(type)', () => {
const actual = iff(true, () => 'consequent')
expect(actual).toEqual(Some('consequent'))
})
test('yields None when predicate fails and alternative is undefined', () => {
const actual = iff(false, () => 'consequent')
expect(actual).toEqual(None)
})
})