Gets the name of a number, even if it's stupidly big. Supersedes TheoryOfNekomata/number-name.
Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 

204 linhas
5.6 KiB

  1. import getNumberName from '../../../index';
  2. import getLocalizedNumberName from './index';
  3. describe('Number group conversion', () => {
  4. describe('0 in hundreds place', () => {
  5. describe('0 in tens place', () => {
  6. describe.each`
  7. ones | onesName
  8. ${0} | ${'zero'}
  9. ${1} | ${'ein'}
  10. ${2} | ${'zwei'}
  11. ${3} | ${'drei'}
  12. ${4} | ${'vier'}
  13. ${5} | ${'fünf'}
  14. ${6} | ${'sechs'}
  15. ${7} | ${'sieben'}
  16. ${8} | ${'acht'}
  17. ${9} | ${'neun'}
  18. `('$ones in ones place', ({
  19. ones,
  20. onesName,
  21. }) => {
  22. it(`converts ${ones} to ${onesName}`, () => {
  23. expect(getNumberName(ones, {locale: getLocalizedNumberName})).toBe(onesName);
  24. });
  25. });
  26. });
  27. describe('1 in tens place', () => {
  28. describe.each`
  29. ones | onesName
  30. ${0} | ${'zehn'}
  31. ${1} | ${'elf'}
  32. ${2} | ${'zwölf'}
  33. ${3} | ${'dreizehn'}
  34. ${4} | ${'vierzehn'}
  35. ${5} | ${'fünfzehn'}
  36. ${6} | ${'sechzehn'}
  37. ${7} | ${'siebzehn'}
  38. ${8} | ${'achtzehn'}
  39. ${9} | ${'neunzehn'}
  40. `('$ones in ones place', ({
  41. ones,
  42. onesName,
  43. }) => {
  44. it(`converts 1${ones} to ${onesName}`, () => {
  45. expect(getNumberName(10 + ones, {locale: getLocalizedNumberName})).toBe(onesName);
  46. });
  47. });
  48. });
  49. describe.each`
  50. tens | tensName
  51. ${2} | ${'zwanzig'}
  52. ${3} | ${'dreißig'}
  53. ${4} | ${'vierzig'}
  54. ${5} | ${'fünfzig'}
  55. ${6} | ${'sechzig'}
  56. ${7} | ${'siebzig'}
  57. ${8} | ${'achtzig'}
  58. ${9} | ${'neunzig'}
  59. `('$tens in tens place', ({tens, tensName}) => {
  60. describe('0 in ones place', () => {
  61. const value = tens * 10;
  62. const name = tensName;
  63. it(`converts ${value} to ${name}`, () => {
  64. expect(getNumberName(value, {locale: getLocalizedNumberName})).toBe(name);
  65. });
  66. });
  67. describe.each`
  68. ones | onesName
  69. ${1} | ${'ein'}
  70. ${2} | ${'zwei'}
  71. ${3} | ${'drei'}
  72. ${4} | ${'vier'}
  73. ${5} | ${'fünf'}
  74. ${6} | ${'sechs'}
  75. ${7} | ${'sieben'}
  76. ${8} | ${'acht'}
  77. ${9} | ${'neun'}
  78. `('$ones in ones place', ({
  79. ones,
  80. onesName,
  81. }) => {
  82. const value = (tens * 10) + ones;
  83. const name = [onesName, tensName].join('und').trim();
  84. it(`converts ${value} to ${name}`, () => {
  85. expect(getNumberName(value, {locale: getLocalizedNumberName})).toBe(name);
  86. });
  87. });
  88. });
  89. });
  90. describe.each`
  91. hundreds | hundredsName
  92. ${1} | ${'einhundert'}
  93. ${2} | ${'zweihundert'}
  94. ${3} | ${'dreihundert'}
  95. ${4} | ${'vierhundert'}
  96. ${5} | ${'fünfhundert'}
  97. ${6} | ${'sechshundert'}
  98. ${7} | ${'siebenhundert'}
  99. ${8} | ${'achthundert'}
  100. ${9} | ${'neunhundert'}
  101. `('$hundreds in hundreds place', ({
  102. hundreds,
  103. hundredsName,
  104. }) => {
  105. describe('0 in tens place', () => {
  106. describe.each`
  107. ones | onesName
  108. ${0} | ${''}
  109. ${1} | ${'ein'}
  110. ${2} | ${'zwei'}
  111. ${3} | ${'drei'}
  112. ${4} | ${'vier'}
  113. ${5} | ${'fünf'}
  114. ${6} | ${'sechs'}
  115. ${7} | ${'sieben'}
  116. ${8} | ${'acht'}
  117. ${9} | ${'neun'}
  118. `('$ones in ones place', ({
  119. ones,
  120. onesName,
  121. }) => {
  122. const value = (hundreds * 100) + ones;
  123. const name = [hundredsName, onesName].join('').trim();
  124. it(`converts ${value} to ${name}`, () => {
  125. expect(getNumberName(value, {locale: getLocalizedNumberName})).toBe(name);
  126. });
  127. });
  128. });
  129. describe('1 in tens place', () => {
  130. describe.each`
  131. ones | onesName
  132. ${0} | ${'zehn'}
  133. ${1} | ${'elf'}
  134. ${2} | ${'zwölf'}
  135. ${3} | ${'dreizehn'}
  136. ${4} | ${'vierzehn'}
  137. ${5} | ${'fünfzehn'}
  138. ${6} | ${'sechzehn'}
  139. ${7} | ${'siebzehn'}
  140. ${8} | ${'achtzehn'}
  141. ${9} | ${'neunzehn'}
  142. `('$ones in ones place', ({
  143. ones,
  144. onesName,
  145. }) => {
  146. const value = (hundreds * 100) + 10 + ones;
  147. const name = [hundredsName, onesName].join('').trim();
  148. it(`converts ${value} to ${name}`, () => {
  149. expect(getNumberName(value, {locale: getLocalizedNumberName})).toBe(name);
  150. });
  151. });
  152. });
  153. describe.each`
  154. tens | tensName
  155. ${2} | ${'zwanzig'}
  156. ${3} | ${'dreißig'}
  157. ${4} | ${'vierzig'}
  158. ${5} | ${'fünfzig'}
  159. ${6} | ${'sechzig'}
  160. ${7} | ${'siebzig'}
  161. ${8} | ${'achtzig'}
  162. ${9} | ${'neunzig'}
  163. `('$tens in tens place', ({tens, tensName}) => {
  164. describe('0 in ones place', () => {
  165. const value = (hundreds * 100) + (tens * 10);
  166. const name = [hundredsName, tensName].join('').trim();
  167. it(`converts ${value} to ${name}`, () => {
  168. expect(getNumberName(value, {locale: getLocalizedNumberName})).toBe(name);
  169. });
  170. });
  171. describe.each`
  172. ones | onesName
  173. ${1} | ${'ein'}
  174. ${2} | ${'zwei'}
  175. ${3} | ${'drei'}
  176. ${4} | ${'vier'}
  177. ${5} | ${'fünf'}
  178. ${6} | ${'sechs'}
  179. ${7} | ${'sieben'}
  180. ${8} | ${'acht'}
  181. ${9} | ${'neun'}
  182. `('$ones in ones place', ({
  183. ones,
  184. onesName,
  185. }) => {
  186. const value = (hundreds * 100) + (tens * 10) + ones;
  187. const name = [hundredsName, [onesName, tensName].join('und')].join('').trim();
  188. it(`converts ${value} to ${name}`, () => {
  189. expect(getNumberName(value, {locale: getLocalizedNumberName})).toBe(name);
  190. });
  191. });
  192. });
  193. });
  194. });