import combiningPrefix from './combiningPrefix' it('should exist', () => { expect(combiningPrefix).toBeDefined() }) it('should be a callable', () => { expect(typeof combiningPrefix).toBe('function') }) it('should accept a minimum of 3 arguments', () => { expect(combiningPrefix).toHaveLength(3) }) describe('on 0 in hundreds place', () => { describe('on 0 in tens place', () => { test.each` value | display | name ${1} | ${'1'} | ${'mi'} ${2} | ${'2'} | ${'bi'} ${3} | ${'3'} | ${'tri'} ${4} | ${'4'} | ${'kuwadri'} ${5} | ${'5'} | ${'kuwinti'} ${6} | ${'6'} | ${'seksti'} ${7} | ${'7'} | ${'septi'} ${8} | ${'8'} | ${'okti'} ${9} | ${'9'} | ${'noni'} `('should return "$name" on $display', ({ value, name }) => { expect(combiningPrefix(0n, 0, value)).toBe(name) }) }) describe.each` tens | tensName ${1} | ${'desi'} ${2} | ${'bihinti'} ${3} | ${'trihinti'} ${4} | ${'kuwadrahinti'} ${5} | ${'kuwinkuwahinti'} ${6} | ${'seksahinti'} ${7} | ${'septuwahinti'} ${8} | ${'oktohinti'} ${9} | ${'nonahinti'} `('on $tens in tens place', ({ tens, tensName }) => { test.each` ones | display ${0} | ${tensName} ${1} | ${'un' + tensName} ${2} | ${'duwo' + tensName} ${3} | ${'tre' + tensName} ${4} | ${'kuwatuwor' + tensName} ${5} | ${'kuwin' + tensName} ${6} | ${'seks' + tensName} ${7} | ${'septen' + tensName} ${8} | ${'okto' + tensName} ${9} | ${'nobem' + tensName} `(`should return "$display" for ${tens}$ones`, ({ ones, display }) => { expect(combiningPrefix(0n, tens, ones)).toBe(display) }) }) }) describe.each` hundreds | hundredsName ${1n} | ${'sen'} ${2n} | ${'duwosen'} ${3n} | ${'tresen'} ${4n} | ${'kuwadringhen'} ${5n} | ${'kuwinghen'} ${6n} | ${'sesen'} ${7n} | ${'septinghen'} ${8n} | ${'oktinghen'} ${9n} | ${'nonghen'} `('on $hundreds in hundreds place', ({ hundreds, hundredsName }) => { describe.each` tens | tensName ${0} | ${'ti'} ${1} | ${'desi'} ${2} | ${'bihinti'} ${3} | ${'trihinti'} ${4} | ${'kuwadrahinti'} ${5} | ${'kuwinkuwahinti'} ${6} | ${'seksahinti'} ${7} | ${'septuwahinti'} ${8} | ${'oktohinti'} ${9} | ${'nonahinti'} `('on $tens in tens place', ({ tens, tensName }) => { test.each` ones | display ${0} | ${hundredsName + tensName} ${1} | ${hundredsName + 'un' + tensName} ${2} | ${hundredsName + 'duwo' + tensName} ${3} | ${hundredsName + 'tre' + tensName} ${4} | ${hundredsName + 'kuwatuwor' + tensName} ${5} | ${hundredsName + 'kuwin' + tensName} ${6} | ${hundredsName + 'seks' + tensName} ${7} | ${hundredsName + 'septen' + tensName} ${8} | ${hundredsName + 'okto' + tensName} ${9} | ${hundredsName + 'nobem' + tensName} `(`should return "$display" for ${hundreds}${tens}$ones`, ({ ones, display }) => { expect(combiningPrefix(hundreds, tens, ones)).toBe(display) }) }) }) describe.each` hundredThousands | hundredThousandsName ${1n} | ${'sen'} ${2n} | ${'duwosen'} ${3n} | ${'tresen'} ${4n} | ${'kuwadringhen'} ${5n} | ${'kuwinghen'} ${6n} | ${'sesen'} ${7n} | ${'septinghen'} ${8n} | ${'oktinghen'} ${9n} | ${'nonghen'} `('on $hundredThousands in hundred thousands place', ({ hundredThousands, hundredThousandsName }) => { describe.each` tenThousands | tenThousandsName ${0n} | ${''} ${1n} | ${'des'} ${2n} | ${'bihin'} ${3n} | ${'trihin'} ${4n} | ${'kuwadrahin'} ${5n} | ${'kuwinkuwahin'} ${6n} | ${'seksahin'} ${7n} | ${'septuwahin'} ${8n} | ${'oktohin'} ${9n} | ${'nonahin'} `('on $tenThousands in ten thousands place', ({ tenThousands, tenThousandsName }) => { test.each` thousands | display | name ${0n} | ${hundredThousands + '' + tenThousands + '0000'} | ${hundredThousandsName + tenThousandsName + 'milyati'} ${1000n} | ${hundredThousands + '' + tenThousands + '1000'} | ${hundredThousandsName + 'un' + tenThousandsName + 'milyati'} ${2000n} | ${hundredThousands + '' + tenThousands + '2000'} | ${hundredThousandsName + 'duwo' + tenThousandsName + 'milyati'} ${3000n} | ${hundredThousands + '' + tenThousands + '3000'} | ${hundredThousandsName + 'tre' + tenThousandsName + 'milyati'} ${4000n} | ${hundredThousands + '' + tenThousands + '4000'} | ${hundredThousandsName + 'kuwatuwor' + tenThousandsName + 'milyati'} ${5000n} | ${hundredThousands + '' + tenThousands + '5000'} | ${hundredThousandsName + 'kuwin' + tenThousandsName + 'milyati'} ${6000n} | ${hundredThousands + '' + tenThousands + '6000'} | ${hundredThousandsName + 'seks' + tenThousandsName + 'milyati'} ${7000n} | ${hundredThousands + '' + tenThousands + '7000'} | ${hundredThousandsName + 'septen' + tenThousandsName + 'milyati'} ${8000n} | ${hundredThousands + '' + tenThousands + '8000'} | ${hundredThousandsName + 'okto' + tenThousandsName + 'milyati'} ${9000n} | ${hundredThousands + '' + tenThousands + '9000'} | ${hundredThousandsName + 'nobem' + tenThousandsName + 'milyati'} `(`should return "$name" for $display`, ({ thousands, name }) => { const kiloHundreds = hundredThousands * 1000n + tenThousands * 100n + thousands / 100n expect(combiningPrefix(kiloHundreds, 0, 0)).toBe(name) }) }) }) test.each` value | display | name ${1n} | ${'1000000'} | ${'milyamilyati'} ${2n} | ${'2000000'} | ${'duwomilyamilyati'} ${3n} | ${'3000000'} | ${'tremilyamilyati'} ${4n} | ${'4000000'} | ${'kuwatuwormilyamilyati'} ${5n} | ${'5000000'} | ${'kuwinmilyamilyati'} ${6n} | ${'6000000'} | ${'seksmilyamilyati'} ${7n} | ${'7000000'} | ${'septenmilyamilyati'} ${8n} | ${'8000000'} | ${'oktomilyamilyati'} ${9n} | ${'9000000'} | ${'nobemmilyamilyati'} `('should return "$name" on $display', ({ value, name }) => { expect(combiningPrefix(value * 10000n, 0, 0)).toBe(name) }) test.each` value | display | name ${1n} | ${'1001000'} | ${'milyamilyaunmilyati'} ${2n} | ${'2002000'} | ${'duwomilyamilyaduwomilyati'} ${3n} | ${'3003000'} | ${'tremilyamilyatremilyati'} ${4n} | ${'4004000'} | ${'kuwatuwormilyamilyakuwatuwormilyati'} ${5n} | ${'5005000'} | ${'kuwinmilyamilyakuwinmilyati'} ${6n} | ${'6006000'} | ${'seksmilyamilyaseksmilyati'} ${7n} | ${'7007000'} | ${'septenmilyamilyaseptenmilyati'} ${8n} | ${'8008000'} | ${'oktomilyamilyaoktomilyati'} ${9n} | ${'9009000'} | ${'nobemmilyamilyanobemmilyati'} `('should return "$name" on $display', ({ value, name }) => { expect(combiningPrefix(value * 10010n, 0, 0)).toBe(name) })