@netdata/charts
Version:
Netdata frontend SDK and chart utilities
44 lines • 1.71 kB
JavaScript
import { calculateStdDev, calculateMedian, calculatePercentile, calculateAdvancedStats, calculateAllStats } from "./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 = calculateStdDev(testData);
expect(result).toBeCloseTo(2.87, 1);
});
it("calculates median correctly", function () {
expect(calculateMedian(testData)).toBe(5.5);
expect(calculateMedian([1, 2, 3])).toBe(2);
});
it("calculates percentiles correctly", function () {
expect(calculatePercentile(testData, 50)).toBe(5.5);
expect(calculatePercentile(testData, 95)).toBeCloseTo(9.55, 1);
});
it("calculates advanced stats", function () {
var basicStats = {
avg: 5.5
};
var result = 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 = 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(calculateStdDev([])).toBeNull();
expect(calculateMedian([])).toBeNull();
expect(calculatePercentile([], 50)).toBeNull();
expect(calculateAdvancedStats([])).toEqual({});
expect(calculateAllStats([])).toEqual({});
});
});