Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
96 lines (80 loc) · 3.19 KB

File metadata and controls

96 lines (80 loc) · 3.19 KB
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import 'jest';
import { NormalizedDataPoint } from './types';
import { calculateAverageDataPoint, calculateTriangleArea, splitIntoBuckets } from './utils';
describe('utils', () => {
describe('calculateTriangleArea', () => {
it('should return 0 for a collapsed triangle', () => {
const pointA: NormalizedDataPoint = [1, 2];
const pointB: NormalizedDataPoint = [2, 2];
const pointC: NormalizedDataPoint = [3, 2];
expect(calculateTriangleArea(pointA, pointB, pointC)).toBe(0);
});
it('should return correct area for a triangle aligned with an axis', () => {
const pointA: NormalizedDataPoint = [1, 0];
const pointB: NormalizedDataPoint = [2, 5];
const pointC: NormalizedDataPoint = [3, 0];
expect(calculateTriangleArea(pointA, pointB, pointC)).toBe(5);
});
it('should return correct area for a triangle not aligned with an axis', () => {
const pointA: NormalizedDataPoint = [1, 2];
const pointB: NormalizedDataPoint = [2, 5];
const pointC: NormalizedDataPoint = [3, 5];
expect(calculateTriangleArea(pointA, pointB, pointC)).toBe(1.5);
});
it('should return correct area for a triangle covering negative quadrants', () => {
const pointA: NormalizedDataPoint = [-1, -1];
const pointB: NormalizedDataPoint = [0, 1];
const pointC: NormalizedDataPoint = [1, -1];
expect(calculateTriangleArea(pointA, pointB, pointC)).toBe(2);
});
});
describe('calculateAverageDataPoint', () => {
it('should return undefined when passed no data points', () => {
expect(calculateAverageDataPoint()).toBe(undefined);
});
it('should return the same point when passed one data point', () => {
expect(calculateAverageDataPoint([0, 1])).toEqual([0, 1]);
});
it('should return correct point average', () => {
const pointA: NormalizedDataPoint = [-1, -1];
const pointB: NormalizedDataPoint = [0, 2];
const pointC: NormalizedDataPoint = [1, -1];
expect(calculateAverageDataPoint(pointA, pointB, pointC)).toEqual([0, 0]);
});
});
describe('spliIntoBuckets', () => {
const data: [number, number][] = [
[0, 2],
[1, -1],
[2, 2],
[3, -1],
[4, 2],
[5, -1],
[6, 2],
[7, -1],
];
it('should return two buckets with one data point each when passed two data points', () => {
expect(
splitIntoBuckets(
[
[0, 2],
[1, -1],
],
2,
),
).toEqual([[[0, 2]], [[1, -1]]]);
});
it('should return an array of desired length', () => {
expect(splitIntoBuckets(data, 2)).toHaveLength(2);
expect(splitIntoBuckets(data, 3)).toHaveLength(3);
expect(splitIntoBuckets(data, 4)).toHaveLength(4);
expect(splitIntoBuckets(data, 5)).toHaveLength(5);
});
it('should return an array with the first and the last bucket containing the first and the last data points', () => {
expect(splitIntoBuckets(data, 3)[0]).toHaveLength(1);
expect(splitIntoBuckets(data, 3)[0]).toEqual([[0, 2]]);
expect(splitIntoBuckets(data, 3)[2]).toHaveLength(1);
expect(splitIntoBuckets(data, 3)[2]).toEqual([[7, -1]]);
});
});
});
Morty Proxy This is a proxified and sanitized view of the page, visit original site.