to-number-basic.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. test("non-numeric primitives", () => {
  2. expect(+false).toBe(0);
  3. expect(-false).toBe(-0);
  4. expect(+true).toBe(1);
  5. expect(-true).toBe(-1);
  6. expect(+null).toBe(0);
  7. expect(-null).toBe(-0);
  8. expect(+undefined).toBeNaN();
  9. expect(-undefined).toBeNaN();
  10. });
  11. test("arrays", () => {
  12. expect(+[]).toBe(0);
  13. expect(-[]).toBe(-0);
  14. expect(+[,]).toBe(0);
  15. expect(-[,]).toBe(-0);
  16. expect(+[null]).toBe(0);
  17. expect(-[null]).toBe(-0);
  18. expect(+[undefined]).toBe(0);
  19. expect(-[undefined]).toBe(-0);
  20. expect(+[[[[[]]]]]).toBe(0);
  21. expect(-[[[[[]]]]]).toBe(-0);
  22. expect(+[[[[[42]]]]]).toBe(42);
  23. expect(-[[[[[42]]]]]).toBe(-42);
  24. expect(+[, , ,]).toBeNaN();
  25. expect(-[, , ,]).toBeNaN();
  26. expect(+[undefined, undefined]).toBeNaN();
  27. expect(-[undefined, undefined]).toBeNaN();
  28. expect(+[1, 2, 3]).toBeNaN();
  29. expect(-[1, 2, 3]).toBeNaN();
  30. expect(+[[[["foo"]]]]).toBeNaN();
  31. expect(-[[[["foo"]]]]).toBeNaN();
  32. });
  33. test("strings", () => {
  34. expect(+"").toBe(0);
  35. expect(-"").toBe(-0);
  36. expect(+"42").toBe(42);
  37. expect(-"42").toBe(-42);
  38. expect(+"1.23").toBe(1.23);
  39. expect(-"1.23").toBe(-1.23);
  40. expect(+"foo").toBeNaN();
  41. expect(-"foo").toBeNaN();
  42. });
  43. test("numbers", () => {
  44. expect(+42).toBe(42);
  45. expect(-42).toBe(-42);
  46. expect(+1.23).toBe(1.23);
  47. expect(-1.23).toBe(-1.23);
  48. });
  49. test("infinity", () => {
  50. expect(+"Infinity").toBe(Infinity);
  51. expect(+"+Infinity").toBe(Infinity);
  52. expect(+"-Infinity").toBe(-Infinity);
  53. expect(-"Infinity").toBe(-Infinity);
  54. expect(-"+Infinity").toBe(-Infinity);
  55. expect(-"-Infinity").toBe(Infinity);
  56. });
  57. test("space and space-like escapes", () => {
  58. expect(+" \r \t \n ").toBe(0);
  59. expect(+" \n \t Infinity \r ").toBe(Infinity);
  60. expect(+"\r \n1.23 \t\t\t \n").toBe(1.23);
  61. });
  62. test("object literals", () => {
  63. expect(+{}).toBeNaN();
  64. expect(-{}).toBeNaN();
  65. expect(+{ a: 1 }).toBeNaN();
  66. expect(-{ a: 1 }).toBeNaN();
  67. });