-
-
Notifications
You must be signed in to change notification settings - Fork 504
/
Validation.ts
39 lines (31 loc) · 1005 Bytes
/
Validation.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
34
35
36
37
38
39
import * as assert from 'assert'
import * as array from '../src/Array'
import * as validation from '../src/Validation'
import { monoidString } from '../src/Monoid'
import { sequence } from '../src/Traversable'
describe('Validation', () => {
it('traverse', () => {
const success = [
validation.success<string, number>(1),
validation.success<string, number>(2),
validation.success<string, number>(3)
]
const failure = [
validation.success<string, number>(1),
validation.failure<string, number>(monoidString, '[fail 1]'),
validation.failure<string, number>(monoidString, '[fail 2]')
]
const x = sequence(validation, array)(success)
if (validation.isSuccess(x)) {
assert.deepEqual(x.value, [1, 2, 3])
} else {
assert.ok(false)
}
const y = sequence(validation, array)(failure)
if (validation.isFailure(y)) {
assert.strictEqual(y.value, '[fail 1][fail 2]')
} else {
assert.ok(false)
}
})
})