Files
dc/client/src/app/shared/dc-validator/tests/excelRound.spec.ts
T
sead 4ea604f9fb
Build / Build-and-ng-test (pull_request) Failing after 15m15s
Build / Build-and-test-development (pull_request) Has been skipped
Lighthouse Checks / lighthouse (pull_request) Failing after 20m15s
feat(editor): add READONLY, HIDDEN, ROUND and NUMBER_FORMAT validation rules
2026-06-05 21:25:13 +02:00

40 lines
1.4 KiB
TypeScript

import { excelRound } from '../utils/excelRound'
describe('DC Validator - excelRound', () => {
it('should round to the given number of decimal places', () => {
expect(excelRound(1.23456, 2)).toEqual(1.23)
expect(excelRound(1.236, 2)).toEqual(1.24)
expect(excelRound(2.5, 0)).toEqual(3)
})
it('should round half away from zero for negative values', () => {
expect(excelRound(-0.5, 0)).toEqual(-1)
expect(excelRound(-2.5, 0)).toEqual(-3)
expect(excelRound(-1.23456, 2)).toEqual(-1.23)
})
it('should support negative digits (round to tens/hundreds)', () => {
expect(excelRound(25, -1)).toEqual(30)
expect(excelRound(24, -1)).toEqual(20)
expect(excelRound(150, -2)).toEqual(200)
})
// Examples from Microsoft's ROUND documentation:
// https://support.microsoft.com/en-us/office/round-function-c018c5d8-40fb-4053-90b1-b3e7f61a213c
it('should match the Microsoft ROUND examples', () => {
expect(excelRound(2.15, 1)).toEqual(2.2)
expect(excelRound(2.149, 1)).toEqual(2.1)
expect(excelRound(-1.475, 2)).toEqual(-1.48)
expect(excelRound(21.5, -1)).toEqual(20)
expect(excelRound(626.3, -3)).toEqual(1000)
expect(excelRound(1.98, -1)).toEqual(0)
expect(excelRound(-50.55, -2)).toEqual(-100)
})
it('should return the original value when not finite', () => {
expect(excelRound(NaN, 2)).toBeNaN()
expect(excelRound(Infinity, 2)).toEqual(Infinity)
expect(excelRound(5, NaN)).toEqual(5)
})
})