UNPKG

@netdata/charts

Version:

Netdata frontend SDK and chart utilities

140 lines (139 loc) 7.75 kB
"use strict"; 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); }); }); });