context("Rounding behaviour", () => { before(() => { cy.login(); cy.visit("/app/"); }); it("Commercial Rounding", () => { cy.window() .its("flt") .then((flt) => { let rounding_method = "Commercial Rounding"; expect(flt("0.5", 0, null, rounding_method)).eq(1); expect(flt("0.3", null, null, rounding_method)).eq(0.3); expect(flt("1.5", 0, null, rounding_method)).eq(2); // positive rounding to integers expect(flt(0.4, 0, null, rounding_method)).eq(0); expect(flt(0.5, 0, null, rounding_method)).eq(1); expect(flt(1.455, 0, null, rounding_method)).eq(1); expect(flt(1.5, 0, null, rounding_method)).eq(2); // negative rounding to integers expect(flt(-0.5, 0, null, rounding_method)).eq(-1); expect(flt(-1.5, 0, null, rounding_method)).eq(-2); // negative precision i.e. round to nearest 10th expect(flt(123, -1, null, rounding_method)).eq(120); expect(flt(125, -1, null, rounding_method)).eq(130); expect(flt(134.45, -1, null, rounding_method)).eq(130); expect(flt(135, -1, null, rounding_method)).eq(140); // positive multiple digit rounding expect(flt(1.25, 1, null, rounding_method)).eq(1.3); expect(flt(0.15, 1, null, rounding_method)).eq(0.2); expect(flt(2.675, 2, null, rounding_method)).eq(2.68); // negative multiple digit rounding expect(flt(-1.25, 1, null, rounding_method)).eq(-1.3); expect(flt(-0.15, 1, null, rounding_method)).eq(-0.2); }); }); it("Banker's Rounding", () => { cy.window() .its("flt") .then((flt) => { let rounding_method = "Banker's Rounding"; expect(flt("0.5", 0, null, rounding_method)).eq(0); expect(flt("0.3", null, null, rounding_method)).eq(0.3); expect(flt("1.5", 0, null, rounding_method)).eq(2); // positive rounding to integers expect(flt(0.4, 0, null, rounding_method)).eq(0); expect(flt(0.5, 0, null, rounding_method)).eq(0); expect(flt(1.455, 0, null, rounding_method)).eq(1); expect(flt(1.5, 0, null, rounding_method)).eq(2); // negative rounding to integers expect(flt(-0.5, 0, null, rounding_method)).eq(0); expect(flt(-1.5, 0, null, rounding_method)).eq(-2); // negative precision i.e. round to nearest 10th expect(flt(123, -1, null, rounding_method)).eq(120); expect(flt(125, -1, null, rounding_method)).eq(120); expect(flt(134.45, -1, null, rounding_method)).eq(130); expect(flt(135, -1, null, rounding_method)).eq(140); // positive multiple digit rounding expect(flt(1.25, 1, null, rounding_method)).eq(1.2); expect(flt(0.15, 1, null, rounding_method)).eq(0.2); expect(flt(2.675, 2, null, rounding_method)).eq(2.68); expect(flt(-2.675, 2, null, rounding_method)).eq(-2.68); // negative multiple digit rounding expect(flt(-1.25, 1, null, rounding_method)).eq(-1.2); expect(flt(-0.15, 1, null, rounding_method)).eq(-0.2); // Nearest number and not even (the default behaviour) expect(flt(0.5, 0, null, rounding_method)).eq(0); expect(flt(1.5, 0, null, rounding_method)).eq(2); expect(flt(2.5, 0, null, rounding_method)).eq(2); expect(flt(3.5, 0, null, rounding_method)).eq(4); expect(flt(0.05, 1, null, rounding_method)).eq(0.0); expect(flt(1.15, 1, null, rounding_method)).eq(1.2); expect(flt(2.25, 1, null, rounding_method)).eq(2.2); expect(flt(3.35, 1, null, rounding_method)).eq(3.4); expect(flt(-0.5, 0, null, rounding_method)).eq(0); expect(flt(-1.5, 0, null, rounding_method)).eq(-2); expect(flt(-2.5, 0, null, rounding_method)).eq(-2); expect(flt(-3.5, 0, null, rounding_method)).eq(-4); expect(flt(-0.05, 1, null, rounding_method)).eq(0.0); expect(flt(-1.15, 1, null, rounding_method)).eq(-1.2); expect(flt(-2.25, 1, null, rounding_method)).eq(-2.2); expect(flt(-3.35, 1, null, rounding_method)).eq(-3.4); }); }); });