40 lines
1.4 KiB
TypeScript
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)
|
|
})
|
|
})
|