-
Notifications
You must be signed in to change notification settings - Fork 1
/
index.spec.ts
51 lines (42 loc) · 1.21 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 { Boolean, Number, String, Literal, Array, Tuple, Record, Union } from 'runtypes'
import { generateAndCheck } from './index';
describe('SpaceObject', () => {
const Vector = Tuple(Number, Number, Number)
const Asteroid = Record({
type: Literal('asteroid'),
location: Vector,
mass: Number,
})
const Planet = Record({
type: Literal('planet'),
location: Vector,
mass: Number,
population: Number,
habitable: Boolean,
})
const Rank = Union(
Literal('captain'),
Literal('first mate'),
Literal('officer'),
Literal('ensign'),
)
const CrewMember = Record({
name: String,
age: Number,
rank: Rank,
home: Planet,
})
const Ship = Record({
type: Literal('ship'),
location: Vector,
mass: Number,
name: String,
crew: Array(CrewMember),
})
const SpaceObject = Union(Asteroid, Planet, Ship)
test('Vector', generateAndCheck(Vector));
test('Asteroid', generateAndCheck(Asteroid));
test('Rank', generateAndCheck(Rank));
test('Ship', generateAndCheck(Ship));
test('SpaceObject', generateAndCheck(SpaceObject));
});