@pie-lib/plot 4.1.0-beta.7 → 4.1.0-beta.8
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 +2 -2
- package/lib/__tests__/draggable.test.js +0 -48
- package/lib/__tests__/draggable.test.js.map +0 -1
- package/lib/__tests__/grid-draggable.test.js +0 -738
- package/lib/__tests__/grid-draggable.test.js.map +0 -1
- package/lib/__tests__/root.test.js +0 -285
- package/lib/__tests__/root.test.js.map +0 -1
- package/lib/__tests__/trig.test.js +0 -168
- package/lib/__tests__/trig.test.js.map +0 -1
- package/lib/__tests__/utils.test.js +0 -296
- package/lib/__tests__/utils.test.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"grid-draggable.test.js","names":["_react","require","_react2","_interopRequireDefault","_gridDraggable","_utils","_d3Selection","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","jest","mock","pointer","fn","mockReturnValue","mockDraggableCoreProps","DraggableCore","props","children","mockStartEvent","overrides","undefined","clientX","clientY","target","addEventListener","removeEventListener","getDelta","xyFn","out","n","invert","getGraphProps","scale","x","y","snap","domain","min","max","step","range","size","width","height","getRootNode","ownerSVGElement","getBoundingClientRect","left","top","right","bottom","describe","defaultOptions","defaultProps","beforeEach","anchorPoint","bounds","fromDelta","graphProps","it","Comp","gridDraggable","createElement","_render","render","container","expect","firstChild","toBeInTheDocument","_render2","grid","toEqual","onDragStart","onStart","toHaveBeenCalled","onDrag","options","deltaX","deltaY","toHaveBeenCalledWith","not","mockClear","onDragStop","onStop","stopPropagation","onClick","propsWithGraphProps"],"sources":["../../src/__tests__/grid-draggable.test.jsx"],"sourcesContent":["import { render } from '@testing-library/react';\nimport React from 'react';\nimport { gridDraggable } from '../grid-draggable';\nimport { getDelta } from '../utils';\nimport { pointer } from 'd3-selection';\n\njest.mock('d3-selection', () => ({\n pointer: jest.fn().mockReturnValue([0, 0]),\n}));\n\nlet mockDraggableCoreProps;\njest.mock('../draggable', () => ({\n DraggableCore: (props) => {\n // Store the props so tests can call the handlers\n mockDraggableCoreProps = props;\n return props.children;\n },\n}));\n\n// Reusable mock start event with a target that supports addEventListener/removeEventListener\nconst mockStartEvent = (overrides = {}) => ({\n clientX: 0,\n clientY: 0,\n target: { addEventListener: jest.fn(), removeEventListener: jest.fn() },\n ...overrides,\n});\n\njest.mock('../utils', () => ({\n getDelta: jest.fn(),\n}));\n\nconst xyFn = () => {\n const out = jest.fn((n) => n);\n out.invert = jest.fn((n) => n);\n return out;\n};\n\nconst getGraphProps = () => ({\n scale: {\n x: xyFn(),\n y: xyFn(),\n },\n snap: {\n x: xyFn(),\n y: xyFn(),\n },\n domain: {\n min: 0,\n max: 1,\n step: 1,\n },\n range: {\n min: 0,\n max: 1,\n step: 1,\n },\n size: {\n width: 500,\n height: 500,\n },\n getRootNode: () => ({\n ownerSVGElement: null,\n getBoundingClientRect: () => ({\n left: 0,\n top: 0,\n right: 100,\n bottom: 100,\n }),\n }),\n});\n\ndescribe('gridDraggable', () => {\n let defaultOptions;\n let defaultProps;\n\n beforeEach(() => {\n mockDraggableCoreProps = null;\n defaultOptions = {\n anchorPoint: jest.fn().mockReturnValue({ x: 0, y: 0 }),\n bounds: jest.fn().mockReturnValue({ left: 0, top: 0, bottom: 0, right: 0 }),\n fromDelta: jest.fn(),\n };\n\n defaultProps = {\n graphProps: getGraphProps(),\n };\n });\n\n it('renders regular component', () => {\n const Comp = gridDraggable(defaultOptions)(() => <div>Test</div>);\n const { container } = render(<Comp {...defaultProps} />);\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders with decimal domain and range', () => {\n const props = {\n ...defaultProps,\n graphProps: {\n ...getGraphProps(),\n domain: {\n min: -1.5,\n max: 1.6,\n step: 0.3,\n },\n range: {\n min: -2,\n max: 3,\n step: 0.2,\n },\n },\n };\n const Comp = gridDraggable(defaultOptions)(() => <div>Test</div>);\n const { container } = render(<Comp {...props} />);\n expect(container.firstChild).toBeInTheDocument();\n });\n\n describe('logic', () => {\n describe('grid calculation', () => {\n it('passes correct grid to DraggableCore based on domain and range step', () => {\n const Comp = gridDraggable(defaultOptions)(() => <div>Test</div>);\n render(<Comp {...defaultProps} />);\n\n // Grid is calculated as: scale.x(domain.step) - scale.x(0)\n // With our mock xyFn that returns n, this is: step - 0 = step\n expect(mockDraggableCoreProps.grid).toEqual([1, 1]);\n });\n\n it('calculates grid with decimal steps', () => {\n const props = {\n ...defaultProps,\n graphProps: {\n ...getGraphProps(),\n domain: { min: -1.5, max: 1.6, step: 0.3 },\n range: { min: -2, max: 3, step: 0.2 },\n },\n };\n const Comp = gridDraggable(defaultOptions)(() => <div>Test</div>);\n render(<Comp {...props} />);\n\n expect(mockDraggableCoreProps.grid).toEqual([0.3, 0.2]);\n });\n });\n\n describe('onStart', () => {\n it('calls onDragStart handler when drag starts', () => {\n const onDragStart = jest.fn();\n const props = { ...defaultProps, onDragStart };\n const Comp = gridDraggable(defaultOptions)(() => <div>Test</div>);\n render(<Comp {...props} />);\n\n // Simulate drag start\n mockDraggableCoreProps.onStart(mockStartEvent({ clientX: 100, clientY: 100 }));\n\n expect(onDragStart).toHaveBeenCalled();\n });\n });\n\n describe('onDrag', () => {\n it('calls onDrag callback with result from fromDelta', () => {\n const onDrag = jest.fn();\n const fromDelta = jest.fn().mockReturnValue('delta-result');\n const bounds = jest.fn().mockReturnValue({ left: -100, top: -100, bottom: 100, right: 100 });\n const options = { ...defaultOptions, fromDelta, bounds };\n const props = { ...defaultProps, onDrag };\n\n const Comp = gridDraggable(options)(() => <div>Test</div>);\n render(<Comp {...props} />);\n\n // Set up drag start state\n mockDraggableCoreProps.onStart(mockStartEvent());\n\n // Simulate drag\n mockDraggableCoreProps.onDrag({}, { deltaX: 10, deltaY: 10 });\n\n expect(fromDelta).toHaveBeenCalled();\n expect(onDrag).toHaveBeenCalledWith('delta-result');\n });\n\n it('does not call onDrag when no onDrag handler is provided', () => {\n const fromDelta = jest.fn();\n const options = { ...defaultOptions, fromDelta };\n const Comp = gridDraggable(options)(() => <div>Test</div>);\n render(<Comp {...defaultProps} />);\n\n mockDraggableCoreProps.onStart(mockStartEvent());\n mockDraggableCoreProps.onDrag({}, { deltaX: 10, deltaY: 10 });\n\n expect(fromDelta).not.toHaveBeenCalled();\n });\n\n describe('bounds checking', () => {\n it('does not call onDrag when dragging left beyond left bound', () => {\n const onDrag = jest.fn();\n const bounds = jest.fn().mockReturnValue({ left: 0, top: 0, bottom: 0, right: 0 });\n const fromDelta = jest.fn().mockReturnValue('result');\n const options = { ...defaultOptions, bounds, fromDelta };\n const props = { ...defaultProps, onDrag };\n\n const Comp = gridDraggable(options)(() => <div>Test</div>);\n render(<Comp {...props} />);\n\n mockDraggableCoreProps.onStart(mockStartEvent());\n // deltaX < 0 and deltaX < scaled bounds.left (0), so -10 < 0 triggers early return\n mockDraggableCoreProps.onDrag({}, { deltaX: -10, deltaY: 0 });\n\n expect(onDrag).not.toHaveBeenCalled();\n });\n\n it('does not call onDrag when dragging right beyond right bound', () => {\n const onDrag = jest.fn();\n const bounds = jest.fn().mockReturnValue({ left: 0, top: 0, bottom: 0, right: 0 });\n const fromDelta = jest.fn().mockReturnValue('result');\n const options = { ...defaultOptions, bounds, fromDelta };\n const props = { ...defaultProps, onDrag };\n\n const Comp = gridDraggable(options)(() => <div>Test</div>);\n render(<Comp {...props} />);\n\n mockDraggableCoreProps.onStart(mockStartEvent());\n // deltaX > 0 and deltaX > scaled bounds.right (0), so 10 > 0 triggers early return\n mockDraggableCoreProps.onDrag({}, { deltaX: 10, deltaY: 0 });\n\n expect(onDrag).not.toHaveBeenCalled();\n });\n\n it('does not call onDrag when dragging up beyond top bound', () => {\n const onDrag = jest.fn();\n const bounds = jest.fn().mockReturnValue({ left: -100, top: 0, bottom: 0, right: 100 });\n const fromDelta = jest.fn().mockReturnValue('result');\n const options = { ...defaultOptions, bounds, fromDelta };\n const props = { ...defaultProps, onDrag };\n\n const Comp = gridDraggable(options)(() => <div>Test</div>);\n render(<Comp {...props} />);\n\n mockDraggableCoreProps.onStart(mockStartEvent());\n // deltaY < 0 and deltaY < scaled bounds.top (0), so -10 < 0 triggers early return\n mockDraggableCoreProps.onDrag({}, { deltaX: 0, deltaY: -10 });\n\n expect(onDrag).not.toHaveBeenCalled();\n });\n\n it('does not call onDrag when dragging down beyond bottom bound', () => {\n const onDrag = jest.fn();\n const bounds = jest.fn().mockReturnValue({ left: -100, top: -100, bottom: 0, right: 100 });\n const fromDelta = jest.fn().mockReturnValue('result');\n const options = { ...defaultOptions, bounds, fromDelta };\n const props = { ...defaultProps, onDrag };\n\n const Comp = gridDraggable(options)(() => <div>Test</div>);\n render(<Comp {...props} />);\n\n mockDraggableCoreProps.onStart(mockStartEvent());\n // deltaY > 0 and deltaY > scaled bounds.bottom (0), so 10 > 0 triggers early return\n mockDraggableCoreProps.onDrag({}, { deltaX: 0, deltaY: 10 });\n\n expect(onDrag).not.toHaveBeenCalled();\n });\n\n it('calls onDrag when dragging within bounds', () => {\n const onDrag = jest.fn();\n const bounds = jest.fn().mockReturnValue({ left: -100, top: -100, bottom: 100, right: 100 });\n const fromDelta = jest.fn().mockReturnValue('result');\n const options = { ...defaultOptions, bounds, fromDelta };\n const props = { ...defaultProps, onDrag };\n\n const Comp = gridDraggable(options)(() => <div>Test</div>);\n render(<Comp {...props} />);\n\n mockDraggableCoreProps.onStart(mockStartEvent());\n // All bound checks pass: deltaX (-10) is NOT < bounds.left (-100) and NOT > bounds.right (100)\n // Similarly for deltaY\n mockDraggableCoreProps.onDrag({}, { deltaX: -10, deltaY: 10 });\n\n expect(onDrag).toHaveBeenCalled();\n });\n });\n\n describe('skipDragOutsideOfBounds', () => {\n it('skips drag when moving left and x is below domain.min', () => {\n const onDrag = jest.fn();\n const graphProps = {\n ...getGraphProps(),\n domain: { min: -5, max: 5, step: 1 },\n range: { min: -5, max: 5, step: 1 },\n };\n graphProps.scale.x.invert = jest.fn().mockReturnValue(-6); // Below min\n\n const props = { ...defaultProps, graphProps, onDrag };\n const bounds = jest.fn().mockReturnValue({ left: 100, top: 100, bottom: 100, right: 100 });\n const options = { ...defaultOptions, bounds };\n\n const Comp = gridDraggable(options)(() => <div>Test</div>);\n render(<Comp {...props} />);\n\n mockDraggableCoreProps.onStart(mockStartEvent());\n mockDraggableCoreProps.onDrag({}, { deltaX: 1, deltaY: 0 });\n\n expect(onDrag).not.toHaveBeenCalled();\n });\n\n it('skips drag when moving right and x is above domain.max', () => {\n const onDrag = jest.fn();\n const graphProps = {\n ...getGraphProps(),\n domain: { min: -5, max: 5, step: 1 },\n range: { min: -5, max: 5, step: 1 },\n };\n graphProps.scale.x.invert = jest.fn().mockReturnValue(6); // Above max\n\n const props = { ...defaultProps, graphProps, onDrag };\n const bounds = jest.fn().mockReturnValue({ left: 100, top: 100, bottom: 100, right: 100 });\n const options = { ...defaultOptions, bounds };\n\n const Comp = gridDraggable(options)(() => <div>Test</div>);\n render(<Comp {...props} />);\n\n mockDraggableCoreProps.onStart(mockStartEvent());\n mockDraggableCoreProps.onDrag({}, { deltaX: -1, deltaY: 0 });\n\n expect(onDrag).not.toHaveBeenCalled();\n });\n\n it('skips drag when moving up and y is above range.max', () => {\n const onDrag = jest.fn();\n const graphProps = {\n ...getGraphProps(),\n domain: { min: -5, max: 5, step: 1 },\n range: { min: -5, max: 5, step: 1 },\n };\n graphProps.scale.y.invert = jest.fn().mockReturnValue(6); // Above max\n\n const props = { ...defaultProps, graphProps, onDrag };\n const bounds = jest.fn().mockReturnValue({ left: 100, top: 100, bottom: 100, right: 100 });\n const options = { ...defaultOptions, bounds };\n\n const Comp = gridDraggable(options)(() => <div>Test</div>);\n render(<Comp {...props} />);\n\n mockDraggableCoreProps.onStart(mockStartEvent());\n mockDraggableCoreProps.onDrag({}, { deltaX: 0, deltaY: 1 });\n\n expect(onDrag).not.toHaveBeenCalled();\n });\n\n it('skips drag when moving down and y is below range.min', () => {\n const onDrag = jest.fn();\n const graphProps = {\n ...getGraphProps(),\n domain: { min: -5, max: 5, step: 1 },\n range: { min: -5, max: 5, step: 1 },\n };\n graphProps.scale.y.invert = jest.fn().mockReturnValue(-6); // Below min\n\n const props = { ...defaultProps, graphProps, onDrag };\n const bounds = jest.fn().mockReturnValue({ left: 100, top: 100, bottom: 100, right: 100 });\n const options = { ...defaultOptions, bounds };\n\n const Comp = gridDraggable(options)(() => <div>Test</div>);\n render(<Comp {...props} />);\n\n mockDraggableCoreProps.onStart(mockStartEvent());\n mockDraggableCoreProps.onDrag({}, { deltaX: 0, deltaY: -1 });\n\n expect(onDrag).not.toHaveBeenCalled();\n });\n\n it('allows drag when within domain and range', () => {\n const onDrag = jest.fn();\n const graphProps = {\n ...getGraphProps(),\n domain: { min: -5, max: 5, step: 1 },\n range: { min: -5, max: 5, step: 1 },\n };\n graphProps.scale.x.invert = jest.fn().mockReturnValue(3); // Within bounds\n graphProps.scale.y.invert = jest.fn().mockReturnValue(2); // Within bounds\n\n const props = { ...defaultProps, graphProps, onDrag };\n const bounds = jest.fn().mockReturnValue({ left: -100, top: -100, bottom: 100, right: 100 });\n const options = { ...defaultOptions, bounds };\n\n const Comp = gridDraggable(options)(() => <div>Test</div>);\n render(<Comp {...props} />);\n\n mockDraggableCoreProps.onStart(mockStartEvent());\n mockDraggableCoreProps.onDrag({}, { deltaX: 1, deltaY: -1 });\n\n expect(onDrag).toHaveBeenCalled();\n });\n });\n });\n\n describe('getDelta and applyDelta', () => {\n it('calls utils.getDelta when processing drag', () => {\n getDelta.mockClear();\n const onDrag = jest.fn();\n const props = { ...defaultProps, onDrag };\n const bounds = jest.fn().mockReturnValue({ left: -100, top: -100, bottom: 100, right: 100 });\n const options = { ...defaultOptions, bounds };\n\n const Comp = gridDraggable(options)(() => <div>Test</div>);\n render(<Comp {...props} />);\n\n mockDraggableCoreProps.onStart(mockStartEvent());\n mockDraggableCoreProps.onDrag({}, { deltaX: 10, deltaY: 10 });\n\n expect(getDelta).toHaveBeenCalled();\n });\n\n it('calls fromDelta with result from getDelta', () => {\n const fromDelta = jest.fn();\n getDelta.mockReturnValue({ x: 5, y: 5 });\n const bounds = jest.fn().mockReturnValue({ left: -100, top: -100, bottom: 100, right: 100 });\n const options = { ...defaultOptions, fromDelta, bounds };\n const props = { ...defaultProps, onDrag: jest.fn() };\n\n const Comp = gridDraggable(options)(() => <div>Test</div>);\n render(<Comp {...props} />);\n\n mockDraggableCoreProps.onStart(mockStartEvent());\n mockDraggableCoreProps.onDrag({}, { deltaX: 10, deltaY: 10 });\n\n expect(fromDelta).toHaveBeenCalled();\n });\n });\n\n describe('onStop', () => {\n it('calls onDragStop when drag stops', () => {\n const onDragStop = jest.fn();\n const props = { ...defaultProps, onDragStop };\n\n const Comp = gridDraggable(defaultOptions)(() => <div>Test</div>);\n render(<Comp {...props} />);\n\n // Start to set up state\n mockDraggableCoreProps.onStart(mockStartEvent());\n\n // Stop with large movement (not tiny)\n mockDraggableCoreProps.onStop({ clientX: 100, clientY: 100, stopPropagation: jest.fn() }, {});\n\n expect(onDragStop).toHaveBeenCalled();\n });\n\n it('calls onClick instead of onDragStop when movement is tiny', () => {\n const onClick = jest.fn();\n const onDragStop = jest.fn();\n const props = { ...defaultProps, onClick, onDragStop };\n\n pointer.mockReturnValue([0, 0]);\n\n const Comp = gridDraggable(defaultOptions)(() => <div>Test</div>);\n render(<Comp {...props} />);\n\n // Start and stop at almost the same position (tiny movement)\n // Grid is 1x1, tiny threshold is grid/10 = 0.1\n mockDraggableCoreProps.onStart(mockStartEvent());\n mockDraggableCoreProps.onStop({ clientX: 0.05, clientY: 0.05, target: {}, stopPropagation: jest.fn() }, {});\n\n expect(onClick).toHaveBeenCalledWith({ x: 0, y: 0 });\n });\n\n it('calls onClick with snapped coordinates', () => {\n const onClick = jest.fn();\n const props = { ...defaultProps, onClick };\n const graphProps = getGraphProps();\n graphProps.scale.x.invert = jest.fn().mockReturnValue(1.7);\n graphProps.scale.y.invert = jest.fn().mockReturnValue(2.3);\n graphProps.snap.x = jest.fn().mockReturnValue(2);\n graphProps.snap.y = jest.fn().mockReturnValue(2);\n\n pointer.mockReturnValue([1.7, 2.3]);\n\n const propsWithGraphProps = { ...props, graphProps };\n const Comp = gridDraggable(defaultOptions)(() => <div>Test</div>);\n render(<Comp {...propsWithGraphProps} />);\n\n // Start and stop at almost the same position (tiny movement)\n mockDraggableCoreProps.onStart(mockStartEvent());\n mockDraggableCoreProps.onStop({ clientX: 0.05, clientY: 0.05, target: {}, stopPropagation: jest.fn() }, {});\n\n expect(graphProps.snap.x).toHaveBeenCalledWith(1.7);\n expect(graphProps.snap.y).toHaveBeenCalledWith(2.3);\n expect(onClick).toHaveBeenCalledWith({ x: 2, y: 2 });\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,285 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
5
|
-
var _react = require("@testing-library/react");
|
|
6
|
-
var _react2 = _interopRequireDefault(require("react"));
|
|
7
|
-
var _root = require("../root");
|
|
8
|
-
var _d3Selection = require("d3-selection");
|
|
9
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
10
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
11
|
-
jest.mock('d3-selection', function () {
|
|
12
|
-
return {
|
|
13
|
-
select: jest.fn(),
|
|
14
|
-
pointer: jest.fn()
|
|
15
|
-
};
|
|
16
|
-
});
|
|
17
|
-
var scaleMock = function scaleMock() {
|
|
18
|
-
var fn = jest.fn(function (n) {
|
|
19
|
-
return n;
|
|
20
|
-
});
|
|
21
|
-
fn.invert = jest.fn(function (n) {
|
|
22
|
-
return n;
|
|
23
|
-
});
|
|
24
|
-
return fn;
|
|
25
|
-
};
|
|
26
|
-
var graphProps = function graphProps() {
|
|
27
|
-
return {
|
|
28
|
-
scale: {
|
|
29
|
-
x: scaleMock(),
|
|
30
|
-
y: scaleMock()
|
|
31
|
-
},
|
|
32
|
-
snap: {
|
|
33
|
-
x: jest.fn(function (n) {
|
|
34
|
-
return n;
|
|
35
|
-
}),
|
|
36
|
-
y: jest.fn(function (n) {
|
|
37
|
-
return n;
|
|
38
|
-
})
|
|
39
|
-
},
|
|
40
|
-
domain: {
|
|
41
|
-
min: 0,
|
|
42
|
-
max: 1,
|
|
43
|
-
step: 1
|
|
44
|
-
},
|
|
45
|
-
range: {
|
|
46
|
-
min: 0,
|
|
47
|
-
max: 1,
|
|
48
|
-
step: 1
|
|
49
|
-
},
|
|
50
|
-
size: {
|
|
51
|
-
width: 400,
|
|
52
|
-
height: 400
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
};
|
|
56
|
-
describe('root', function () {
|
|
57
|
-
var mockOn;
|
|
58
|
-
var defaultProps;
|
|
59
|
-
beforeEach(function () {
|
|
60
|
-
mockOn = jest.fn();
|
|
61
|
-
_d3Selection.select.mockReturnValue({
|
|
62
|
-
on: mockOn
|
|
63
|
-
});
|
|
64
|
-
_d3Selection.pointer.mockReturnValue([0, 0]);
|
|
65
|
-
defaultProps = {
|
|
66
|
-
classes: {},
|
|
67
|
-
graphProps: graphProps()
|
|
68
|
-
};
|
|
69
|
-
});
|
|
70
|
-
afterEach(function () {
|
|
71
|
-
(0, _react.cleanup)();
|
|
72
|
-
jest.clearAllMocks();
|
|
73
|
-
});
|
|
74
|
-
it('renders with children', function () {
|
|
75
|
-
var _render = (0, _react.render)(/*#__PURE__*/_react2["default"].createElement(_root.Root, defaultProps, "hi")),
|
|
76
|
-
container = _render.container,
|
|
77
|
-
getByText = _render.getByText;
|
|
78
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
79
|
-
expect(getByText('hi')).toBeInTheDocument();
|
|
80
|
-
});
|
|
81
|
-
describe('logic', function () {
|
|
82
|
-
describe('mousemove', function () {
|
|
83
|
-
describe('mount/unmount', function () {
|
|
84
|
-
it('adds mousemove listener on componentDidMount', function () {
|
|
85
|
-
(0, _react.render)(/*#__PURE__*/_react2["default"].createElement(_root.Root, defaultProps, "hi"));
|
|
86
|
-
|
|
87
|
-
// Verify that select was called with the g element
|
|
88
|
-
expect(_d3Selection.select).toHaveBeenCalled();
|
|
89
|
-
|
|
90
|
-
// Verify that on() was called with 'mousemove' and a function
|
|
91
|
-
expect(mockOn).toHaveBeenCalledWith('mousemove', expect.any(Function));
|
|
92
|
-
});
|
|
93
|
-
it('removes mousemove listener on componentWillUnmount', function () {
|
|
94
|
-
var _render2 = (0, _react.render)(/*#__PURE__*/_react2["default"].createElement(_root.Root, defaultProps, "hi")),
|
|
95
|
-
unmount = _render2.unmount;
|
|
96
|
-
|
|
97
|
-
// Clear previous calls to isolate unmount behavior
|
|
98
|
-
mockOn.mockClear();
|
|
99
|
-
_d3Selection.select.mockClear();
|
|
100
|
-
unmount();
|
|
101
|
-
|
|
102
|
-
// Verify that select was called during unmount
|
|
103
|
-
expect(_d3Selection.select).toHaveBeenCalled();
|
|
104
|
-
|
|
105
|
-
// Verify that on() was called with 'mousemove' and null to remove the listener
|
|
106
|
-
expect(mockOn).toHaveBeenCalledWith('mousemove', null);
|
|
107
|
-
});
|
|
108
|
-
});
|
|
109
|
-
describe('mouseMove function', function () {
|
|
110
|
-
it('calls pointer with correct arguments', function () {
|
|
111
|
-
var onMouseMove = jest.fn();
|
|
112
|
-
var gp = graphProps();
|
|
113
|
-
var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
|
|
114
|
-
onMouseMove: onMouseMove,
|
|
115
|
-
graphProps: gp
|
|
116
|
-
});
|
|
117
|
-
var mockNode = document.createElement('div');
|
|
118
|
-
var mockEvent = {
|
|
119
|
-
clientX: 10,
|
|
120
|
-
clientY: 20
|
|
121
|
-
};
|
|
122
|
-
var mockSelection = {
|
|
123
|
-
_groups: [[mockNode]],
|
|
124
|
-
node: function node() {
|
|
125
|
-
return mockNode;
|
|
126
|
-
}
|
|
127
|
-
};
|
|
128
|
-
|
|
129
|
-
// Mock select to return our mockSelection
|
|
130
|
-
_d3Selection.select.mockReturnValue(_objectSpread(_objectSpread({}, mockSelection), {}, {
|
|
131
|
-
on: function on(event, handler) {
|
|
132
|
-
mockOn(event, handler);
|
|
133
|
-
// When 'mousemove' is registered, immediately test it
|
|
134
|
-
if (event === 'mousemove' && handler) {
|
|
135
|
-
_d3Selection.pointer.mockReturnValue([10, 20]);
|
|
136
|
-
// Handler is bound with mockSelection as first arg, so call with event
|
|
137
|
-
handler(mockEvent);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}));
|
|
141
|
-
(0, _react.render)(/*#__PURE__*/_react2["default"].createElement(_root.Root, props, "hi"));
|
|
142
|
-
|
|
143
|
-
// Verify pointer was called with the event and correct node
|
|
144
|
-
expect(_d3Selection.pointer).toHaveBeenCalledWith(mockEvent, mockNode);
|
|
145
|
-
});
|
|
146
|
-
it('calls scale.x.invert and scale.y.invert', function () {
|
|
147
|
-
var onMouseMove = jest.fn();
|
|
148
|
-
var gp = graphProps();
|
|
149
|
-
var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
|
|
150
|
-
onMouseMove: onMouseMove,
|
|
151
|
-
graphProps: gp
|
|
152
|
-
});
|
|
153
|
-
var mockNode = document.createElement('div');
|
|
154
|
-
var mockEvent = {
|
|
155
|
-
clientX: 15,
|
|
156
|
-
clientY: 25
|
|
157
|
-
};
|
|
158
|
-
var mockSelection = {
|
|
159
|
-
_groups: [[mockNode]],
|
|
160
|
-
node: function node() {
|
|
161
|
-
return mockNode;
|
|
162
|
-
}
|
|
163
|
-
};
|
|
164
|
-
_d3Selection.select.mockReturnValue(_objectSpread(_objectSpread({}, mockSelection), {}, {
|
|
165
|
-
on: function on(event, handler) {
|
|
166
|
-
mockOn(event, handler);
|
|
167
|
-
if (event === 'mousemove' && handler) {
|
|
168
|
-
_d3Selection.pointer.mockReturnValue([15, 25]);
|
|
169
|
-
handler(mockEvent);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}));
|
|
173
|
-
(0, _react.render)(/*#__PURE__*/_react2["default"].createElement(_root.Root, props, "hi"));
|
|
174
|
-
expect(gp.scale.x.invert).toHaveBeenCalledWith(15);
|
|
175
|
-
expect(gp.scale.y.invert).toHaveBeenCalledWith(25);
|
|
176
|
-
});
|
|
177
|
-
it('calls snap.x and snap.y with inverted coordinates', function () {
|
|
178
|
-
var onMouseMove = jest.fn();
|
|
179
|
-
var gp = graphProps();
|
|
180
|
-
gp.scale.x.invert = jest.fn().mockReturnValue(5);
|
|
181
|
-
gp.scale.y.invert = jest.fn().mockReturnValue(10);
|
|
182
|
-
var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
|
|
183
|
-
onMouseMove: onMouseMove,
|
|
184
|
-
graphProps: gp
|
|
185
|
-
});
|
|
186
|
-
var mockNode = document.createElement('div');
|
|
187
|
-
var mockEvent = {
|
|
188
|
-
clientX: 100,
|
|
189
|
-
clientY: 200
|
|
190
|
-
};
|
|
191
|
-
var mockSelection = {
|
|
192
|
-
_groups: [[mockNode]],
|
|
193
|
-
node: function node() {
|
|
194
|
-
return mockNode;
|
|
195
|
-
}
|
|
196
|
-
};
|
|
197
|
-
_d3Selection.select.mockReturnValue(_objectSpread(_objectSpread({}, mockSelection), {}, {
|
|
198
|
-
on: function on(event, handler) {
|
|
199
|
-
mockOn(event, handler);
|
|
200
|
-
if (event === 'mousemove' && handler) {
|
|
201
|
-
_d3Selection.pointer.mockReturnValue([100, 200]);
|
|
202
|
-
handler();
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
}));
|
|
206
|
-
(0, _react.render)(/*#__PURE__*/_react2["default"].createElement(_root.Root, props, "hi"));
|
|
207
|
-
expect(gp.snap.x).toHaveBeenCalledWith(5);
|
|
208
|
-
expect(gp.snap.y).toHaveBeenCalledWith(10);
|
|
209
|
-
});
|
|
210
|
-
it('calls onMouseMove handler with snapped coordinates', function () {
|
|
211
|
-
var onMouseMove = jest.fn();
|
|
212
|
-
var gp = graphProps();
|
|
213
|
-
gp.scale.x.invert = jest.fn().mockReturnValue(7);
|
|
214
|
-
gp.scale.y.invert = jest.fn().mockReturnValue(14);
|
|
215
|
-
gp.snap.x = jest.fn().mockReturnValue(10);
|
|
216
|
-
gp.snap.y = jest.fn().mockReturnValue(15);
|
|
217
|
-
var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
|
|
218
|
-
onMouseMove: onMouseMove,
|
|
219
|
-
graphProps: gp
|
|
220
|
-
});
|
|
221
|
-
var mockNode = document.createElement('div');
|
|
222
|
-
var mockEvent = {
|
|
223
|
-
clientX: 100,
|
|
224
|
-
clientY: 200
|
|
225
|
-
};
|
|
226
|
-
var mockSelection = {
|
|
227
|
-
_groups: [[mockNode]],
|
|
228
|
-
node: function node() {
|
|
229
|
-
return mockNode;
|
|
230
|
-
}
|
|
231
|
-
};
|
|
232
|
-
_d3Selection.select.mockReturnValue(_objectSpread(_objectSpread({}, mockSelection), {}, {
|
|
233
|
-
on: function on(event, handler) {
|
|
234
|
-
mockOn(event, handler);
|
|
235
|
-
if (event === 'mousemove' && handler) {
|
|
236
|
-
_d3Selection.pointer.mockReturnValue([100, 200]);
|
|
237
|
-
handler(mockEvent);
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
}));
|
|
241
|
-
(0, _react.render)(/*#__PURE__*/_react2["default"].createElement(_root.Root, props, "hi"));
|
|
242
|
-
expect(onMouseMove).toHaveBeenCalledWith({
|
|
243
|
-
x: 10,
|
|
244
|
-
y: 15
|
|
245
|
-
});
|
|
246
|
-
});
|
|
247
|
-
it('does not call onMouseMove when handler is not provided', function () {
|
|
248
|
-
var gp = graphProps();
|
|
249
|
-
var props = _objectSpread(_objectSpread({}, defaultProps), {}, {
|
|
250
|
-
graphProps: gp
|
|
251
|
-
});
|
|
252
|
-
var mockNode = document.createElement('div');
|
|
253
|
-
var mockEvent = {
|
|
254
|
-
clientX: 100,
|
|
255
|
-
clientY: 200
|
|
256
|
-
};
|
|
257
|
-
var mockSelection = {
|
|
258
|
-
_groups: [[mockNode]],
|
|
259
|
-
node: function node() {
|
|
260
|
-
return mockNode;
|
|
261
|
-
}
|
|
262
|
-
};
|
|
263
|
-
_d3Selection.select.mockReturnValue(_objectSpread(_objectSpread({}, mockSelection), {}, {
|
|
264
|
-
on: function on(event, handler) {
|
|
265
|
-
mockOn(event, handler);
|
|
266
|
-
if (event === 'mousemove' && handler) {
|
|
267
|
-
_d3Selection.pointer.mockReturnValue([100, 200]);
|
|
268
|
-
// Should not throw error when onMouseMove is not provided
|
|
269
|
-
expect(function () {
|
|
270
|
-
return handler(mockEvent);
|
|
271
|
-
}).not.toThrow();
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
}));
|
|
275
|
-
(0, _react.render)(/*#__PURE__*/_react2["default"].createElement(_root.Root, props, "hi"));
|
|
276
|
-
|
|
277
|
-
// Verify scale methods were not called (early return in mouseMove)
|
|
278
|
-
expect(gp.scale.x.invert).not.toHaveBeenCalled();
|
|
279
|
-
expect(gp.scale.y.invert).not.toHaveBeenCalled();
|
|
280
|
-
});
|
|
281
|
-
});
|
|
282
|
-
});
|
|
283
|
-
});
|
|
284
|
-
});
|
|
285
|
-
//# sourceMappingURL=root.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"root.test.js","names":["_react","require","_react2","_interopRequireDefault","_root","_d3Selection","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","jest","mock","select","fn","pointer","scaleMock","n","invert","graphProps","scale","x","y","snap","domain","min","max","step","range","size","width","height","describe","mockOn","defaultProps","beforeEach","mockReturnValue","on","classes","afterEach","cleanup","clearAllMocks","it","_render","render","createElement","Root","container","getByText","expect","firstChild","toBeInTheDocument","toHaveBeenCalled","toHaveBeenCalledWith","any","Function","_render2","unmount","mockClear","onMouseMove","gp","props","mockNode","document","mockEvent","clientX","clientY","mockSelection","_groups","node","event","handler","not","toThrow"],"sources":["../../src/__tests__/root.test.jsx"],"sourcesContent":["import { cleanup, render } from '@testing-library/react';\nimport React from 'react';\nimport { Root } from '../root';\nimport { pointer, select } from 'd3-selection';\n\njest.mock('d3-selection', () => ({\n select: jest.fn(),\n pointer: jest.fn(),\n}));\n\nconst scaleMock = () => {\n const fn = jest.fn((n) => n);\n fn.invert = jest.fn((n) => n);\n return fn;\n};\n\nconst graphProps = () => ({\n scale: {\n x: scaleMock(),\n y: scaleMock(),\n },\n snap: {\n x: jest.fn((n) => n),\n y: jest.fn((n) => n),\n },\n domain: {\n min: 0,\n max: 1,\n step: 1,\n },\n range: {\n min: 0,\n max: 1,\n step: 1,\n },\n size: {\n width: 400,\n height: 400,\n },\n});\n\ndescribe('root', () => {\n let mockOn;\n let defaultProps;\n\n beforeEach(() => {\n mockOn = jest.fn();\n select.mockReturnValue({\n on: mockOn,\n });\n pointer.mockReturnValue([0, 0]);\n\n defaultProps = {\n classes: {},\n graphProps: graphProps(),\n };\n });\n\n afterEach(() => {\n cleanup();\n jest.clearAllMocks();\n });\n\n it('renders with children', () => {\n const { container, getByText } = render(<Root {...defaultProps}>hi</Root>);\n expect(container.firstChild).toBeInTheDocument();\n expect(getByText('hi')).toBeInTheDocument();\n });\n\n describe('logic', () => {\n describe('mousemove', () => {\n describe('mount/unmount', () => {\n it('adds mousemove listener on componentDidMount', () => {\n render(<Root {...defaultProps}>hi</Root>);\n\n // Verify that select was called with the g element\n expect(select).toHaveBeenCalled();\n\n // Verify that on() was called with 'mousemove' and a function\n expect(mockOn).toHaveBeenCalledWith('mousemove', expect.any(Function));\n });\n\n it('removes mousemove listener on componentWillUnmount', () => {\n const { unmount } = render(<Root {...defaultProps}>hi</Root>);\n\n // Clear previous calls to isolate unmount behavior\n mockOn.mockClear();\n select.mockClear();\n\n unmount();\n\n // Verify that select was called during unmount\n expect(select).toHaveBeenCalled();\n\n // Verify that on() was called with 'mousemove' and null to remove the listener\n expect(mockOn).toHaveBeenCalledWith('mousemove', null);\n });\n });\n\n describe('mouseMove function', () => {\n it('calls pointer with correct arguments', () => {\n const onMouseMove = jest.fn();\n const gp = graphProps();\n const props = {\n ...defaultProps,\n onMouseMove,\n graphProps: gp,\n };\n\n const mockNode = document.createElement('div');\n const mockEvent = { clientX: 10, clientY: 20 };\n const mockSelection = {\n _groups: [[mockNode]],\n node: () => mockNode,\n };\n\n // Mock select to return our mockSelection\n select.mockReturnValue({\n ...mockSelection,\n on: (event, handler) => {\n mockOn(event, handler);\n // When 'mousemove' is registered, immediately test it\n if (event === 'mousemove' && handler) {\n pointer.mockReturnValue([10, 20]);\n // Handler is bound with mockSelection as first arg, so call with event\n handler(mockEvent);\n }\n },\n });\n\n render(<Root {...props}>hi</Root>);\n\n // Verify pointer was called with the event and correct node\n expect(pointer).toHaveBeenCalledWith(mockEvent, mockNode);\n });\n\n it('calls scale.x.invert and scale.y.invert', () => {\n const onMouseMove = jest.fn();\n const gp = graphProps();\n const props = {\n ...defaultProps,\n onMouseMove,\n graphProps: gp,\n };\n\n const mockNode = document.createElement('div');\n const mockEvent = { clientX: 15, clientY: 25 };\n const mockSelection = {\n _groups: [[mockNode]],\n node: () => mockNode,\n };\n\n select.mockReturnValue({\n ...mockSelection,\n on: (event, handler) => {\n mockOn(event, handler);\n if (event === 'mousemove' && handler) {\n pointer.mockReturnValue([15, 25]);\n handler(mockEvent);\n }\n },\n });\n\n render(<Root {...props}>hi</Root>);\n\n expect(gp.scale.x.invert).toHaveBeenCalledWith(15);\n expect(gp.scale.y.invert).toHaveBeenCalledWith(25);\n });\n\n it('calls snap.x and snap.y with inverted coordinates', () => {\n const onMouseMove = jest.fn();\n const gp = graphProps();\n gp.scale.x.invert = jest.fn().mockReturnValue(5);\n gp.scale.y.invert = jest.fn().mockReturnValue(10);\n const props = {\n ...defaultProps,\n onMouseMove,\n graphProps: gp,\n };\n\n const mockNode = document.createElement('div');\n const mockEvent = { clientX: 100, clientY: 200 };\n const mockSelection = {\n _groups: [[mockNode]],\n node: () => mockNode,\n };\n\n select.mockReturnValue({\n ...mockSelection,\n on: (event, handler) => {\n mockOn(event, handler);\n if (event === 'mousemove' && handler) {\n pointer.mockReturnValue([100, 200]);\n handler();\n }\n },\n });\n\n render(<Root {...props}>hi</Root>);\n\n expect(gp.snap.x).toHaveBeenCalledWith(5);\n expect(gp.snap.y).toHaveBeenCalledWith(10);\n });\n\n it('calls onMouseMove handler with snapped coordinates', () => {\n const onMouseMove = jest.fn();\n const gp = graphProps();\n gp.scale.x.invert = jest.fn().mockReturnValue(7);\n gp.scale.y.invert = jest.fn().mockReturnValue(14);\n gp.snap.x = jest.fn().mockReturnValue(10);\n gp.snap.y = jest.fn().mockReturnValue(15);\n\n const props = {\n ...defaultProps,\n onMouseMove,\n graphProps: gp,\n };\n\n const mockNode = document.createElement('div');\n const mockEvent = { clientX: 100, clientY: 200 };\n const mockSelection = {\n _groups: [[mockNode]],\n node: () => mockNode,\n };\n\n select.mockReturnValue({\n ...mockSelection,\n on: (event, handler) => {\n mockOn(event, handler);\n if (event === 'mousemove' && handler) {\n pointer.mockReturnValue([100, 200]);\n handler(mockEvent);\n }\n },\n });\n\n render(<Root {...props}>hi</Root>);\n\n expect(onMouseMove).toHaveBeenCalledWith({ x: 10, y: 15 });\n });\n\n it('does not call onMouseMove when handler is not provided', () => {\n const gp = graphProps();\n const props = {\n ...defaultProps,\n graphProps: gp,\n };\n\n const mockNode = document.createElement('div');\n const mockEvent = { clientX: 100, clientY: 200 };\n const mockSelection = {\n _groups: [[mockNode]],\n node: () => mockNode,\n };\n\n select.mockReturnValue({\n ...mockSelection,\n on: (event, handler) => {\n mockOn(event, handler);\n if (event === 'mousemove' && handler) {\n pointer.mockReturnValue([100, 200]);\n // Should not throw error when onMouseMove is not provided\n expect(() => handler(mockEvent)).not.toThrow();\n }\n },\n });\n\n render(<Root {...props}>hi</Root>);\n\n // Verify scale methods were not called (early return in mouseMove)\n expect(gp.scale.x.invert).not.toHaveBeenCalled();\n expect(gp.scale.y.invert).not.toHaveBeenCalled();\n });\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
5
|
-
var _trig = require("../trig");
|
|
6
|
-
var _utils = require("../utils");
|
|
7
|
-
var _debug = _interopRequireDefault(require("debug"));
|
|
8
|
-
var _templateObject, _templateObject2, _templateObject3;
|
|
9
|
-
var log = (0, _debug["default"])('pie-lib:plot:trig:test');
|
|
10
|
-
var vs = function vs(v) {
|
|
11
|
-
if (!v) {
|
|
12
|
-
return '';
|
|
13
|
-
}
|
|
14
|
-
if (Number.isFinite(v.x) && Number.isFinite(v.y)) {
|
|
15
|
-
return "[".concat(v.x, ",").concat(v.y, "]");
|
|
16
|
-
}
|
|
17
|
-
return JSON.stringify(v);
|
|
18
|
-
};
|
|
19
|
-
var p = function p(strings) {
|
|
20
|
-
for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
21
|
-
values[_key - 1] = arguments[_key];
|
|
22
|
-
}
|
|
23
|
-
return strings.reduce(function (acc, s, index) {
|
|
24
|
-
return "".concat(acc).concat(s).concat(vs(values[index]));
|
|
25
|
-
}, '');
|
|
26
|
-
};
|
|
27
|
-
describe('trig', function () {
|
|
28
|
-
describe('angle', function () {
|
|
29
|
-
var assertAngle = function assertAngle(a, b, expected) {
|
|
30
|
-
it(p(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["", ", ", " => ", ""])), a, b, (0, _trig.toDegrees)(expected)), function () {
|
|
31
|
-
var result = (0, _trig.angle)(a, b);
|
|
32
|
-
expect(result).toBeCloseTo(expected);
|
|
33
|
-
});
|
|
34
|
-
};
|
|
35
|
-
assertAngle((0, _utils.xy)(0, 0), (0, _utils.xy)(1, 1), (0, _trig.toRadians)(45));
|
|
36
|
-
assertAngle((0, _utils.xy)(0, 0), (0, _utils.xy)(0, 1), (0, _trig.toRadians)(90));
|
|
37
|
-
assertAngle((0, _utils.xy)(0, 0), (0, _utils.xy)(-1, 1), (0, _trig.toRadians)(135));
|
|
38
|
-
assertAngle((0, _utils.xy)(0, 0), (0, _utils.xy)(-1, 0), (0, _trig.toRadians)(180));
|
|
39
|
-
assertAngle((0, _utils.xy)(0, 0), (0, _utils.xy)(-1, -1), (0, _trig.toRadians)(225));
|
|
40
|
-
assertAngle((0, _utils.xy)(0, 0), (0, _utils.xy)(0, -1), (0, _trig.toRadians)(270));
|
|
41
|
-
assertAngle((0, _utils.xy)(0, 0), (0, _utils.xy)(1, -1), (0, _trig.toRadians)(315));
|
|
42
|
-
assertAngle((0, _utils.xy)(1, 1), (0, _utils.xy)(0, 0), (0, _trig.toRadians)(225));
|
|
43
|
-
assertAngle((0, _utils.xy)(0, 0), (0, _utils.xy)(1, 1), (0, _trig.toRadians)(45));
|
|
44
|
-
assertAngle((0, _utils.xy)(0, 0), (0, _utils.xy)(2, 1), (0, _trig.toRadians)(26.565));
|
|
45
|
-
assertAngle((0, _utils.xy)(0, 0), (0, _utils.xy)(3, 1), (0, _trig.toRadians)(18.434));
|
|
46
|
-
assertAngle((0, _utils.xy)(0, 0), (0, _utils.xy)(4, 1), (0, _trig.toRadians)(14.036));
|
|
47
|
-
assertAngle((0, _utils.xy)(0, 0), (0, _utils.xy)(5, 1), (0, _trig.toRadians)(11.309));
|
|
48
|
-
});
|
|
49
|
-
describe('acuteXAngle', function () {
|
|
50
|
-
var assertAcute = function assertAcute(input, expected) {
|
|
51
|
-
it("".concat((0, _trig.toDegrees)(input), " => ").concat((0, _trig.toDegrees)(expected)), function () {
|
|
52
|
-
var result = (0, _trig.acuteXAngle)(input);
|
|
53
|
-
log("result: ".concat((0, _trig.toDegrees)(result)));
|
|
54
|
-
expect(result).toBeCloseTo(expected);
|
|
55
|
-
});
|
|
56
|
-
};
|
|
57
|
-
assertAcute((0, _trig.toRadians)(45), (0, _trig.toRadians)(45));
|
|
58
|
-
assertAcute((0, _trig.toRadians)(100), (0, _trig.toRadians)(80));
|
|
59
|
-
assertAcute((0, _trig.toRadians)(190), (0, _trig.toRadians)(10));
|
|
60
|
-
assertAcute((0, _trig.toRadians)(350), (0, _trig.toRadians)(10));
|
|
61
|
-
});
|
|
62
|
-
describe('acuteYAngle', function () {
|
|
63
|
-
var assertAcute = function assertAcute(input, expected) {
|
|
64
|
-
it("".concat((0, _trig.toDegrees)(input), " => ").concat((0, _trig.toDegrees)(expected)), function () {
|
|
65
|
-
var result = (0, _trig.acuteYAngle)(input);
|
|
66
|
-
log("result: ".concat((0, _trig.toDegrees)(result)));
|
|
67
|
-
expect(result).toBeCloseTo(expected);
|
|
68
|
-
});
|
|
69
|
-
};
|
|
70
|
-
assertAcute((0, _trig.toRadians)(45), (0, _trig.toRadians)(45));
|
|
71
|
-
assertAcute((0, _trig.toRadians)(100), (0, _trig.toRadians)(10));
|
|
72
|
-
assertAcute((0, _trig.toRadians)(190), (0, _trig.toRadians)(80));
|
|
73
|
-
assertAcute((0, _trig.toRadians)(350), (0, _trig.toRadians)(80));
|
|
74
|
-
});
|
|
75
|
-
describe('edges', function () {
|
|
76
|
-
var assertEdges = function assertEdges(domain, range) {
|
|
77
|
-
return function (from, to, expected) {
|
|
78
|
-
it(p(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["", ", ", " + ", " -> ", " => ", "", ""])), domain, range, from, to, expected[0], expected[1]), function () {
|
|
79
|
-
var result = (0, _trig.edges)(domain, range)(from, to);
|
|
80
|
-
expect(result[0].x).toBeCloseTo(expected[0].x);
|
|
81
|
-
expect(result[0].y).toBeCloseTo(expected[0].y);
|
|
82
|
-
expect(result[1].x).toBeCloseTo(expected[1].x);
|
|
83
|
-
expect(result[1].y).toBeCloseTo(expected[1].y);
|
|
84
|
-
});
|
|
85
|
-
};
|
|
86
|
-
};
|
|
87
|
-
var one = assertEdges({
|
|
88
|
-
min: -4,
|
|
89
|
-
max: 4
|
|
90
|
-
}, {
|
|
91
|
-
min: -4,
|
|
92
|
-
max: 4
|
|
93
|
-
});
|
|
94
|
-
one((0, _utils.xy)(0, 0), (0, _utils.xy)(1, 1), [(0, _utils.xy)(4, 4), (0, _utils.xy)(-4, -4)]);
|
|
95
|
-
one((0, _utils.xy)(0, 0), (0, _utils.xy)(2, 1), [(0, _utils.xy)(4, 2), (0, _utils.xy)(-4, -2)]);
|
|
96
|
-
one((0, _utils.xy)(1, 1), (0, _utils.xy)(2, 2), [(0, _utils.xy)(4, 4), (0, _utils.xy)(-4, -4)]);
|
|
97
|
-
one((0, _utils.xy)(1, 0), (0, _utils.xy)(2, 0), [(0, _utils.xy)(4, 0), (0, _utils.xy)(-4, 0)]);
|
|
98
|
-
one((0, _utils.xy)(1, 0), (0, _utils.xy)(-2, 0), [(0, _utils.xy)(-4, 0), (0, _utils.xy)(4, 0)]);
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* domain {min: -5, max: 5, padding: 0, step: 1, labelStep: 1}labelStep: 1max: 5min: -5padding: 0step: 1__proto__: Object range: {min: -5, max: 5, padding: 0, step: 1, labelStep: 1} a: {x: -5, y: 0} b: {x: -5, y: 2} edges: Point {x: -5, y: 5} Point {x: -5, y: 2}
|
|
102
|
-
*/
|
|
103
|
-
var lineIssue = assertEdges({
|
|
104
|
-
min: -5,
|
|
105
|
-
max: 5
|
|
106
|
-
}, {
|
|
107
|
-
min: -5,
|
|
108
|
-
max: 5
|
|
109
|
-
});
|
|
110
|
-
lineIssue((0, _utils.xy)(-5, -0), (0, _utils.xy)(-5, 2), [(0, _utils.xy)(-5, 5), (0, _utils.xy)(-5, -5)]);
|
|
111
|
-
});
|
|
112
|
-
describe('diffEdge', function () {
|
|
113
|
-
var assertDiffEdge = function assertDiffEdge(bounds, from, to, expected) {
|
|
114
|
-
it(p(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["<", "> ", " -> ", " => ", ""])), bounds, from, to, expected), function () {
|
|
115
|
-
var result = (0, _trig.diffEdge)(bounds, from, to);
|
|
116
|
-
expect(result.x).toBeCloseTo(expected.x);
|
|
117
|
-
expect(result.y).toBeCloseTo(expected.y);
|
|
118
|
-
});
|
|
119
|
-
};
|
|
120
|
-
var twoTwo = assertDiffEdge.bind(null, (0, _utils.xy)(2, 2));
|
|
121
|
-
twoTwo((0, _utils.xy)(0, 0), (0, _utils.xy)(1, 1), (0, _utils.xy)(2, 2));
|
|
122
|
-
twoTwo((0, _utils.xy)(0, 0), (0, _utils.xy)(1, 2), (0, _utils.xy)(1, 2));
|
|
123
|
-
twoTwo((0, _utils.xy)(0, 0), (0, _utils.xy)(2, 2), (0, _utils.xy)(2, 2));
|
|
124
|
-
twoTwo((0, _utils.xy)(0, 0), (0, _utils.xy)(2, 2), (0, _utils.xy)(2, 2));
|
|
125
|
-
twoTwo((0, _utils.xy)(0, 0), (0, _utils.xy)(-1, 1), (0, _utils.xy)(-2, 2));
|
|
126
|
-
twoTwo((0, _utils.xy)(0, 0), (0, _utils.xy)(-1, -1), (0, _utils.xy)(-2, -2));
|
|
127
|
-
var fourFour = assertDiffEdge.bind(null, (0, _utils.xy)(4, 4));
|
|
128
|
-
fourFour((0, _utils.xy)(0, 0), (0, _utils.xy)(1, 1), (0, _utils.xy)(4, 4));
|
|
129
|
-
fourFour((0, _utils.xy)(0, 0), (0, _utils.xy)(1, 2), (0, _utils.xy)(2, 4));
|
|
130
|
-
fourFour((0, _utils.xy)(0, 0), (0, _utils.xy)(2, 1), (0, _utils.xy)(4, 2));
|
|
131
|
-
fourFour((0, _utils.xy)(0, 0), (0, _utils.xy)(-1, 1), (0, _utils.xy)(-4, 4));
|
|
132
|
-
fourFour((0, _utils.xy)(0, 0), (0, _utils.xy)(-1, 1), (0, _utils.xy)(-4, 4));
|
|
133
|
-
assertDiffEdge((0, _utils.xy)(-4, -4), (0, _utils.xy)(0, 0), (0, _utils.xy)(-1, -1), (0, _utils.xy)(-4, -4));
|
|
134
|
-
assertDiffEdge((0, _utils.xy)(4, 4), (0, _utils.xy)(1, 1), (0, _utils.xy)(2, 2), (0, _utils.xy)(4, 4));
|
|
135
|
-
assertDiffEdge((0, _utils.xy)(4, 4), (0, _utils.xy)(2, 2), (0, _utils.xy)(3, 3), (0, _utils.xy)(4, 4));
|
|
136
|
-
assertDiffEdge((0, _utils.xy)(-4, -4), (0, _utils.xy)(-1, -1), (0, _utils.xy)(-2, -2), (0, _utils.xy)(-4, -4));
|
|
137
|
-
assertDiffEdge((0, _utils.xy)(-4, 4), (0, _utils.xy)(-1, -1), (0, _utils.xy)(-2, 0), (0, _utils.xy)(-4, 2));
|
|
138
|
-
var lineIssue = assertDiffEdge.bind(null, (0, _utils.xy)(-5, -5));
|
|
139
|
-
lineIssue((0, _utils.xy)(-5, 2), (0, _utils.xy)(-5, 0), (0, _utils.xy)(-5, -5));
|
|
140
|
-
//Top Right
|
|
141
|
-
assertDiffEdge((0, _utils.xy)(5, 5), (0, _utils.xy)(0, 5), (0, _utils.xy)(2, 5), (0, _utils.xy)(5, 5));
|
|
142
|
-
assertDiffEdge((0, _utils.xy)(5, 5), (0, _utils.xy)(5, 0), (0, _utils.xy)(5, 1), (0, _utils.xy)(5, 5));
|
|
143
|
-
|
|
144
|
-
// //Bottom Right
|
|
145
|
-
assertDiffEdge((0, _utils.xy)(5, -5), (0, _utils.xy)(5, 0), (0, _utils.xy)(5, -0.1), (0, _utils.xy)(5, -5));
|
|
146
|
-
assertDiffEdge((0, _utils.xy)(5, -5), (0, _utils.xy)(0, -5), (0, _utils.xy)(1, -5), (0, _utils.xy)(5, -5));
|
|
147
|
-
|
|
148
|
-
//Top Left
|
|
149
|
-
assertDiffEdge((0, _utils.xy)(-5, 5), (0, _utils.xy)(-5, 0), (0, _utils.xy)(-5, 0.1), (0, _utils.xy)(-5, 5));
|
|
150
|
-
assertDiffEdge((0, _utils.xy)(-5, 5), (0, _utils.xy)(0, 5), (0, _utils.xy)(-1, 5), (0, _utils.xy)(-5, 5));
|
|
151
|
-
|
|
152
|
-
//Bottom Left
|
|
153
|
-
assertDiffEdge((0, _utils.xy)(-5, -5), (0, _utils.xy)(-5, 0), (0, _utils.xy)(-5, -0.1), (0, _utils.xy)(-5, -5));
|
|
154
|
-
assertDiffEdge((0, _utils.xy)(-5, -5), (0, _utils.xy)(0, -5), (0, _utils.xy)(-1, -5), (0, _utils.xy)(-5, -5));
|
|
155
|
-
});
|
|
156
|
-
describe('getOpposingSide', function () {
|
|
157
|
-
var assertOpposingSide = function assertOpposingSide(hyp, angle, expected) {
|
|
158
|
-
it("".concat(hyp, ", ").concat(angle, " = ").concat(expected), function () {
|
|
159
|
-
var radians = (0, _trig.toRadians)(angle);
|
|
160
|
-
var result = (0, _trig.getOpposingSide)(hyp, radians);
|
|
161
|
-
expect(result).toBeCloseTo(expected);
|
|
162
|
-
});
|
|
163
|
-
};
|
|
164
|
-
assertOpposingSide(1, 45, 0.707);
|
|
165
|
-
assertOpposingSide(1.25, 45, 0.88);
|
|
166
|
-
});
|
|
167
|
-
});
|
|
168
|
-
//# sourceMappingURL=trig.test.js.map
|