utils/tests/math.spec.ts
ztimson fec373ca4c
All checks were successful
Build / Build NPM Project (push) Successful in 1m16s
Build / Tag Version (push) Successful in 14s
Build / Publish Documentation (push) Successful in 53s
Added test suite
2025-05-14 16:30:42 -04:00

52 lines
1.5 KiB
TypeScript

import { dec2Frac, fracToDec } from '../src';
describe('Math Utilities', () => {
describe('dec2Frac', () => {
it('should convert decimal to fraction with whole and remainder', () => {
expect(dec2Frac(1.25)).toBe('1 1/4');
expect(dec2Frac(2.5)).toBe('2 1/2');
expect(dec2Frac(3.75)).toBe('3 3/4');
});
it('should convert integer to fraction with denominator', () => {
expect(dec2Frac(4)).toBe('4');
expect(dec2Frac(0)).toBe('0');
});
it('should convert proper fraction (less than 1)', () => {
expect(dec2Frac(0.75)).toBe('3/4');
expect(dec2Frac(0.5)).toBe('1/2');
expect(dec2Frac(0.1)).toBe('1/10');
});
it('should handle repeating decimals gracefully', () => {
expect(dec2Frac(0.333333)).toBe('1/3');
expect(dec2Frac(0.666666)).toBe('2/3');
});
});
describe('fracToDec', () => {
it('should convert mixed fraction to decimal', () => {
expect(fracToDec('1 1/4')).toBeCloseTo(1.25);
expect(fracToDec('2 1/2')).toBeCloseTo(2.5);
expect(fracToDec('3 3/4')).toBeCloseTo(3.75);
});
it('should convert fraction without whole part to decimal', () => {
expect(fracToDec('3/4')).toBeCloseTo(0.75);
expect(fracToDec('1/2')).toBeCloseTo(0.5);
expect(fracToDec('1/10')).toBeCloseTo(0.1);
});
it('should convert whole number fraction', () => {
expect(fracToDec('4 0/1')).toBeCloseTo(4);
expect(fracToDec('0/1')).toBeCloseTo(0);
});
it('should handle zero correctly', () => {
expect(fracToDec('0/1')).toBeCloseTo(0);
expect(fracToDec('0 0/1')).toBeCloseTo(0);
});
});
});