-
Notifications
You must be signed in to change notification settings - Fork 52
/
Prism.ts
33 lines (29 loc) · 1.03 KB
/
Prism.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import * as assert from 'assert'
import { none, some } from 'fp-ts/lib/Option'
import { Prism } from '../src'
import { eqOptions as eq } from './helpers'
describe('Prism', () => {
it('fromPredicate', () => {
const prism = Prism.fromPredicate<number>(n => n % 1 === 0)
eq(prism.getOption(1), some(1))
eq(prism.getOption(1.1), none)
})
it('some', () => {
const prism = Prism.some<number>()
assert.deepEqual(prism.getOption(some(1)), some(1))
assert.deepEqual(prism.getOption(none), none)
assert.deepEqual(prism.reverseGet(2), some(2))
})
it('asOptional', () => {
const optional = Prism.some<number>().asOptional()
assert.deepEqual(optional.getOption(some(1)), some(1))
assert.deepEqual(optional.getOption(none), none)
assert.deepEqual(optional.set(2)(some(1)), some(2))
assert.deepEqual(optional.set(2)(none), some(2))
})
it('set', () => {
const prism = Prism.some<number>()
assert.deepEqual(prism.set(2)(some(1)), some(2))
assert.deepEqual(prism.set(2)(none), none)
})
})