UNPKG

@fractorysolutions/safe-units

Version:
61 lines 3.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var genericMeasureFactory_1 = require("../genericMeasureFactory"); var genericMeasureUtils_1 = require("../genericMeasureUtils"); var numberMeasure_1 = require("../numberMeasure"); describe("Generic measures", function () { describe("function wrappers", function () { var meters = numberMeasure_1.Measure.dimension("L", "m"); var add = function (left, right) { return left + right; }; it("unary wrapper", function () { var increment = (0, genericMeasureUtils_1.wrapUnaryFn)(function (x) { return x + 1; }); var result = increment(numberMeasure_1.Measure.of(10, meters)); expect(result).toEqual(numberMeasure_1.Measure.of(11, meters)); }); it("binary wrapper", function () { var measureAdd = (0, genericMeasureUtils_1.wrapBinaryFn)(add); var result = measureAdd(numberMeasure_1.Measure.of(5, meters), numberMeasure_1.Measure.of(10, meters)); expect(result).toEqual(numberMeasure_1.Measure.of(15, meters)); }); it("spread wrapper", function () { var sum = (0, genericMeasureUtils_1.wrapSpreadFn)(function () { var values = []; for (var _i = 0; _i < arguments.length; _i++) { values[_i] = arguments[_i]; } return values.reduce(add, 0); }); var result = sum(numberMeasure_1.Measure.of(5, meters), numberMeasure_1.Measure.of(10, meters), numberMeasure_1.Measure.of(15, meters)); expect(result).toEqual(numberMeasure_1.Measure.of(30, meters)); }); it("reducer wrapper", function () { var sum = (0, genericMeasureUtils_1.wrapReducerFn)(add); var result = sum(numberMeasure_1.Measure.of(5, meters), numberMeasure_1.Measure.of(10, meters), numberMeasure_1.Measure.of(15, meters)); expect(result).toEqual(numberMeasure_1.Measure.of(30, meters)); }); }); describe("static methods", function () { var numericOps = { one: function () { return 1; }, neg: function (x) { return -x; }, add: function (x, y) { return x + y; }, sub: function (x, y) { return x - y; }, mult: function (x, y) { return x * y; }, div: function (x, y) { return x / y; }, pow: function (x, y) { return Math.pow(x, y); }, compare: function (x, y) { return x - y; }, format: function (x) { return "".concat(x); }, }; it("should attach static methods when given", function () { var LocalMeasure = (0, genericMeasureFactory_1.createMeasureType)(numericOps, { staticMethod: function () { return "method"; }, }); expect("staticMethod" in LocalMeasure).toBe(true); }); it("should not attach static methods when omitted", function () { var LocalMeasure = (0, genericMeasureFactory_1.createMeasureType)(numericOps); expect("staticMethod" in LocalMeasure).toBe(false); }); }); }); //# sourceMappingURL=genericMeasureTests.js.map