import { isNumberText, parse, add, sub } from './NumberInput' describe('isNumberText', () => { it('should work well', () => { expect(isNumberText('0')).toBe(true) expect(isNumberText('1')).toBe(true) expect(isNumberText('123')).toBe(true) expect(isNumberText('123.0')).toBe(true) expect(isNumberText('123.456')).toBe(true) expect(isNumberText('123.0456')).toBe(true) expect(isNumberText('0.123')).toBe(true) expect(isNumberText('0.0123')).toBe(true) expect(isNumberText('1.00')).toBe(true) }) it('should work well with negative values', () => { expect(isNumberText('-0')).toBe(true) expect(isNumberText('-1')).toBe(true) expect(isNumberText('-123')).toBe(true) expect(isNumberText('-123.0')).toBe(true) expect(isNumberText('-123.456')).toBe(true) expect(isNumberText('-123.0456')).toBe(true) expect(isNumberText('-0.123')).toBe(true) expect(isNumberText('-0.0123')).toBe(true) }) it('should recognize invalid values', () => { expect(isNumberText('a')).toBe(false) expect(isNumberText('-a')).toBe(false) expect(isNumberText('1.123a')).toBe(false) expect(isNumberText('a.123')).toBe(false) expect(isNumberText('0.a123')).toBe(false) expect(isNumberText('--1')).toBe(false) expect(isNumberText('+1')).toBe(false) expect(isNumberText(' ')).toBe(false) expect(isNumberText('1 2')).toBe(false) expect(isNumberText('0 .123')).toBe(false) expect(isNumberText('0. 123')).toBe(false) expect(isNumberText('0.1 23')).toBe(false) expect(isNumberText('1-2')).toBe(false) expect(isNumberText('12-')).toBe(false) expect(isNumberText('0.12-3')).toBe(false) expect(isNumberText('0.123-')).toBe(false) expect(isNumberText('0..123')).toBe(false) }) }) describe('parse', () => { it('should work well', () => { expect(parse('0', 0)).toBe(0) expect(parse('1', 0)).toBe(1) expect(parse('1.234', 0)).toBe(1) expect(parse('4.567', 0)).toBe(5) }) it('should work well with 1 digits', () => { expect(parse('123', 1)).toBe(123) expect(parse('123.1', 1)).toBe(123.1) expect(parse('123.456', 1)).toBe(123.5) expect(parse('123.0456', 1)).toBe(123) expect(parse('0.123', 1)).toBe(0.1) expect(parse('0.0123', 1)).toBe(0) expect(parse('1.00', 1)).toBe(1) }) it('should work well with 2 digits', () => { expect(parse('123', 2)).toBe(123) expect(parse('123.1', 2)).toBe(123.1) expect(parse('123.456', 2)).toBe(123.46) expect(parse('123.0456', 2)).toBe(123.05) expect(parse('0.123', 2)).toBe(0.12) expect(parse('0.0123', 2)).toBe(0.01) expect(parse('1.00', 2)).toBe(1) }) }) describe('add', () => { it('should work well', () => { expect(add(2, 1, 0)).toBe(3) expect(add(2, -1, 0)).toBe(1) expect(add(0, -1, 0)).toBe(-1) expect(add(0.2, 0.1, 1)).toBe(0.3) expect(add(0.2, 0.1, 4)).toBe(0.3) expect(add(1.1, 0.1, 1)).toBe(1.2) expect(add(1.1, -0.1, 1)).toBe(1.0) expect(add(1.1, 0.1, 2)).toBe(1.2) expect(add(1.1, -0.1, 2)).toBe(1.0) }) }) describe('sub', () => { it('should work well', () => { expect(sub(2, 1, 0)).toBe(1) expect(sub(2, -1, 0)).toBe(3) expect(sub(0, -1, 0)).toBe(1) expect(sub(0.3, 0.1, 1)).toBe(0.2) expect(sub(0.3, 0.1, 4)).toBe(0.2) expect(sub(1.1, 0.1, 1)).toBe(1) expect(sub(1.1, -0.1, 1)).toBe(1.2) expect(sub(1.1, 0.1, 2)).toBe(1) expect(sub(1.1, -0.1, 2)).toBe(1.2) }) })