@pie-lib/graphing 4.1.0-beta.7 → 4.1.0-beta.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -3
- package/lib/__tests__/bg.test.js +0 -282
- package/lib/__tests__/bg.test.js.map +0 -1
- package/lib/__tests__/coordinates-label.test.js +0 -276
- package/lib/__tests__/coordinates-label.test.js.map +0 -1
- package/lib/__tests__/graph-with-controls.test.js +0 -275
- package/lib/__tests__/graph-with-controls.test.js.map +0 -1
- package/lib/__tests__/graph.test.js +0 -927
- package/lib/__tests__/graph.test.js.map +0 -1
- package/lib/__tests__/grid-setup.test.js +0 -729
- package/lib/__tests__/grid-setup.test.js.map +0 -1
- package/lib/__tests__/grid.test.js +0 -29
- package/lib/__tests__/grid.test.js.map +0 -1
- package/lib/__tests__/key-legend.test.js +0 -321
- package/lib/__tests__/key-legend.test.js.map +0 -1
- package/lib/__tests__/label-svg-icon.test.js +0 -373
- package/lib/__tests__/label-svg-icon.test.js.map +0 -1
- package/lib/__tests__/labels.test.js +0 -61
- package/lib/__tests__/labels.test.js.map +0 -1
- package/lib/__tests__/mark-label.test.js +0 -133
- package/lib/__tests__/mark-label.test.js.map +0 -1
- package/lib/__tests__/toggle-bar.test.js +0 -197
- package/lib/__tests__/toggle-bar.test.js.map +0 -1
- package/lib/__tests__/tool-menu.test.js +0 -151
- package/lib/__tests__/tool-menu.test.js.map +0 -1
- package/lib/__tests__/undo-redo.test.js +0 -31
- package/lib/__tests__/undo-redo.test.js.map +0 -1
- package/lib/__tests__/use-debounce.test.js +0 -24
- package/lib/__tests__/use-debounce.test.js.map +0 -1
- package/lib/__tests__/utils.js +0 -70
- package/lib/__tests__/utils.js.map +0 -1
- package/lib/__tests__/utils.test.js +0 -123
- package/lib/__tests__/utils.test.js.map +0 -1
- package/lib/axis/__tests__/arrow.test.js +0 -60
- package/lib/axis/__tests__/arrow.test.js.map +0 -1
- package/lib/axis/__tests__/axes.test.js +0 -195
- package/lib/axis/__tests__/axes.test.js.map +0 -1
- package/lib/container/__tests__/actions.test.js +0 -108
- package/lib/container/__tests__/actions.test.js.map +0 -1
- package/lib/container/__tests__/index.test.js +0 -503
- package/lib/container/__tests__/index.test.js.map +0 -1
- package/lib/container/__tests__/marks.test.js +0 -259
- package/lib/container/__tests__/marks.test.js.map +0 -1
- package/lib/container/__tests__/middleware.test.js +0 -244
- package/lib/container/__tests__/middleware.test.js.map +0 -1
- package/lib/container/__tests__/reducer.test.js +0 -450
- package/lib/container/__tests__/reducer.test.js.map +0 -1
- package/lib/tools/absolute/__tests__/component.test.js +0 -65
- package/lib/tools/absolute/__tests__/component.test.js.map +0 -1
- package/lib/tools/circle/__tests__/bg-circle.test.js +0 -33
- package/lib/tools/circle/__tests__/bg-circle.test.js.map +0 -1
- package/lib/tools/circle/__tests__/component.test.js +0 -615
- package/lib/tools/circle/__tests__/component.test.js.map +0 -1
- package/lib/tools/circle/__tests__/index.test.js +0 -576
- package/lib/tools/circle/__tests__/index.test.js.map +0 -1
- package/lib/tools/exponential/__tests__/component.test.js +0 -64
- package/lib/tools/exponential/__tests__/component.test.js.map +0 -1
- package/lib/tools/exponential/__tests__/index.test.js +0 -828
- package/lib/tools/exponential/__tests__/index.test.js.map +0 -1
- package/lib/tools/line/__tests__/component.test.js +0 -45
- package/lib/tools/line/__tests__/component.test.js.map +0 -1
- package/lib/tools/parabola/__tests__/component.test.js +0 -64
- package/lib/tools/parabola/__tests__/component.test.js.map +0 -1
- package/lib/tools/parabola/__tests__/index.test.js +0 -564
- package/lib/tools/parabola/__tests__/index.test.js.map +0 -1
- package/lib/tools/point/__tests__/component.test.js +0 -434
- package/lib/tools/point/__tests__/component.test.js.map +0 -1
- package/lib/tools/point/__tests__/index.test.js +0 -262
- package/lib/tools/point/__tests__/index.test.js.map +0 -1
- package/lib/tools/polygon/__tests__/component.test.js +0 -485
- package/lib/tools/polygon/__tests__/component.test.js.map +0 -1
- package/lib/tools/polygon/__tests__/index.test.js +0 -303
- package/lib/tools/polygon/__tests__/index.test.js.map +0 -1
- package/lib/tools/polygon/__tests__/line.test.js +0 -50
- package/lib/tools/polygon/__tests__/line.test.js.map +0 -1
- package/lib/tools/polygon/__tests__/polygon.test.js +0 -85
- package/lib/tools/polygon/__tests__/polygon.test.js.map +0 -1
- package/lib/tools/ray/__tests__/component.test.js +0 -35
- package/lib/tools/ray/__tests__/component.test.js.map +0 -1
- package/lib/tools/segment/__tests__/component.test.js +0 -35
- package/lib/tools/segment/__tests__/component.test.js.map +0 -1
- package/lib/tools/shared/__tests__/arrow-head.test.js +0 -45
- package/lib/tools/shared/__tests__/arrow-head.test.js.map +0 -1
- package/lib/tools/shared/line/__tests__/index.test.js +0 -124
- package/lib/tools/shared/line/__tests__/index.test.js.map +0 -1
- package/lib/tools/shared/line/__tests__/line-path.test.js +0 -62
- package/lib/tools/shared/line/__tests__/line-path.test.js.map +0 -1
- package/lib/tools/shared/line/__tests__/with-root-edge.test.js +0 -90
- package/lib/tools/shared/line/__tests__/with-root-edge.test.js.map +0 -1
- package/lib/tools/shared/point/__tests__/arrow-point.test.js +0 -127
- package/lib/tools/shared/point/__tests__/arrow-point.test.js.map +0 -1
- package/lib/tools/shared/point/__tests__/base-point.test.js +0 -122
- package/lib/tools/shared/point/__tests__/base-point.test.js.map +0 -1
- package/lib/tools/sine/__tests__/component.test.js +0 -72
- package/lib/tools/sine/__tests__/component.test.js.map +0 -1
- package/lib/tools/vector/__tests__/component.test.js +0 -32
- package/lib/tools/vector/__tests__/component.test.js.map +0 -1
- package/src/__tests__/bg.test.jsx +0 -250
- package/src/__tests__/coordinates-label.test.jsx +0 -243
- package/src/__tests__/graph-with-controls.test.jsx +0 -198
- package/src/__tests__/graph.test.jsx +0 -721
- package/src/__tests__/grid-setup.test.jsx +0 -645
- package/src/__tests__/grid.test.jsx +0 -22
- package/src/__tests__/key-legend.test.jsx +0 -260
- package/src/__tests__/label-svg-icon.test.jsx +0 -278
- package/src/__tests__/labels.test.jsx +0 -55
- package/src/__tests__/mark-label.test.jsx +0 -63
- package/src/__tests__/toggle-bar.test.jsx +0 -146
- package/src/__tests__/tool-menu.test.jsx +0 -115
- package/src/__tests__/undo-redo.test.jsx +0 -24
- package/src/__tests__/use-debounce.test.js +0 -21
- package/src/__tests__/utils.js +0 -41
- package/src/__tests__/utils.test.js +0 -105
- package/src/axis/__tests__/arrow.test.jsx +0 -38
- package/src/axis/__tests__/axes.test.jsx +0 -216
- package/src/container/__tests__/actions.test.js +0 -105
- package/src/container/__tests__/index.test.jsx +0 -319
- package/src/container/__tests__/marks.test.js +0 -172
- package/src/container/__tests__/middleware.test.js +0 -235
- package/src/container/__tests__/reducer.test.js +0 -324
- package/src/tools/absolute/__tests__/component.test.jsx +0 -53
- package/src/tools/circle/__tests__/bg-circle.test.jsx +0 -26
- package/src/tools/circle/__tests__/component.test.jsx +0 -494
- package/src/tools/circle/__tests__/index.test.js +0 -480
- package/src/tools/exponential/__tests__/component.test.jsx +0 -53
- package/src/tools/exponential/__tests__/index.test.js +0 -729
- package/src/tools/line/__tests__/component.test.jsx +0 -37
- package/src/tools/parabola/__tests__/component.test.jsx +0 -48
- package/src/tools/parabola/__tests__/index.test.js +0 -470
- package/src/tools/point/__tests__/component.test.jsx +0 -349
- package/src/tools/point/__tests__/index.test.js +0 -241
- package/src/tools/polygon/__tests__/component.test.jsx +0 -471
- package/src/tools/polygon/__tests__/index.test.js +0 -294
- package/src/tools/polygon/__tests__/line.test.jsx +0 -35
- package/src/tools/polygon/__tests__/polygon.test.jsx +0 -61
- package/src/tools/ray/__tests__/component.test.jsx +0 -29
- package/src/tools/segment/__tests__/component.test.jsx +0 -28
- package/src/tools/shared/__tests__/arrow-head.test.jsx +0 -31
- package/src/tools/shared/line/__tests__/index.test.jsx +0 -109
- package/src/tools/shared/line/__tests__/line-path.test.jsx +0 -53
- package/src/tools/shared/line/__tests__/with-root-edge.test.jsx +0 -73
- package/src/tools/shared/point/__tests__/arrow-point.test.jsx +0 -91
- package/src/tools/shared/point/__tests__/base-point.test.jsx +0 -87
- package/src/tools/sine/__tests__/component.test.jsx +0 -51
- package/src/tools/vector/__tests__/component.test.jsx +0 -25
|
@@ -1,564 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _index = require("../index");
|
|
5
|
-
var _component = _interopRequireDefault(require("../component"));
|
|
6
|
-
describe('parabola tool', function () {
|
|
7
|
-
var parabolaTool;
|
|
8
|
-
beforeEach(function () {
|
|
9
|
-
parabolaTool = (0, _index.tool)();
|
|
10
|
-
});
|
|
11
|
-
describe('tool structure', function () {
|
|
12
|
-
it('returns an object with required properties', function () {
|
|
13
|
-
expect(parabolaTool).toHaveProperty('type', 'parabola');
|
|
14
|
-
expect(parabolaTool).toHaveProperty('Component', _component["default"]);
|
|
15
|
-
expect(parabolaTool).toHaveProperty('complete');
|
|
16
|
-
expect(parabolaTool).toHaveProperty('addPoint');
|
|
17
|
-
});
|
|
18
|
-
it('has correct type', function () {
|
|
19
|
-
expect(parabolaTool.type).toBe('parabola');
|
|
20
|
-
});
|
|
21
|
-
it('uses Parabola component', function () {
|
|
22
|
-
expect(parabolaTool.Component).toBe(_component["default"]);
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
describe('addPoint', function () {
|
|
26
|
-
describe('no existing mark', function () {
|
|
27
|
-
it('creates new parabola with root point', function () {
|
|
28
|
-
var point = {
|
|
29
|
-
x: 1,
|
|
30
|
-
y: 2
|
|
31
|
-
};
|
|
32
|
-
var result = parabolaTool.addPoint(point, null);
|
|
33
|
-
expect(result).toEqual({
|
|
34
|
-
type: 'parabola',
|
|
35
|
-
root: point,
|
|
36
|
-
edge: undefined,
|
|
37
|
-
closed: false,
|
|
38
|
-
building: true
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
it('creates parabola with undefined argument', function () {
|
|
42
|
-
var point = {
|
|
43
|
-
x: 3,
|
|
44
|
-
y: 4
|
|
45
|
-
};
|
|
46
|
-
var result = parabolaTool.addPoint(point);
|
|
47
|
-
expect(result).toEqual({
|
|
48
|
-
type: 'parabola',
|
|
49
|
-
root: point,
|
|
50
|
-
edge: undefined,
|
|
51
|
-
closed: false,
|
|
52
|
-
building: true
|
|
53
|
-
});
|
|
54
|
-
});
|
|
55
|
-
it('marks parabola as building', function () {
|
|
56
|
-
var result = parabolaTool.addPoint({
|
|
57
|
-
x: 0,
|
|
58
|
-
y: 0
|
|
59
|
-
});
|
|
60
|
-
expect(result.building).toBe(true);
|
|
61
|
-
expect(result.closed).toBe(false);
|
|
62
|
-
});
|
|
63
|
-
it('initializes with undefined edge', function () {
|
|
64
|
-
var result = parabolaTool.addPoint({
|
|
65
|
-
x: 1,
|
|
66
|
-
y: 1
|
|
67
|
-
});
|
|
68
|
-
expect(result.edge).toBeUndefined();
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
describe('existing mark with root', function () {
|
|
72
|
-
it('adds edge point to complete parabola', function () {
|
|
73
|
-
var root = {
|
|
74
|
-
x: 1,
|
|
75
|
-
y: 2
|
|
76
|
-
};
|
|
77
|
-
var edge = {
|
|
78
|
-
x: 3,
|
|
79
|
-
y: 4
|
|
80
|
-
};
|
|
81
|
-
var mark = {
|
|
82
|
-
type: 'parabola',
|
|
83
|
-
root: root,
|
|
84
|
-
edge: undefined,
|
|
85
|
-
closed: false,
|
|
86
|
-
building: true
|
|
87
|
-
};
|
|
88
|
-
var result = parabolaTool.addPoint(edge, mark);
|
|
89
|
-
expect(result).toEqual({
|
|
90
|
-
type: 'parabola',
|
|
91
|
-
root: root,
|
|
92
|
-
edge: edge,
|
|
93
|
-
closed: true,
|
|
94
|
-
building: false
|
|
95
|
-
});
|
|
96
|
-
});
|
|
97
|
-
it('closes parabola when edge is added', function () {
|
|
98
|
-
var mark = {
|
|
99
|
-
type: 'parabola',
|
|
100
|
-
root: {
|
|
101
|
-
x: 0,
|
|
102
|
-
y: 0
|
|
103
|
-
},
|
|
104
|
-
edge: undefined,
|
|
105
|
-
closed: false,
|
|
106
|
-
building: true
|
|
107
|
-
};
|
|
108
|
-
var result = parabolaTool.addPoint({
|
|
109
|
-
x: 1,
|
|
110
|
-
y: 1
|
|
111
|
-
}, mark);
|
|
112
|
-
expect(result.closed).toBe(true);
|
|
113
|
-
expect(result.building).toBe(false);
|
|
114
|
-
});
|
|
115
|
-
it('preserves other mark properties when adding edge', function () {
|
|
116
|
-
var mark = {
|
|
117
|
-
type: 'parabola',
|
|
118
|
-
root: {
|
|
119
|
-
x: 1,
|
|
120
|
-
y: 2
|
|
121
|
-
},
|
|
122
|
-
edge: undefined,
|
|
123
|
-
closed: false,
|
|
124
|
-
building: true,
|
|
125
|
-
label: 'My Parabola',
|
|
126
|
-
color: 'blue'
|
|
127
|
-
};
|
|
128
|
-
var result = parabolaTool.addPoint({
|
|
129
|
-
x: 3,
|
|
130
|
-
y: 4
|
|
131
|
-
}, mark);
|
|
132
|
-
expect(result.label).toBe('My Parabola');
|
|
133
|
-
expect(result.color).toBe('blue');
|
|
134
|
-
});
|
|
135
|
-
});
|
|
136
|
-
describe('duplicate points', function () {
|
|
137
|
-
it('returns same mark when clicking root point again', function () {
|
|
138
|
-
var root = {
|
|
139
|
-
x: 1,
|
|
140
|
-
y: 2
|
|
141
|
-
};
|
|
142
|
-
var mark = {
|
|
143
|
-
type: 'parabola',
|
|
144
|
-
root: root,
|
|
145
|
-
edge: undefined,
|
|
146
|
-
closed: false,
|
|
147
|
-
building: true
|
|
148
|
-
};
|
|
149
|
-
var result = parabolaTool.addPoint(root, mark);
|
|
150
|
-
expect(result).toBe(mark);
|
|
151
|
-
});
|
|
152
|
-
it('returns same mark when clicking near root point', function () {
|
|
153
|
-
var root = {
|
|
154
|
-
x: 1.00001,
|
|
155
|
-
y: 2.00001
|
|
156
|
-
};
|
|
157
|
-
var nearRoot = {
|
|
158
|
-
x: 1.00002,
|
|
159
|
-
y: 2.00002
|
|
160
|
-
};
|
|
161
|
-
var mark = {
|
|
162
|
-
type: 'parabola',
|
|
163
|
-
root: root,
|
|
164
|
-
edge: undefined,
|
|
165
|
-
closed: false,
|
|
166
|
-
building: true
|
|
167
|
-
};
|
|
168
|
-
var result = parabolaTool.addPoint(nearRoot, mark);
|
|
169
|
-
expect(result).toBe(mark);
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
describe('same axes constraint', function () {
|
|
173
|
-
it('returns same mark when clicking on same x-axis as root', function () {
|
|
174
|
-
var root = {
|
|
175
|
-
x: 5,
|
|
176
|
-
y: 3
|
|
177
|
-
};
|
|
178
|
-
var sameXPoint = {
|
|
179
|
-
x: 5,
|
|
180
|
-
y: 7
|
|
181
|
-
};
|
|
182
|
-
var mark = {
|
|
183
|
-
type: 'parabola',
|
|
184
|
-
root: root,
|
|
185
|
-
edge: undefined,
|
|
186
|
-
closed: false,
|
|
187
|
-
building: true
|
|
188
|
-
};
|
|
189
|
-
var result = parabolaTool.addPoint(sameXPoint, mark);
|
|
190
|
-
expect(result).toBe(mark);
|
|
191
|
-
});
|
|
192
|
-
it('returns same mark when clicking on same y-axis as root', function () {
|
|
193
|
-
var root = {
|
|
194
|
-
x: 3,
|
|
195
|
-
y: 5
|
|
196
|
-
};
|
|
197
|
-
var sameYPoint = {
|
|
198
|
-
x: 7,
|
|
199
|
-
y: 5
|
|
200
|
-
};
|
|
201
|
-
var mark = {
|
|
202
|
-
type: 'parabola',
|
|
203
|
-
root: root,
|
|
204
|
-
edge: undefined,
|
|
205
|
-
closed: false,
|
|
206
|
-
building: true
|
|
207
|
-
};
|
|
208
|
-
var result = parabolaTool.addPoint(sameYPoint, mark);
|
|
209
|
-
expect(result).toBe(mark);
|
|
210
|
-
});
|
|
211
|
-
it('allows edge point on different axes', function () {
|
|
212
|
-
var root = {
|
|
213
|
-
x: 3,
|
|
214
|
-
y: 5
|
|
215
|
-
};
|
|
216
|
-
var edge = {
|
|
217
|
-
x: 7,
|
|
218
|
-
y: 9
|
|
219
|
-
};
|
|
220
|
-
var mark = {
|
|
221
|
-
type: 'parabola',
|
|
222
|
-
root: root,
|
|
223
|
-
edge: undefined,
|
|
224
|
-
closed: false,
|
|
225
|
-
building: true
|
|
226
|
-
};
|
|
227
|
-
var result = parabolaTool.addPoint(edge, mark);
|
|
228
|
-
expect(result).not.toBe(mark);
|
|
229
|
-
expect(result.edge).toEqual(edge);
|
|
230
|
-
});
|
|
231
|
-
it('handles points within rounding tolerance on same x-axis', function () {
|
|
232
|
-
var root = {
|
|
233
|
-
x: 5.00001,
|
|
234
|
-
y: 3
|
|
235
|
-
};
|
|
236
|
-
var nearSameX = {
|
|
237
|
-
x: 5.00002,
|
|
238
|
-
y: 7
|
|
239
|
-
};
|
|
240
|
-
var mark = {
|
|
241
|
-
type: 'parabola',
|
|
242
|
-
root: root,
|
|
243
|
-
edge: undefined,
|
|
244
|
-
closed: false,
|
|
245
|
-
building: true
|
|
246
|
-
};
|
|
247
|
-
var result = parabolaTool.addPoint(nearSameX, mark);
|
|
248
|
-
expect(result).toBe(mark);
|
|
249
|
-
});
|
|
250
|
-
it('handles points within rounding tolerance on same y-axis', function () {
|
|
251
|
-
var root = {
|
|
252
|
-
x: 3,
|
|
253
|
-
y: 5.00001
|
|
254
|
-
};
|
|
255
|
-
var nearSameY = {
|
|
256
|
-
x: 7,
|
|
257
|
-
y: 5.00002
|
|
258
|
-
};
|
|
259
|
-
var mark = {
|
|
260
|
-
type: 'parabola',
|
|
261
|
-
root: root,
|
|
262
|
-
edge: undefined,
|
|
263
|
-
closed: false,
|
|
264
|
-
building: true
|
|
265
|
-
};
|
|
266
|
-
var result = parabolaTool.addPoint(nearSameY, mark);
|
|
267
|
-
expect(result).toBe(mark);
|
|
268
|
-
});
|
|
269
|
-
});
|
|
270
|
-
describe('error handling', function () {
|
|
271
|
-
it('throws error when mark exists but has no root', function () {
|
|
272
|
-
var mark = {
|
|
273
|
-
type: 'parabola',
|
|
274
|
-
edge: undefined,
|
|
275
|
-
closed: false,
|
|
276
|
-
building: true
|
|
277
|
-
};
|
|
278
|
-
expect(function () {
|
|
279
|
-
parabolaTool.addPoint({
|
|
280
|
-
x: 1,
|
|
281
|
-
y: 2
|
|
282
|
-
}, mark);
|
|
283
|
-
}).toThrow('no root - should never happen');
|
|
284
|
-
});
|
|
285
|
-
it('throws error when mark has null root', function () {
|
|
286
|
-
var mark = {
|
|
287
|
-
type: 'parabola',
|
|
288
|
-
root: null,
|
|
289
|
-
edge: undefined,
|
|
290
|
-
closed: false,
|
|
291
|
-
building: true
|
|
292
|
-
};
|
|
293
|
-
expect(function () {
|
|
294
|
-
parabolaTool.addPoint({
|
|
295
|
-
x: 1,
|
|
296
|
-
y: 2
|
|
297
|
-
}, mark);
|
|
298
|
-
}).toThrow('no root - should never happen');
|
|
299
|
-
});
|
|
300
|
-
it('throws error when mark has undefined root', function () {
|
|
301
|
-
var mark = {
|
|
302
|
-
type: 'parabola',
|
|
303
|
-
root: undefined,
|
|
304
|
-
edge: undefined,
|
|
305
|
-
closed: false,
|
|
306
|
-
building: true
|
|
307
|
-
};
|
|
308
|
-
expect(function () {
|
|
309
|
-
parabolaTool.addPoint({
|
|
310
|
-
x: 1,
|
|
311
|
-
y: 2
|
|
312
|
-
}, mark);
|
|
313
|
-
}).toThrow('no root - should never happen');
|
|
314
|
-
});
|
|
315
|
-
});
|
|
316
|
-
describe('coordinates', function () {
|
|
317
|
-
it('handles negative coordinates', function () {
|
|
318
|
-
var root = {
|
|
319
|
-
x: -3,
|
|
320
|
-
y: -5
|
|
321
|
-
};
|
|
322
|
-
var result = parabolaTool.addPoint(root);
|
|
323
|
-
expect(result.root).toEqual(root);
|
|
324
|
-
});
|
|
325
|
-
it('handles zero coordinates', function () {
|
|
326
|
-
var root = {
|
|
327
|
-
x: 0,
|
|
328
|
-
y: 0
|
|
329
|
-
};
|
|
330
|
-
var result = parabolaTool.addPoint(root);
|
|
331
|
-
expect(result.root).toEqual(root);
|
|
332
|
-
});
|
|
333
|
-
it('handles decimal coordinates', function () {
|
|
334
|
-
var root = {
|
|
335
|
-
x: 1.5,
|
|
336
|
-
y: 2.75
|
|
337
|
-
};
|
|
338
|
-
var result = parabolaTool.addPoint(root);
|
|
339
|
-
expect(result.root).toEqual(root);
|
|
340
|
-
});
|
|
341
|
-
it('creates parabola with negative root and positive edge', function () {
|
|
342
|
-
var mark = parabolaTool.addPoint({
|
|
343
|
-
x: -2,
|
|
344
|
-
y: -3
|
|
345
|
-
});
|
|
346
|
-
var result = parabolaTool.addPoint({
|
|
347
|
-
x: 1,
|
|
348
|
-
y: 2
|
|
349
|
-
}, mark);
|
|
350
|
-
expect(result.root).toEqual({
|
|
351
|
-
x: -2,
|
|
352
|
-
y: -3
|
|
353
|
-
});
|
|
354
|
-
expect(result.edge).toEqual({
|
|
355
|
-
x: 1,
|
|
356
|
-
y: 2
|
|
357
|
-
});
|
|
358
|
-
});
|
|
359
|
-
});
|
|
360
|
-
});
|
|
361
|
-
describe('complete', function () {
|
|
362
|
-
it('marks parabola as complete and closed', function () {
|
|
363
|
-
var mark = {
|
|
364
|
-
type: 'parabola',
|
|
365
|
-
root: {
|
|
366
|
-
x: 1,
|
|
367
|
-
y: 2
|
|
368
|
-
},
|
|
369
|
-
edge: {
|
|
370
|
-
x: 3,
|
|
371
|
-
y: 4
|
|
372
|
-
},
|
|
373
|
-
closed: false,
|
|
374
|
-
building: true
|
|
375
|
-
};
|
|
376
|
-
var result = parabolaTool.complete(null, mark);
|
|
377
|
-
expect(result).toEqual({
|
|
378
|
-
type: 'parabola',
|
|
379
|
-
root: mark.root,
|
|
380
|
-
edge: mark.edge,
|
|
381
|
-
closed: true,
|
|
382
|
-
building: false
|
|
383
|
-
});
|
|
384
|
-
});
|
|
385
|
-
it('sets building to false', function () {
|
|
386
|
-
var mark = {
|
|
387
|
-
type: 'parabola',
|
|
388
|
-
root: {
|
|
389
|
-
x: 0,
|
|
390
|
-
y: 0
|
|
391
|
-
},
|
|
392
|
-
edge: undefined,
|
|
393
|
-
closed: false,
|
|
394
|
-
building: true
|
|
395
|
-
};
|
|
396
|
-
var result = parabolaTool.complete(null, mark);
|
|
397
|
-
expect(result.building).toBe(false);
|
|
398
|
-
});
|
|
399
|
-
it('sets closed to true', function () {
|
|
400
|
-
var mark = {
|
|
401
|
-
type: 'parabola',
|
|
402
|
-
root: {
|
|
403
|
-
x: 0,
|
|
404
|
-
y: 0
|
|
405
|
-
},
|
|
406
|
-
edge: undefined,
|
|
407
|
-
closed: false,
|
|
408
|
-
building: true
|
|
409
|
-
};
|
|
410
|
-
var result = parabolaTool.complete(null, mark);
|
|
411
|
-
expect(result.closed).toBe(true);
|
|
412
|
-
});
|
|
413
|
-
it('preserves all mark properties', function () {
|
|
414
|
-
var mark = {
|
|
415
|
-
type: 'parabola',
|
|
416
|
-
root: {
|
|
417
|
-
x: 1,
|
|
418
|
-
y: 2
|
|
419
|
-
},
|
|
420
|
-
edge: {
|
|
421
|
-
x: 3,
|
|
422
|
-
y: 4
|
|
423
|
-
},
|
|
424
|
-
closed: false,
|
|
425
|
-
building: true,
|
|
426
|
-
label: 'Test Parabola',
|
|
427
|
-
color: 'green',
|
|
428
|
-
id: 456
|
|
429
|
-
};
|
|
430
|
-
var result = parabolaTool.complete(null, mark);
|
|
431
|
-
expect(result.label).toBe('Test Parabola');
|
|
432
|
-
expect(result.color).toBe('green');
|
|
433
|
-
expect(result.id).toBe(456);
|
|
434
|
-
});
|
|
435
|
-
it('can force complete parabola with only root', function () {
|
|
436
|
-
var mark = {
|
|
437
|
-
type: 'parabola',
|
|
438
|
-
root: {
|
|
439
|
-
x: 1,
|
|
440
|
-
y: 2
|
|
441
|
-
},
|
|
442
|
-
edge: undefined,
|
|
443
|
-
closed: false,
|
|
444
|
-
building: true
|
|
445
|
-
};
|
|
446
|
-
var result = parabolaTool.complete(null, mark);
|
|
447
|
-
expect(result.closed).toBe(true);
|
|
448
|
-
expect(result.building).toBe(false);
|
|
449
|
-
expect(result.edge).toBeUndefined();
|
|
450
|
-
});
|
|
451
|
-
});
|
|
452
|
-
describe('integration scenarios', function () {
|
|
453
|
-
it('creates complete parabola with two clicks', function () {
|
|
454
|
-
var root = {
|
|
455
|
-
x: 0,
|
|
456
|
-
y: 0
|
|
457
|
-
};
|
|
458
|
-
var edge = {
|
|
459
|
-
x: 2,
|
|
460
|
-
y: 4
|
|
461
|
-
};
|
|
462
|
-
var mark = parabolaTool.addPoint(root);
|
|
463
|
-
expect(mark.building).toBe(true);
|
|
464
|
-
expect(mark.closed).toBe(false);
|
|
465
|
-
mark = parabolaTool.addPoint(edge, mark);
|
|
466
|
-
expect(mark.root).toEqual(root);
|
|
467
|
-
expect(mark.edge).toEqual(edge);
|
|
468
|
-
expect(mark.building).toBe(false);
|
|
469
|
-
expect(mark.closed).toBe(true);
|
|
470
|
-
});
|
|
471
|
-
it('ignores clicks on same axis during construction', function () {
|
|
472
|
-
var root = {
|
|
473
|
-
x: 0,
|
|
474
|
-
y: 0
|
|
475
|
-
};
|
|
476
|
-
var mark = parabolaTool.addPoint(root);
|
|
477
|
-
|
|
478
|
-
// Try to add point on same x-axis
|
|
479
|
-
var sameXMark = parabolaTool.addPoint({
|
|
480
|
-
x: 0,
|
|
481
|
-
y: 5
|
|
482
|
-
}, mark);
|
|
483
|
-
expect(sameXMark).toBe(mark);
|
|
484
|
-
expect(sameXMark.edge).toBeUndefined();
|
|
485
|
-
|
|
486
|
-
// Try to add point on same y-axis
|
|
487
|
-
var sameYMark = parabolaTool.addPoint({
|
|
488
|
-
x: 5,
|
|
489
|
-
y: 0
|
|
490
|
-
}, mark);
|
|
491
|
-
expect(sameYMark).toBe(mark);
|
|
492
|
-
expect(sameYMark.edge).toBeUndefined();
|
|
493
|
-
|
|
494
|
-
// Add valid edge point
|
|
495
|
-
var finalMark = parabolaTool.addPoint({
|
|
496
|
-
x: 2,
|
|
497
|
-
y: 4
|
|
498
|
-
}, mark);
|
|
499
|
-
expect(finalMark.edge).toEqual({
|
|
500
|
-
x: 2,
|
|
501
|
-
y: 4
|
|
502
|
-
});
|
|
503
|
-
expect(finalMark.closed).toBe(true);
|
|
504
|
-
});
|
|
505
|
-
it('ignores duplicate clicks on root', function () {
|
|
506
|
-
var root = {
|
|
507
|
-
x: 1,
|
|
508
|
-
y: 2
|
|
509
|
-
};
|
|
510
|
-
var mark = parabolaTool.addPoint(root);
|
|
511
|
-
|
|
512
|
-
// Click root again
|
|
513
|
-
var sameMark = parabolaTool.addPoint(root, mark);
|
|
514
|
-
expect(sameMark).toBe(mark);
|
|
515
|
-
expect(sameMark.edge).toBeUndefined();
|
|
516
|
-
});
|
|
517
|
-
it('handles typical parabola in different quadrants', function () {
|
|
518
|
-
// Quadrant 1
|
|
519
|
-
var mark1 = parabolaTool.addPoint({
|
|
520
|
-
x: 1,
|
|
521
|
-
y: 1
|
|
522
|
-
});
|
|
523
|
-
mark1 = parabolaTool.addPoint({
|
|
524
|
-
x: 2,
|
|
525
|
-
y: 3
|
|
526
|
-
}, mark1);
|
|
527
|
-
expect(mark1.closed).toBe(true);
|
|
528
|
-
|
|
529
|
-
// Quadrant 2
|
|
530
|
-
var mark2 = parabolaTool.addPoint({
|
|
531
|
-
x: -1,
|
|
532
|
-
y: 1
|
|
533
|
-
});
|
|
534
|
-
mark2 = parabolaTool.addPoint({
|
|
535
|
-
x: -2,
|
|
536
|
-
y: 3
|
|
537
|
-
}, mark2);
|
|
538
|
-
expect(mark2.closed).toBe(true);
|
|
539
|
-
|
|
540
|
-
// Quadrant 3
|
|
541
|
-
var mark3 = parabolaTool.addPoint({
|
|
542
|
-
x: -1,
|
|
543
|
-
y: -1
|
|
544
|
-
});
|
|
545
|
-
mark3 = parabolaTool.addPoint({
|
|
546
|
-
x: -2,
|
|
547
|
-
y: -3
|
|
548
|
-
}, mark3);
|
|
549
|
-
expect(mark3.closed).toBe(true);
|
|
550
|
-
|
|
551
|
-
// Quadrant 4
|
|
552
|
-
var mark4 = parabolaTool.addPoint({
|
|
553
|
-
x: 1,
|
|
554
|
-
y: -1
|
|
555
|
-
});
|
|
556
|
-
mark4 = parabolaTool.addPoint({
|
|
557
|
-
x: 2,
|
|
558
|
-
y: -3
|
|
559
|
-
}, mark4);
|
|
560
|
-
expect(mark4.closed).toBe(true);
|
|
561
|
-
});
|
|
562
|
-
});
|
|
563
|
-
});
|
|
564
|
-
//# sourceMappingURL=index.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","names":["_index","require","_component","_interopRequireDefault","describe","parabolaTool","beforeEach","tool","it","expect","toHaveProperty","Parabola","type","toBe","Component","point","x","y","result","addPoint","toEqual","root","edge","undefined","closed","building","toBeUndefined","mark","label","color","nearRoot","sameXPoint","sameYPoint","not","nearSameX","nearSameY","toThrow","complete","id","sameXMark","sameYMark","finalMark","sameMark","mark1","mark2","mark3","mark4"],"sources":["../../../../src/tools/parabola/__tests__/index.test.js"],"sourcesContent":["import { tool } from '../index';\nimport Parabola from '../component';\n\ndescribe('parabola tool', () => {\n let parabolaTool;\n\n beforeEach(() => {\n parabolaTool = tool();\n });\n\n describe('tool structure', () => {\n it('returns an object with required properties', () => {\n expect(parabolaTool).toHaveProperty('type', 'parabola');\n expect(parabolaTool).toHaveProperty('Component', Parabola);\n expect(parabolaTool).toHaveProperty('complete');\n expect(parabolaTool).toHaveProperty('addPoint');\n });\n\n it('has correct type', () => {\n expect(parabolaTool.type).toBe('parabola');\n });\n\n it('uses Parabola component', () => {\n expect(parabolaTool.Component).toBe(Parabola);\n });\n });\n\n describe('addPoint', () => {\n describe('no existing mark', () => {\n it('creates new parabola with root point', () => {\n const point = { x: 1, y: 2 };\n const result = parabolaTool.addPoint(point, null);\n\n expect(result).toEqual({\n type: 'parabola',\n root: point,\n edge: undefined,\n closed: false,\n building: true,\n });\n });\n\n it('creates parabola with undefined argument', () => {\n const point = { x: 3, y: 4 };\n const result = parabolaTool.addPoint(point);\n\n expect(result).toEqual({\n type: 'parabola',\n root: point,\n edge: undefined,\n closed: false,\n building: true,\n });\n });\n\n it('marks parabola as building', () => {\n const result = parabolaTool.addPoint({ x: 0, y: 0 });\n\n expect(result.building).toBe(true);\n expect(result.closed).toBe(false);\n });\n\n it('initializes with undefined edge', () => {\n const result = parabolaTool.addPoint({ x: 1, y: 1 });\n\n expect(result.edge).toBeUndefined();\n });\n });\n\n describe('existing mark with root', () => {\n it('adds edge point to complete parabola', () => {\n const root = { x: 1, y: 2 };\n const edge = { x: 3, y: 4 };\n const mark = {\n type: 'parabola',\n root,\n edge: undefined,\n closed: false,\n building: true,\n };\n\n const result = parabolaTool.addPoint(edge, mark);\n\n expect(result).toEqual({\n type: 'parabola',\n root,\n edge,\n closed: true,\n building: false,\n });\n });\n\n it('closes parabola when edge is added', () => {\n const mark = {\n type: 'parabola',\n root: { x: 0, y: 0 },\n edge: undefined,\n closed: false,\n building: true,\n };\n\n const result = parabolaTool.addPoint({ x: 1, y: 1 }, mark);\n\n expect(result.closed).toBe(true);\n expect(result.building).toBe(false);\n });\n\n it('preserves other mark properties when adding edge', () => {\n const mark = {\n type: 'parabola',\n root: { x: 1, y: 2 },\n edge: undefined,\n closed: false,\n building: true,\n label: 'My Parabola',\n color: 'blue',\n };\n\n const result = parabolaTool.addPoint({ x: 3, y: 4 }, mark);\n\n expect(result.label).toBe('My Parabola');\n expect(result.color).toBe('blue');\n });\n });\n\n describe('duplicate points', () => {\n it('returns same mark when clicking root point again', () => {\n const root = { x: 1, y: 2 };\n const mark = {\n type: 'parabola',\n root,\n edge: undefined,\n closed: false,\n building: true,\n };\n\n const result = parabolaTool.addPoint(root, mark);\n\n expect(result).toBe(mark);\n });\n\n it('returns same mark when clicking near root point', () => {\n const root = { x: 1.00001, y: 2.00001 };\n const nearRoot = { x: 1.00002, y: 2.00002 };\n const mark = {\n type: 'parabola',\n root,\n edge: undefined,\n closed: false,\n building: true,\n };\n\n const result = parabolaTool.addPoint(nearRoot, mark);\n\n expect(result).toBe(mark);\n });\n });\n\n describe('same axes constraint', () => {\n it('returns same mark when clicking on same x-axis as root', () => {\n const root = { x: 5, y: 3 };\n const sameXPoint = { x: 5, y: 7 };\n const mark = {\n type: 'parabola',\n root,\n edge: undefined,\n closed: false,\n building: true,\n };\n\n const result = parabolaTool.addPoint(sameXPoint, mark);\n\n expect(result).toBe(mark);\n });\n\n it('returns same mark when clicking on same y-axis as root', () => {\n const root = { x: 3, y: 5 };\n const sameYPoint = { x: 7, y: 5 };\n const mark = {\n type: 'parabola',\n root,\n edge: undefined,\n closed: false,\n building: true,\n };\n\n const result = parabolaTool.addPoint(sameYPoint, mark);\n\n expect(result).toBe(mark);\n });\n\n it('allows edge point on different axes', () => {\n const root = { x: 3, y: 5 };\n const edge = { x: 7, y: 9 };\n const mark = {\n type: 'parabola',\n root,\n edge: undefined,\n closed: false,\n building: true,\n };\n\n const result = parabolaTool.addPoint(edge, mark);\n\n expect(result).not.toBe(mark);\n expect(result.edge).toEqual(edge);\n });\n\n it('handles points within rounding tolerance on same x-axis', () => {\n const root = { x: 5.00001, y: 3 };\n const nearSameX = { x: 5.00002, y: 7 };\n const mark = {\n type: 'parabola',\n root,\n edge: undefined,\n closed: false,\n building: true,\n };\n\n const result = parabolaTool.addPoint(nearSameX, mark);\n\n expect(result).toBe(mark);\n });\n\n it('handles points within rounding tolerance on same y-axis', () => {\n const root = { x: 3, y: 5.00001 };\n const nearSameY = { x: 7, y: 5.00002 };\n const mark = {\n type: 'parabola',\n root,\n edge: undefined,\n closed: false,\n building: true,\n };\n\n const result = parabolaTool.addPoint(nearSameY, mark);\n\n expect(result).toBe(mark);\n });\n });\n\n describe('error handling', () => {\n it('throws error when mark exists but has no root', () => {\n const mark = {\n type: 'parabola',\n edge: undefined,\n closed: false,\n building: true,\n };\n\n expect(() => {\n parabolaTool.addPoint({ x: 1, y: 2 }, mark);\n }).toThrow('no root - should never happen');\n });\n\n it('throws error when mark has null root', () => {\n const mark = {\n type: 'parabola',\n root: null,\n edge: undefined,\n closed: false,\n building: true,\n };\n\n expect(() => {\n parabolaTool.addPoint({ x: 1, y: 2 }, mark);\n }).toThrow('no root - should never happen');\n });\n\n it('throws error when mark has undefined root', () => {\n const mark = {\n type: 'parabola',\n root: undefined,\n edge: undefined,\n closed: false,\n building: true,\n };\n\n expect(() => {\n parabolaTool.addPoint({ x: 1, y: 2 }, mark);\n }).toThrow('no root - should never happen');\n });\n });\n\n describe('coordinates', () => {\n it('handles negative coordinates', () => {\n const root = { x: -3, y: -5 };\n const result = parabolaTool.addPoint(root);\n\n expect(result.root).toEqual(root);\n });\n\n it('handles zero coordinates', () => {\n const root = { x: 0, y: 0 };\n const result = parabolaTool.addPoint(root);\n\n expect(result.root).toEqual(root);\n });\n\n it('handles decimal coordinates', () => {\n const root = { x: 1.5, y: 2.75 };\n const result = parabolaTool.addPoint(root);\n\n expect(result.root).toEqual(root);\n });\n\n it('creates parabola with negative root and positive edge', () => {\n const mark = parabolaTool.addPoint({ x: -2, y: -3 });\n const result = parabolaTool.addPoint({ x: 1, y: 2 }, mark);\n\n expect(result.root).toEqual({ x: -2, y: -3 });\n expect(result.edge).toEqual({ x: 1, y: 2 });\n });\n });\n });\n\n describe('complete', () => {\n it('marks parabola as complete and closed', () => {\n const mark = {\n type: 'parabola',\n root: { x: 1, y: 2 },\n edge: { x: 3, y: 4 },\n closed: false,\n building: true,\n };\n\n const result = parabolaTool.complete(null, mark);\n\n expect(result).toEqual({\n type: 'parabola',\n root: mark.root,\n edge: mark.edge,\n closed: true,\n building: false,\n });\n });\n\n it('sets building to false', () => {\n const mark = {\n type: 'parabola',\n root: { x: 0, y: 0 },\n edge: undefined,\n closed: false,\n building: true,\n };\n\n const result = parabolaTool.complete(null, mark);\n\n expect(result.building).toBe(false);\n });\n\n it('sets closed to true', () => {\n const mark = {\n type: 'parabola',\n root: { x: 0, y: 0 },\n edge: undefined,\n closed: false,\n building: true,\n };\n\n const result = parabolaTool.complete(null, mark);\n\n expect(result.closed).toBe(true);\n });\n\n it('preserves all mark properties', () => {\n const mark = {\n type: 'parabola',\n root: { x: 1, y: 2 },\n edge: { x: 3, y: 4 },\n closed: false,\n building: true,\n label: 'Test Parabola',\n color: 'green',\n id: 456,\n };\n\n const result = parabolaTool.complete(null, mark);\n\n expect(result.label).toBe('Test Parabola');\n expect(result.color).toBe('green');\n expect(result.id).toBe(456);\n });\n\n it('can force complete parabola with only root', () => {\n const mark = {\n type: 'parabola',\n root: { x: 1, y: 2 },\n edge: undefined,\n closed: false,\n building: true,\n };\n\n const result = parabolaTool.complete(null, mark);\n\n expect(result.closed).toBe(true);\n expect(result.building).toBe(false);\n expect(result.edge).toBeUndefined();\n });\n });\n\n describe('integration scenarios', () => {\n it('creates complete parabola with two clicks', () => {\n const root = { x: 0, y: 0 };\n const edge = { x: 2, y: 4 };\n\n let mark = parabolaTool.addPoint(root);\n expect(mark.building).toBe(true);\n expect(mark.closed).toBe(false);\n\n mark = parabolaTool.addPoint(edge, mark);\n expect(mark.root).toEqual(root);\n expect(mark.edge).toEqual(edge);\n expect(mark.building).toBe(false);\n expect(mark.closed).toBe(true);\n });\n\n it('ignores clicks on same axis during construction', () => {\n const root = { x: 0, y: 0 };\n let mark = parabolaTool.addPoint(root);\n\n // Try to add point on same x-axis\n const sameXMark = parabolaTool.addPoint({ x: 0, y: 5 }, mark);\n expect(sameXMark).toBe(mark);\n expect(sameXMark.edge).toBeUndefined();\n\n // Try to add point on same y-axis\n const sameYMark = parabolaTool.addPoint({ x: 5, y: 0 }, mark);\n expect(sameYMark).toBe(mark);\n expect(sameYMark.edge).toBeUndefined();\n\n // Add valid edge point\n const finalMark = parabolaTool.addPoint({ x: 2, y: 4 }, mark);\n expect(finalMark.edge).toEqual({ x: 2, y: 4 });\n expect(finalMark.closed).toBe(true);\n });\n\n it('ignores duplicate clicks on root', () => {\n const root = { x: 1, y: 2 };\n let mark = parabolaTool.addPoint(root);\n\n // Click root again\n const sameMark = parabolaTool.addPoint(root, mark);\n expect(sameMark).toBe(mark);\n expect(sameMark.edge).toBeUndefined();\n });\n\n it('handles typical parabola in different quadrants', () => {\n // Quadrant 1\n let mark1 = parabolaTool.addPoint({ x: 1, y: 1 });\n mark1 = parabolaTool.addPoint({ x: 2, y: 3 }, mark1);\n expect(mark1.closed).toBe(true);\n\n // Quadrant 2\n let mark2 = parabolaTool.addPoint({ x: -1, y: 1 });\n mark2 = parabolaTool.addPoint({ x: -2, y: 3 }, mark2);\n expect(mark2.closed).toBe(true);\n\n // Quadrant 3\n let mark3 = parabolaTool.addPoint({ x: -1, y: -1 });\n mark3 = parabolaTool.addPoint({ x: -2, y: -3 }, mark3);\n expect(mark3.closed).toBe(true);\n\n // Quadrant 4\n let mark4 = parabolaTool.addPoint({ x: 1, y: -1 });\n mark4 = parabolaTool.addPoint({ x: 2, y: -3 }, mark4);\n expect(mark4.closed).toBe(true);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|