-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.spec.ts
51 lines (42 loc) · 1.18 KB
/
index.spec.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
40
41
42
43
44
45
46
47
48
49
50
import * as t from 'tcomb';
import { generateAndCheck } from './index';
describe('SpaceObject', () => {
const Vector = t.tuple([t.Number, t.Number, t.Number])
const Asteroid = t.interface({
type: t.enums.of('asteroid'),
location: Vector,
mass: t.Number,
})
const Planet = t.interface({
type: t.enums.of('planet'),
location: Vector,
mass: t.Number,
population: t.Number,
habitable: t.Boolean,
})
const Rank = t.enums.of([
'captain',
'first mate',
'officer',
'ensign'
])
const CrewMember = t.interface({
name: t.String,
age: t.Number,
rank: Rank,
home: Planet,
})
const Ship = t.interface({
type: t.enums.of('ship'),
location: Vector,
mass: t.Number,
name: t.String,
crew: t.list(CrewMember),
})
const SpaceObject = t.union([Asteroid, Planet, Ship])
test('Vector', generateAndCheck(Vector));
test('Asteroid', generateAndCheck(Asteroid));
test('Rank', generateAndCheck(Rank));
test('Ship', generateAndCheck(Ship));
test('SpaceObject', generateAndCheck(SpaceObject));
});