parseFloat.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. test("parsing numbers", () => {
  2. [
  3. [0, 0],
  4. [1, 1],
  5. [0.23, 0.23],
  6. [1.23, 1.23],
  7. [0.0123e2, 1.23],
  8. [1.23e4, 12300],
  9. [Infinity, Infinity],
  10. ].forEach(test => {
  11. expect(parseFloat(test[0])).toBe(test[1]);
  12. expect(parseFloat(+test[0])).toBe(test[1]);
  13. expect(parseFloat(-test[0])).toBe(-test[1]);
  14. });
  15. });
  16. test("parsing strings", () => {
  17. [
  18. ["0", 0],
  19. ["1", 1],
  20. [".23", 0.23],
  21. ["1.23", 1.23],
  22. ["0.0123E+2", 1.23],
  23. ["1.23e4", 12300],
  24. ["0x1.23p5", 0],
  25. ["1.23p5", 1.23],
  26. ["1.23e42351245", Infinity],
  27. ["Infinity", Infinity],
  28. ].forEach(test => {
  29. expect(parseFloat(test[0])).toBe(test[1]);
  30. expect(parseFloat(`+${test[0]}`)).toBe(test[1]);
  31. expect(parseFloat(`-${test[0]}`)).toBe(-test[1]);
  32. expect(parseFloat(`${test[0]}foo`)).toBe(test[1]);
  33. expect(parseFloat(`+${test[0]}foo`)).toBe(test[1]);
  34. expect(parseFloat(`-${test[0]}foo`)).toBe(-test[1]);
  35. expect(parseFloat(` \n \t ${test[0]} \v foo `)).toBe(test[1]);
  36. expect(parseFloat(` \r -${test[0]} \f \n\n foo `)).toBe(-test[1]);
  37. expect(parseFloat({ toString: () => test[0] })).toBe(test[1]);
  38. });
  39. });
  40. test("parsing NaN", () => {
  41. [
  42. "",
  43. [],
  44. [],
  45. true,
  46. false,
  47. null,
  48. undefined,
  49. NaN,
  50. "foo123",
  51. "foo+123",
  52. "fooInfinity",
  53. "foo+Infinity",
  54. ].forEach(value => {
  55. expect(parseFloat(value)).toBeNaN();
  56. });
  57. expect(parseFloat()).toBeNaN();
  58. expect(parseFloat("", 123, Infinity)).toBeNaN();
  59. });