@netdata/charts
Version:
Netdata frontend SDK and chart utilities
46 lines (45 loc) • 1.84 kB
JavaScript
;
var _statistics = require("./statistics");
describe("Statistics helpers", function () {
var testData = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
it("calculates standard deviation correctly", function () {
var result = (0, _statistics.calculateStdDev)(testData);
expect(result).toBeCloseTo(2.87, 1);
});
it("calculates median correctly", function () {
expect((0, _statistics.calculateMedian)(testData)).toBe(5.5);
expect((0, _statistics.calculateMedian)([1, 2, 3])).toBe(2);
});
it("calculates percentiles correctly", function () {
expect((0, _statistics.calculatePercentile)(testData, 50)).toBe(5.5);
expect((0, _statistics.calculatePercentile)(testData, 95)).toBeCloseTo(9.55, 1);
});
it("calculates advanced stats", function () {
var basicStats = {
avg: 5.5
};
var result = (0, _statistics.calculateAdvancedStats)(testData, basicStats);
expect(result.median).toBe(5.5);
expect(result.stddev).toBeCloseTo(2.87, 1);
expect(result.p95).toBeCloseTo(9.55, 1);
expect(result.range).toBe(9);
expect(result.count).toBe(10);
expect(result.volume).toBe(55);
});
it("calculates all stats", function () {
var result = (0, _statistics.calculateAllStats)(testData);
expect(result.min).toBe(1);
expect(result.max).toBe(10);
expect(result.avg).toBe(5.5);
expect(result.median).toBe(5.5);
expect(result.count).toBe(10);
expect(result.volume).toBe(55);
});
it("handles empty arrays", function () {
expect((0, _statistics.calculateStdDev)([])).toBeNull();
expect((0, _statistics.calculateMedian)([])).toBeNull();
expect((0, _statistics.calculatePercentile)([], 50)).toBeNull();
expect((0, _statistics.calculateAdvancedStats)([])).toEqual({});
expect((0, _statistics.calculateAllStats)([])).toEqual({});
});
});