-
Notifications
You must be signed in to change notification settings - Fork 0
/
test.js
126 lines (103 loc) · 2.67 KB
/
test.js
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
import ast from './module';
const test = require('tape-catch');
const Set = require('es6-set');
test('Returns an object of the right shape', (is) => {
const [attributes, defaults] = [[], []];
is.equal(
ast({attributes, defaults}).type,
'ParametricSvgAst',
'with the `type` property of the right value'
);
is.equal(
ast({attributes, defaults}).version,
1,
'with the `version` property of the right value'
);
is.equal(
ast({attributes, defaults}).attributes.constructor,
Set,
'with a `attributes: Set` property'
);
is.equal(
ast({attributes, defaults}).defaults.constructor,
Set,
'with a `defaults: Set` property'
);
is.end();
});
test('Returns correct `.attributes`', (is) => {
const defaults = [];
is.equal(
ast({attributes: [], defaults}).attributes.size,
0,
'of zero size for an empty array'
);
const attributes = [
{address: [0], name: 'a', dependencies: [], relation: () => {}},
{address: [14], name: 'a', dependencies: [], relation: () => {}},
{address: [2, 7, 3], name: 'a', dependencies: [], relation: () => {}},
{address: [3, 4], name: 'a', dependencies: [], relation: () => {}},
];
is.equal(
ast(
{attributes, defaults}
).attributes.size,
4,
'of size `4` for an array of four attributes'
);
is.equal(
ast(
{attributes: new Set(attributes), defaults}
).attributes.size,
4,
'of size `4` for a set of four attributes'
);
is.end();
});
test('Returns correct `.defaults`', (is) => {
const attributes = [];
is.equal(
ast({attributes, defaults: []}).defaults.size,
0,
'of zero size for an empty array'
);
const defaults = [
{identifier: 'a', dependencies: [], relation: () => {}},
{identifier: 'b', dependencies: [], relation: () => {}},
{identifier: 'c', dependencies: [], relation: () => {}},
{identifier: 'd', dependencies: [], relation: () => {}},
];
is.equal(
ast(
{attributes, defaults}
).defaults.size,
4,
'of size `4` for an array of four defaults'
);
is.equal(
ast(
{attributes, defaults: new Set(defaults)}
).defaults.size,
4,
'of size `4` for a set of four defaults'
);
is.end();
});
test('Enforces types to some extent', (is) => {
is.throws(
() => ast(),
TypeError,
'fails with a helpful message if called without arguments'
);
is.throws(
() => ast({attributes: {}}),
TypeError,
'fails with a helpful message if `attributes` isn’t iterable'
);
is.throws(
() => ast({defaults: {}}),
TypeError,
'fails with a helpful message if `defaults` isn’t iterable'
);
is.end();
});