UNPKG

@mahmud002/number-to-words-converter

Version:

A simple utility to convert numbers to their word representations in English and Persian, and vice versa. Includes Persian numerals conversion.

203 lines (172 loc) 7.47 kB
import { numberToWords, numberToPersianWords } from './index' import { wordsToNumber, persianWordsToNumber, stringToNumber, numberToString } from './index' import { numberToPersianNumerals, persianNumeralsToNumber } from './index' describe('numberToWords', () => { test('converts single digits', () => { expect(numberToWords(0)).toBe('zero') expect(numberToWords(1)).toBe('one') expect(numberToWords(9)).toBe('nine') }) test('converts teens', () => { expect(numberToWords(10)).toBe('ten') expect(numberToWords(11)).toBe('eleven') expect(numberToWords(15)).toBe('fifteen') expect(numberToWords(19)).toBe('nineteen') }) test('converts tens', () => { expect(numberToWords(20)).toBe('twenty') expect(numberToWords(42)).toBe('forty-two') expect(numberToWords(99)).toBe('ninety-nine') }) test('converts hundreds', () => { expect(numberToWords(100)).toBe('one hundred') expect(numberToWords(101)).toBe('one hundred and one') expect(numberToWords(110)).toBe('one hundred and ten') expect(numberToWords(999)).toBe('nine hundred and ninety-nine') }) test('converts thousands', () => { expect(numberToWords(1000)).toBe('one thousand') expect(numberToWords(1234)).toBe('one thousand two hundred and thirty-four') expect(numberToWords(999999)).toBe( 'nine hundred and ninety-nine thousand nine hundred and ninety-nine' ) }) test('converts negative numbers', () => { expect(numberToWords(-1)).toBe('negative one') expect(numberToWords(-100)).toBe('negative one hundred') }) }) describe('numberToPersianWords', () => { test('converts Persian single digits', () => { expect(numberToPersianWords(0)).toBe('صفر') expect(numberToPersianWords(2)).toBe('دو') expect(numberToPersianWords('۲')).toBe('دو') expect(numberToPersianWords(9)).toBe('نه') expect(numberToPersianWords('۹')).toBe('نه') }) test('converts Persian teens', () => { expect(numberToPersianWords(10)).toBe('ده') expect(numberToPersianWords(11)).toBe('یازده') expect(numberToPersianWords(15)).toBe('پانزده') expect(numberToPersianWords('۱۵')).toBe('پانزده') }) test('converts Persian tens', () => { expect(numberToPersianWords(20)).toBe('بیست') expect(numberToPersianWords(42)).toBe('چهل و دو') expect(numberToPersianWords('۴۲')).toBe('چهل و دو') expect(numberToPersianWords(99)).toBe('نود و نه') }) test('converts Persian hundreds', () => { expect(numberToPersianWords(100)).toBe('صد') expect(numberToPersianWords(101)).toBe('صد و یک') expect(numberToPersianWords(110)).toBe('صد و ده') expect(numberToPersianWords(345)).toBe('سیصد و چهل و پنج') expect(numberToPersianWords('۳۴۵')).toBe('سیصد و چهل و پنج') }) test('converts Persian thousands', () => { expect(numberToPersianWords(1000)).toBe('یک هزار') expect(numberToPersianWords(1234)).toBe('یک هزار و دویست و سی و چهار') expect(numberToPersianWords('۱۲۳۴')).toBe('یک هزار و دویست و سی و چهار') }) test('converts Persian negative numbers', () => { expect(numberToPersianWords(-1)).toBe('منفی یک') expect(numberToPersianWords(-100)).toBe('منفی صد') expect(numberToPersianWords('-۱۰۰')).toBe('منفی صد') }) }) describe('wordsToNumber', () => { test('converts basic numbers', () => { expect(wordsToNumber('zero')).toBe(0) expect(wordsToNumber('one')).toBe(1) expect(wordsToNumber('twenty')).toBe(20) expect(wordsToNumber('twenty-one')).toBe(21) }) test('converts complex numbers', () => { expect(wordsToNumber('one hundred')).toBe(100) expect(wordsToNumber('one hundred and one')).toBe(101) expect(wordsToNumber('one thousand two hundred and thirty-four')).toBe(1234) }) test('converts large numbers', () => { expect(wordsToNumber('one million')).toBe(1000000) expect(wordsToNumber('one billion')).toBe(1000000000) }) test('converts negative numbers', () => { expect(wordsToNumber('negative one')).toBe(-1) expect(wordsToNumber('negative twenty')).toBe(-20) }) }) describe('persianWordsToNumber', () => { test('converts basic Persian numbers', () => { expect(persianWordsToNumber('صفر')).toBe(0) expect(persianWordsToNumber('یک')).toBe(1) expect(persianWordsToNumber('بیست')).toBe(20) expect(persianWordsToNumber('بیست و یک')).toBe(21) }) test('converts complex Persian numbers', () => { expect(persianWordsToNumber('صد')).toBe(100) expect(persianWordsToNumber('صد و یک')).toBe(101) expect(persianWordsToNumber('یک هزار و دویست و سی و چهار')).toBe(1234) }) test('converts large Persian numbers', () => { expect(persianWordsToNumber('یک میلیون')).toBe(1000000) expect(persianWordsToNumber('یک میلیارد')).toBe(1000000000) }) test('converts negative Persian numbers', () => { expect(persianWordsToNumber('منفی یک')).toBe(-1) expect(persianWordsToNumber('منفی بیست')).toBe(-20) }) }) describe('stringToNumber', () => { test('converts regular numbers', () => { expect(stringToNumber('123')).toBe(123) expect(stringToNumber('-456')).toBe(-456) }) test('converts Persian numerals', () => { expect(stringToNumber('۱۲۳')).toBe(123) expect(stringToNumber('۴۵۶')).toBe(456) }) test('converts English words', () => { expect(stringToNumber('one hundred and twenty-three')).toBe(123) expect(stringToNumber('negative four hundred and fifty-six')).toBe(-456) }) test('converts Persian words', () => { expect(stringToNumber('صد و بیست و سه')).toBe(123) expect(stringToNumber('منفی چهارصد و پنجاه و شش')).toBe(-456) }) }) describe('numberToString', () => { test('converts to English words', () => { expect(numberToString(123)).toBe('one hundred and twenty-three') expect(numberToString(456, 'english')).toBe('four hundred and fifty-six') }) test('converts to Persian words', () => { expect(numberToString(123, 'persian')).toBe('صد و بیست و سه') expect(numberToString(456, 'persian')).toBe('چهارصد و پنجاه و شش') }) }) describe('numberToPersianNumerals', () => { test('converts regular numbers to Persian numerals', () => { expect(numberToPersianNumerals(0)).toBe('۰') expect(numberToPersianNumerals(123)).toBe('۱۲۳') expect(numberToPersianNumerals(220)).toBe('۲۲۰') expect(numberToPersianNumerals(9876)).toBe('۹۸۷۶') expect(numberToPersianNumerals(1234567)).toBe('۱۲۳۴۵۶۷') }) test('handles negative numbers', () => { expect(numberToPersianNumerals(-123)).toBe('-۱۲۳') expect(numberToPersianNumerals(-456)).toBe('-۴۵۶') }) }) describe('persianNumeralsToNumber', () => { test('converts Persian numerals to regular numbers', () => { expect(persianNumeralsToNumber('۰')).toBe(0) expect(persianNumeralsToNumber('۱۲۳')).toBe(123) expect(persianNumeralsToNumber('۲۲۰')).toBe(220) expect(persianNumeralsToNumber('۹۸۷۶')).toBe(9876) expect(persianNumeralsToNumber('۱۲۳۴۵۶۷')).toBe(1234567) }) test('handles mixed numerals', () => { expect(persianNumeralsToNumber('۱2۳')).toBe(123) expect(persianNumeralsToNumber('4۵6')).toBe(456) }) })