Get the name of a number, even if it's stupidly big.
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
このリポジトリはアーカイブされています。 ファイルの閲覧とクローンは可能ですが、プッシュや、課題・プルリクエストのオープンはできません。

179 行
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 4 arguments', () => {
  9. expect(combiningPrefix).toHaveLength(4)
  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(0, 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(0, tens, ones)).toBe(display)
  54. })
  55. })
  56. })
  57. describe.each`
  58. hundreds | hundredsName
  59. ${1} | ${'cen'}
  60. ${2} | ${'duocen'}
  61. ${3} | ${'trecen'}
  62. ${4} | ${'quadringen'}
  63. ${5} | ${'quingen'}
  64. ${6} | ${'sescen'}
  65. ${7} | ${'septingen'}
  66. ${8} | ${'octingen'}
  67. ${9} | ${'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. ${1} | ${'cen'}
  102. ${2} | ${'duocen'}
  103. ${3} | ${'trecen'}
  104. ${4} | ${'quadringen'}
  105. ${5} | ${'quingen'}
  106. ${6} | ${'sescen'}
  107. ${7} | ${'septingen'}
  108. ${8} | ${'octingen'}
  109. ${9} | ${'nongen'}
  110. `('on $hundredThousands in hundred thousands place', ({ hundredThousands, hundredThousandsName }) => {
  111. describe.each`
  112. tenThousands | tenThousandsName
  113. ${0} | ${''}
  114. ${1} | ${'dec'}
  115. ${2} | ${'vigin'}
  116. ${3} | ${'trigin'}
  117. ${4} | ${'quadragin'}
  118. ${5} | ${'quinquagin'}
  119. ${6} | ${'sexagin'}
  120. ${7} | ${'septuagin'}
  121. ${8} | ${'octogin'}
  122. ${9} | ${'nonagin'}
  123. `('on $tenThousands in ten thousands place', ({ tenThousands, tenThousandsName }) => {
  124. test.each`
  125. thousands | display | name
  126. ${0} | ${hundredThousands + '' + tenThousands + '0000'} | ${hundredThousandsName + tenThousandsName + 'milliati'}
  127. ${1000} | ${hundredThousands + '' + tenThousands + '1000'} | ${hundredThousandsName + 'un' + tenThousandsName + 'milliati'}
  128. ${2000} | ${hundredThousands + '' + tenThousands + '2000'} | ${hundredThousandsName + 'duo' + tenThousandsName + 'milliati'}
  129. ${3000} | ${hundredThousands + '' + tenThousands + '3000'} | ${hundredThousandsName + 'tre' + tenThousandsName + 'milliati'}
  130. ${4000} | ${hundredThousands + '' + tenThousands + '4000'} | ${hundredThousandsName + 'quattuor' + tenThousandsName + 'milliati'}
  131. ${5000} | ${hundredThousands + '' + tenThousands + '5000'} | ${hundredThousandsName + 'quin' + tenThousandsName + 'milliati'}
  132. ${6000} | ${hundredThousands + '' + tenThousands + '6000'} | ${hundredThousandsName + 'sex' + tenThousandsName + 'milliati'}
  133. ${7000} | ${hundredThousands + '' + tenThousands + '7000'} | ${hundredThousandsName + 'septen' + tenThousandsName + 'milliati'}
  134. ${8000} | ${hundredThousands + '' + tenThousands + '8000'} | ${hundredThousandsName + 'octo' + tenThousandsName + 'milliati'}
  135. ${9000} | ${hundredThousands + '' + tenThousands + '9000'} | ${hundredThousandsName + 'novem' + tenThousandsName + 'milliati'}
  136. `(`should return "$name" for $display`, ({ thousands, name }) => {
  137. const kiloHundreds = hundredThousands * 1000 + tenThousands * 100 + thousands / 100
  138. expect(combiningPrefix(kiloHundreds, 0, 0)).toBe(name)
  139. })
  140. })
  141. })
  142. test.each`
  143. value | display | name
  144. ${1} | ${'1000000'} | ${'milliamilliati'}
  145. ${2} | ${'2000000'} | ${'duomilliamilliati'}
  146. ${3} | ${'3000000'} | ${'tremilliamilliati'}
  147. ${4} | ${'4000000'} | ${'quattuormilliamilliati'}
  148. ${5} | ${'5000000'} | ${'quinmilliamilliati'}
  149. ${6} | ${'6000000'} | ${'sexmilliamilliati'}
  150. ${7} | ${'7000000'} | ${'septenmilliamilliati'}
  151. ${8} | ${'8000000'} | ${'octomilliamilliati'}
  152. ${9} | ${'9000000'} | ${'novemmilliamilliati'}
  153. `('should return "$name" on $display', ({ value, name }) => {
  154. expect(combiningPrefix(value * 10000, 0, 0)).toBe(name)
  155. })
  156. test.each`
  157. value | display | name
  158. ${1} | ${'1001000'} | ${'milliamilliaunmilliati'}
  159. ${2} | ${'2002000'} | ${'duomilliamilliaduomilliati'}
  160. ${3} | ${'3003000'} | ${'tremilliamilliatremilliati'}
  161. ${4} | ${'4004000'} | ${'quattuormilliamilliaquattuormilliati'}
  162. ${5} | ${'5005000'} | ${'quinmilliamilliaquinmilliati'}
  163. ${6} | ${'6006000'} | ${'sexmilliamilliasexmilliati'}
  164. ${7} | ${'7007000'} | ${'septenmilliamilliaseptenmilliati'}
  165. ${8} | ${'8008000'} | ${'octomilliamilliaoctomilliati'}
  166. ${9} | ${'9009000'} | ${'novemmilliamillianovemmilliati'}
  167. `('should return "$name" on $display', ({ value, name }) => {
  168. expect(combiningPrefix(value * 10010, 0, 0)).toBe(name)
  169. })