@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.
@@ -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