calculate-items
Version:
Items calculation template
63 lines (61 loc) • 3.38 kB
text/typescript
import NumberFormatter from "../../utils/NumberFormatter";
describe("NumberFormatter.test", () => {
describe("Money format utils: NumberFormatter.format()", () => {
test("Falsy values", () => {
expect(NumberFormatter.format(0)).toEqual("0.00");
// expect(NumberFormatter.format(null)).toEqual("0");
// expect(NumberFormatter.format(undefined)).toEqual("0");
expect(NumberFormatter.format(0.0)).toEqual("0.00");
})
test("Integer numbers", () => {
expect(NumberFormatter.format(1000)).toEqual("1 000.00");
expect(NumberFormatter.format(3440325423)).toEqual("3 440 325 423.00");
});
test("Float numbers", () => {
expect(NumberFormatter.format(67000.33)).toEqual("67 000.33");
expect(NumberFormatter.format(30000 / 23)).toEqual("1 304.35");
});
});
describe("MathJs fraction round utils: tiyinRound()", () => {
test("Falsy values", () => {
expect(NumberFormatter.round(0)).toEqual(0);
// expect(NumberFormatter.round(null)).toEqual(0);
// expect(NumberFormatter.round(undefined)).toEqual(0);
expect(NumberFormatter.round(0.0)).toEqual(0);
})
test("Integer numbers", () => {
expect(NumberFormatter.round(1000)).toEqual(1000);
expect(NumberFormatter.round(3440325423)).toEqual(3440325423);
});
test("Float numbers", () => {
expect(NumberFormatter.round(67000.33)).toEqual(67000.33);
expect(NumberFormatter.round(30000 / 23)).toEqual(1304.35);
});
});
describe("MathJs evaluate utils: NumberFormatter.evaluateAndRound()", () => {
test("Falsy expression", () => {
expect(NumberFormatter.evaluateAndRound('')).toEqual(0);
expect(NumberFormatter.evaluateAndRound(' ')).toEqual(0);
expect(NumberFormatter.evaluateAndRound('0')).toEqual(0);
// expect(NumberFormatter.evaluateAndRound(null)).toEqual(0);
// expect(NumberFormatter.evaluateAndRound(undefined)).toEqual(0);
expect(NumberFormatter.evaluateAndRound('0.0')).toEqual(0);
expect(NumberFormatter.evaluateAndRound('0.0000001')).toEqual(0);
})
test("Integer expression", () => {
expect(NumberFormatter.evaluateAndRound("1000+(-8999+222-8222)-2*800+98000")).toEqual(80401);
expect(NumberFormatter.evaluateAndRound("3440325423")).toEqual(3440325423);
});
test("Float expression", () => {
expect(NumberFormatter.evaluateAndRound("(2000+5000-2233)*25000-3*4*7000/343")).toEqual(119174755.1);
expect(NumberFormatter.evaluateAndRound("67000.33 + 2*8000 + 3*4*7000/343")).toEqual(83245.23);
expect(NumberFormatter.evaluateAndRound("2/4")).toEqual(0.5);
});
test("Failed expression", () => {
expect(() => NumberFormatter.evaluateAndRound("Invalid expression")).toThrowError();
expect(() => NumberFormatter.evaluateAndRound("sdfa+sadf-sd")).toThrowError();
expect(() => NumberFormatter.evaluateAndRound("2**4")).toThrow(SyntaxError);
expect(() => NumberFormatter.evaluateAndRound(".$#")).toThrowError();
});
});
});