Get the name of a number, even if it's stupidly big.
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
Ce dépôt est archivé. Vous pouvez voir les fichiers et le cloner, mais vous ne pouvez pas pousser ni ouvrir de ticket/demande d'ajout.

179 lignes
6.8 KiB

  1. import combiningPrefix from './combiningPrefix'
  2. it('should exist', () => {
  3. expect(combiningPrefix).toBeDefined()
  4. })
  5. it('should be a callable', () => {
  6. expect(typeof combiningPrefix).toBe('function')
  7. })
  8. it('should accept a minimum of 3 arguments', () => {
  9. expect(combiningPrefix).toHaveLength(3)
  10. })
  11. describe('on 0 in hundreds place', () => {
  12. describe('on 0 in tens place', () => {
  13. test.each`
  14. value | display | name
  15. ${1} | ${'1'} | ${'mi'}
  16. ${2} | ${'2'} | ${'bi'}
  17. ${3} | ${'3'} | ${'tri'}
  18. ${4} | ${'4'} | ${'quadri'}
  19. ${5} | ${'5'} | ${'quinti'}
  20. ${6} | ${'6'} | ${'sexti'}
  21. ${7} | ${'7'} | ${'septi'}
  22. ${8} | ${'8'} | ${'octi'}
  23. ${9} | ${'9'} | ${'noni'}
  24. `('should return "$name" on $display', ({ value, name }) => {
  25. expect(combiningPrefix(0n, 0, value)).toBe(name)
  26. })
  27. })
  28. describe.each`
  29. tens | tensName
  30. ${1} | ${'deci'}
  31. ${2} | ${'viginti'}
  32. ${3} | ${'triginti'}
  33. ${4} | ${'quadraginti'}
  34. ${5} | ${'quinquaginti'}
  35. ${6} | ${'sexaginti'}
  36. ${7} | ${'septuaginti'}
  37. ${8} | ${'octoginti'}
  38. ${9} | ${'nonaginti'}
  39. `('on $tens in tens place', ({ tens, tensName }) => {
  40. test.each`
  41. ones | display
  42. ${0} | ${tensName}
  43. ${1} | ${'un' + tensName}
  44. ${2} | ${'duo' + tensName}
  45. ${3} | ${'tre' + tensName}
  46. ${4} | ${'quattuor' + tensName}
  47. ${5} | ${'quin' + tensName}
  48. ${6} | ${'sex' + tensName}
  49. ${7} | ${'septen' + tensName}
  50. ${8} | ${'octo' + tensName}
  51. ${9} | ${'novem' + tensName}
  52. `(`should return "$display" for ${tens}$ones`, ({ ones, display }) => {
  53. expect(combiningPrefix(0n, tens, ones)).toBe(display)
  54. })
  55. })
  56. })
  57. describe.each`
  58. hundreds | hundredsName
  59. ${1n} | ${'cen'}
  60. ${2n} | ${'duocen'}
  61. ${3n} | ${'trecen'}
  62. ${4n} | ${'quadringen'}
  63. ${5n} | ${'quingen'}
  64. ${6n} | ${'sescen'}
  65. ${7n} | ${'septingen'}
  66. ${8n} | ${'octingen'}
  67. ${9n} | ${'nongen'}
  68. `('on $hundreds in hundreds place', ({ hundreds, hundredsName }) => {
  69. describe.each`
  70. tens | tensName
  71. ${0} | ${'ti'}
  72. ${1} | ${'deci'}
  73. ${2} | ${'viginti'}
  74. ${3} | ${'triginti'}
  75. ${4} | ${'quadraginti'}
  76. ${5} | ${'quinquaginti'}
  77. ${6} | ${'sexaginti'}
  78. ${7} | ${'septuaginti'}
  79. ${8} | ${'octoginti'}
  80. ${9} | ${'nonaginti'}
  81. `('on $tens in tens place', ({ tens, tensName }) => {
  82. test.each`
  83. ones | display
  84. ${0} | ${hundredsName + tensName}
  85. ${1} | ${hundredsName + 'un' + tensName}
  86. ${2} | ${hundredsName + 'duo' + tensName}
  87. ${3} | ${hundredsName + 'tre' + tensName}
  88. ${4} | ${hundredsName + 'quattuor' + tensName}
  89. ${5} | ${hundredsName + 'quin' + tensName}
  90. ${6} | ${hundredsName + 'sex' + tensName}
  91. ${7} | ${hundredsName + 'septen' + tensName}
  92. ${8} | ${hundredsName + 'octo' + tensName}
  93. ${9} | ${hundredsName + 'novem' + tensName}
  94. `(`should return "$display" for ${hundreds}${tens}$ones`, ({ ones, display }) => {
  95. expect(combiningPrefix(hundreds, tens, ones)).toBe(display)
  96. })
  97. })
  98. })
  99. describe.each`
  100. hundredThousands | hundredThousandsName
  101. ${1n} | ${'cen'}
  102. ${2n} | ${'duocen'}
  103. ${3n} | ${'trecen'}
  104. ${4n} | ${'quadringen'}
  105. ${5n} | ${'quingen'}
  106. ${6n} | ${'sescen'}
  107. ${7n} | ${'septingen'}
  108. ${8n} | ${'octingen'}
  109. ${9n} | ${'nongen'}
  110. `('on $hundredThousands in hundred thousands place', ({ hundredThousands, hundredThousandsName }) => {
  111. describe.each`
  112. tenThousands | tenThousandsName
  113. ${0n} | ${''}
  114. ${1n} | ${'dec'}
  115. ${2n} | ${'vigin'}
  116. ${3n} | ${'trigin'}
  117. ${4n} | ${'quadragin'}
  118. ${5n} | ${'quinquagin'}
  119. ${6n} | ${'sexagin'}
  120. ${7n} | ${'septuagin'}
  121. ${8n} | ${'octogin'}
  122. ${9n} | ${'nonagin'}
  123. `('on $tenThousands in ten thousands place', ({ tenThousands, tenThousandsName }) => {
  124. test.each`
  125. thousands | display | name
  126. ${0n} | ${hundredThousands + '' + tenThousands + '0000'} | ${hundredThousandsName + tenThousandsName + 'milliati'}
  127. ${1000n} | ${hundredThousands + '' + tenThousands + '1000'} | ${hundredThousandsName + 'un' + tenThousandsName + 'milliati'}
  128. ${2000n} | ${hundredThousands + '' + tenThousands + '2000'} | ${hundredThousandsName + 'duo' + tenThousandsName + 'milliati'}
  129. ${3000n} | ${hundredThousands + '' + tenThousands + '3000'} | ${hundredThousandsName + 'tre' + tenThousandsName + 'milliati'}
  130. ${4000n} | ${hundredThousands + '' + tenThousands + '4000'} | ${hundredThousandsName + 'quattuor' + tenThousandsName + 'milliati'}
  131. ${5000n} | ${hundredThousands + '' + tenThousands + '5000'} | ${hundredThousandsName + 'quin' + tenThousandsName + 'milliati'}
  132. ${6000n} | ${hundredThousands + '' + tenThousands + '6000'} | ${hundredThousandsName + 'sex' + tenThousandsName + 'milliati'}
  133. ${7000n} | ${hundredThousands + '' + tenThousands + '7000'} | ${hundredThousandsName + 'septen' + tenThousandsName + 'milliati'}
  134. ${8000n} | ${hundredThousands + '' + tenThousands + '8000'} | ${hundredThousandsName + 'octo' + tenThousandsName + 'milliati'}
  135. ${9000n} | ${hundredThousands + '' + tenThousands + '9000'} | ${hundredThousandsName + 'novem' + tenThousandsName + 'milliati'}
  136. `(`should return "$name" for $display`, ({ thousands, name }) => {
  137. const kiloHundreds = hundredThousands * 1000n + tenThousands * 100n + thousands / 100n
  138. expect(combiningPrefix(kiloHundreds, 0, 0)).toBe(name)
  139. })
  140. })
  141. })
  142. test.each`
  143. value | display | name
  144. ${1n} | ${'1000000'} | ${'milliamilliati'}
  145. ${2n} | ${'2000000'} | ${'duomilliamilliati'}
  146. ${3n} | ${'3000000'} | ${'tremilliamilliati'}
  147. ${4n} | ${'4000000'} | ${'quattuormilliamilliati'}
  148. ${5n} | ${'5000000'} | ${'quinmilliamilliati'}
  149. ${6n} | ${'6000000'} | ${'sexmilliamilliati'}
  150. ${7n} | ${'7000000'} | ${'septenmilliamilliati'}
  151. ${8n} | ${'8000000'} | ${'octomilliamilliati'}
  152. ${9n} | ${'9000000'} | ${'novemmilliamilliati'}
  153. `('should return "$name" on $display', ({ value, name }) => {
  154. expect(combiningPrefix(value * 10000n, 0, 0)).toBe(name)
  155. })
  156. test.each`
  157. value | display | name
  158. ${1n} | ${'1001000'} | ${'milliamilliaunmilliati'}
  159. ${2n} | ${'2002000'} | ${'duomilliamilliaduomilliati'}
  160. ${3n} | ${'3003000'} | ${'tremilliamilliatremilliati'}
  161. ${4n} | ${'4004000'} | ${'quattuormilliamilliaquattuormilliati'}
  162. ${5n} | ${'5005000'} | ${'quinmilliamilliaquinmilliati'}
  163. ${6n} | ${'6006000'} | ${'sexmilliamilliasexmilliati'}
  164. ${7n} | ${'7007000'} | ${'septenmilliamilliaseptenmilliati'}
  165. ${8n} | ${'8008000'} | ${'octomilliamilliaoctomilliati'}
  166. ${9n} | ${'9009000'} | ${'novemmilliamillianovemmilliati'}
  167. `('should return "$name" on $display', ({ value, name }) => {
  168. expect(combiningPrefix(value * 10010n, 0, 0)).toBe(name)
  169. })