@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
text/typescript
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)
})
})