@netdata/charts
Version:
Netdata frontend SDK and chart utilities
140 lines (139 loc) • 7.75 kB
JavaScript
;
var _scalableUnits = _interopRequireWildcard(require("./scalableUnits"));
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
describe("scalableUnits", function () {
describe("keys export", function () {
it("contains binary scale keys", function () {
expect(_scalableUnits.keys.binary).toEqual(["1", "Ki", "Mi", "Gi", "Ti"]);
});
it("contains bit scale keys", function () {
expect(_scalableUnits.keys.bit).toEqual(["1", "k", "M", "G", "T", "P", "E", "Z", "Y"]);
});
it("contains decimal scale keys", function () {
expect(_scalableUnits.keys.decimal).toEqual(["1", "K", "M", "B", "T"]);
});
it("contains num scale keys", function () {
expect(_scalableUnits.keys.num).toEqual(["y", "z", "a", "f", "p", "n", "u", "m", "1", "k", "M", "G", "T", "P", "E", "Z", "Y"]);
});
});
describe("binary scales", function () {
it("contains correct binary multipliers", function () {
expect(_scalableUnits["default"].binary.Ki).toBe(1024);
expect(_scalableUnits["default"].binary.Mi).toBe(1048576);
expect(_scalableUnits["default"].binary.Gi).toBe(1073741824);
expect(_scalableUnits["default"].binary.Ti).toBe(1099511627776);
});
it("uses powers of 1024", function () {
expect(_scalableUnits["default"].binary.Ki).toBe(Math.pow(1024, 1));
expect(_scalableUnits["default"].binary.Mi).toBe(Math.pow(1024, 2));
expect(_scalableUnits["default"].binary.Gi).toBe(Math.pow(1024, 3));
expect(_scalableUnits["default"].binary.Ti).toBe(Math.pow(1024, 4));
});
});
describe("decimal scales", function () {
it("contains correct decimal multipliers", function () {
expect(_scalableUnits["default"].decimal.K).toBe(1000);
expect(_scalableUnits["default"].decimal.M).toBe(1000000);
expect(_scalableUnits["default"].decimal.B).toBe(1000000000);
expect(_scalableUnits["default"].decimal.T).toBe(1000000000000);
});
it("uses powers of 1000", function () {
expect(_scalableUnits["default"].decimal.K).toBe(Math.pow(1000, 1));
expect(_scalableUnits["default"].decimal.M).toBe(Math.pow(1000, 2));
expect(_scalableUnits["default"].decimal.B).toBe(Math.pow(1000, 3));
expect(_scalableUnits["default"].decimal.T).toBe(Math.pow(1000, 4));
});
});
describe("num scales", function () {
it("contains scientific notation multipliers", function () {
expect(_scalableUnits["default"].num.y).toBe(0.000000000000000000000001); // yocto
expect(_scalableUnits["default"].num.z).toBe(0.000000000000000000001); // zepto
expect(_scalableUnits["default"].num.a).toBe(0.000000000000000001); // atto
expect(_scalableUnits["default"].num.f).toBe(0.000000000000001); // femto
expect(_scalableUnits["default"].num.p).toBe(0.000000000001); // pico
expect(_scalableUnits["default"].num.n).toBe(0.000000001); // nano
expect(_scalableUnits["default"].num.u).toBe(0.000001); // micro
expect(_scalableUnits["default"].num.m).toBe(0.001); // milli
});
it("contains large scale multipliers", function () {
expect(_scalableUnits["default"].num.k).toBe(1000); // kilo
expect(_scalableUnits["default"].num.M).toBe(1000000); // mega
expect(_scalableUnits["default"].num.G).toBe(1000000000); // giga
expect(_scalableUnits["default"].num.T).toBe(1000000000000); // tera
expect(_scalableUnits["default"].num.P).toBe(1000000000000000); // peta
expect(_scalableUnits["default"].num.E).toBe(1e18); // exa
expect(_scalableUnits["default"].num.Z).toBe(1e21); // zetta
expect(_scalableUnits["default"].num.Y).toBe(1e24); // yotta
});
it("uses correct scientific notation for very large numbers", function () {
expect(_scalableUnits["default"].num.E).toBe(1e18);
expect(_scalableUnits["default"].num.Z).toBe(1e21);
expect(_scalableUnits["default"].num.Y).toBe(1e24);
});
it("uses correct scientific notation for very small numbers", function () {
expect(_scalableUnits["default"].num.y).toBe(1e-24);
expect(_scalableUnits["default"].num.z).toBe(1e-21);
expect(_scalableUnits["default"].num.a).toBe(1e-18);
expect(_scalableUnits["default"].num.f).toBe(1e-15);
expect(_scalableUnits["default"].num.p).toBe(1e-12);
expect(_scalableUnits["default"].num.n).toBe(1e-9);
expect(_scalableUnits["default"].num.u).toBe(1e-6);
expect(_scalableUnits["default"].num.m).toBe(1e-3);
});
});
describe("structure validation", function () {
it("exports object with expected structure", function () {
expect(_scalableUnits["default"]).toHaveProperty("binary");
expect(_scalableUnits["default"]).toHaveProperty("decimal");
expect(_scalableUnits["default"]).toHaveProperty("num");
});
it("contains only expected scale types", function () {
var expectedKeys = ["binary", "decimal", "num"];
expect(Object.keys(_scalableUnits["default"])).toEqual(expectedKeys);
});
it("all scale values are numbers", function () {
Object.values(_scalableUnits["default"]).forEach(function (scaleGroup) {
Object.values(scaleGroup).forEach(function (value) {
expect(_typeof(value)).toBe("number");
expect(Number.isFinite(value)).toBe(true);
});
});
});
it("all scale values are positive", function () {
Object.values(_scalableUnits["default"]).forEach(function (scaleGroup) {
Object.values(scaleGroup).forEach(function (value) {
expect(value).toBeGreaterThan(0);
});
});
});
});
describe("mathematical relationships", function () {
it("binary scales follow 1024 progression", function () {
var binary = _scalableUnits["default"].binary;
expect(binary.Mi / binary.Ki).toBe(1024);
expect(binary.Gi / binary.Mi).toBe(1024);
expect(binary.Ti / binary.Gi).toBe(1024);
});
it("decimal scales follow 1000 progression", function () {
var decimal = _scalableUnits["default"].decimal;
expect(decimal.M / decimal.K).toBe(1000);
expect(decimal.B / decimal.M).toBe(1000);
expect(decimal.T / decimal.B).toBe(1000);
});
it("num scales follow 1000 progression for positive powers", function () {
var num = _scalableUnits["default"].num;
expect(num.M / num.k).toBe(1000);
expect(num.G / num.M).toBe(1000);
expect(num.T / num.G).toBe(1000);
expect(num.P / num.T).toBe(1000);
});
it("num scales follow 1000 division for negative powers", function () {
var num = _scalableUnits["default"].num;
expect(num.m / num.u).toBeCloseTo(1000, 6);
expect(num.u / num.n).toBeCloseTo(1000, 6);
expect(num.n / num.p).toBeCloseTo(1000, 6);
expect(num.p / num.f).toBeCloseTo(1000, 6);
});
});
});