Number.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. test("length is 1", () => {
  2. expect(Number).toHaveLength(1);
  3. });
  4. test("constructor without new", () => {
  5. expect(typeof Number()).toBe("number");
  6. expect(typeof new Number()).toBe("object");
  7. expect(Number()).toBe(0);
  8. expect(Number(123)).toBe(123);
  9. expect(Number(-123)).toBe(-123);
  10. expect(Number(123n)).toBe(123);
  11. expect(Number(-123n)).toBe(-123);
  12. expect(Number("1_23")).toBeNaN();
  13. expect(Number("00123")).toBe(123);
  14. expect(Number("123n")).toBeNaN();
  15. expect(Number("42")).toBe(42);
  16. expect(Number(null)).toBe(0);
  17. expect(Number(true)).toBe(1);
  18. expect(Number("Infinity")).toBe(Infinity);
  19. expect(Number("+Infinity")).toBe(Infinity);
  20. expect(Number("-Infinity")).toBe(-Infinity);
  21. expect(Number("infinity")).toBeNaN();
  22. expect(Number("-infinity")).toBeNaN();
  23. expect(Number("INFINITY")).toBeNaN();
  24. expect(Number("-INFINITY")).toBeNaN();
  25. expect(Number("inf")).toBeNaN();
  26. expect(Number(undefined)).toBeNaN();
  27. expect(Number({})).toBeNaN();
  28. expect(Number({ a: 1 })).toBeNaN();
  29. expect(Number([1, 2, 3])).toBeNaN();
  30. expect(Number("foo")).toBeNaN();
  31. expect(Number("10e10000")).toBe(Infinity);
  32. expect(Number("-10e10000")).toBe(-Infinity);
  33. expect(Number("0b1")).toBe(1);
  34. expect(Number("0B1")).toBe(1);
  35. expect(Number("0b01")).toBe(1);
  36. expect(Number("0b11")).toBe(3);
  37. expect(Number("0b")).toBeNaN();
  38. expect(Number("0B")).toBeNaN();
  39. expect(Number("-0b1")).toBeNaN();
  40. expect(Number("+0b1")).toBeNaN();
  41. expect(Number("0b1.1")).toBeNaN();
  42. expect(Number("0b1e10")).toBeNaN();
  43. expect(Number("0b1e+10")).toBeNaN();
  44. expect(Number("0b1e-10")).toBeNaN();
  45. expect(Number("0b1_1")).toBeNaN();
  46. expect(Number("0o7")).toBe(7);
  47. expect(Number("0O7")).toBe(7);
  48. expect(Number("0o07")).toBe(7);
  49. expect(Number("0o77")).toBe(63);
  50. expect(Number("0o")).toBeNaN();
  51. expect(Number("0O")).toBeNaN();
  52. expect(Number("-0o1")).toBeNaN();
  53. expect(Number("+0o1")).toBeNaN();
  54. expect(Number("0o1.1")).toBeNaN();
  55. expect(Number("0o1e10")).toBeNaN();
  56. expect(Number("0o1e+10")).toBeNaN();
  57. expect(Number("0o1e-10")).toBeNaN();
  58. expect(Number("0o1_1")).toBeNaN();
  59. expect(Number("0x1")).toBe(1);
  60. expect(Number("0X1")).toBe(1);
  61. expect(Number("0x01")).toBe(1);
  62. expect(Number("0x11")).toBe(17);
  63. expect(Number("0x")).toBeNaN();
  64. expect(Number("0X")).toBeNaN();
  65. expect(Number("-0x1")).toBeNaN();
  66. expect(Number("+0x1")).toBeNaN();
  67. expect(Number("0x1.1")).toBeNaN();
  68. expect(Number("0x1e10")).toBe(7696);
  69. expect(Number("0x1e+10")).toBeNaN();
  70. expect(Number("0x1e-10")).toBeNaN();
  71. expect(Number("0x1_1")).toBeNaN();
  72. });
  73. test("constructor with new", () => {
  74. expect(typeof new Number()).toBe("object");
  75. expect(new Number().valueOf()).toBe(0);
  76. expect(new Number(123).valueOf()).toBe(123);
  77. expect(new Number(-123).valueOf()).toBe(-123);
  78. expect(new Number(123n).valueOf()).toBe(123);
  79. expect(new Number(-123n).valueOf()).toBe(-123);
  80. expect(new Number("1_23").valueOf()).toBeNaN();
  81. expect(new Number("00123").valueOf()).toBe(123);
  82. expect(new Number("123n").valueOf()).toBeNaN();
  83. expect(new Number("42").valueOf()).toBe(42);
  84. expect(new Number(null).valueOf()).toBe(0);
  85. expect(new Number(true).valueOf()).toBe(1);
  86. expect(new Number("Infinity").valueOf()).toBe(Infinity);
  87. expect(new Number("+Infinity").valueOf()).toBe(Infinity);
  88. expect(new Number("-Infinity").valueOf()).toBe(-Infinity);
  89. expect(new Number("infinity").valueOf()).toBeNaN();
  90. expect(new Number("-infinity").valueOf()).toBeNaN();
  91. expect(new Number("INFINITY").valueOf()).toBeNaN();
  92. expect(new Number("-INFINITY").valueOf()).toBeNaN();
  93. expect(new Number("inf").valueOf()).toBeNaN();
  94. expect(new Number(undefined).valueOf()).toBeNaN();
  95. expect(new Number({}).valueOf()).toBeNaN();
  96. expect(new Number({ a: 1 }).valueOf()).toBeNaN();
  97. expect(new Number([1, 2, 3]).valueOf()).toBeNaN();
  98. expect(new Number("foo").valueOf()).toBeNaN();
  99. expect(new Number("10e10000").valueOf()).toBe(Infinity);
  100. expect(new Number("-10e10000").valueOf()).toBe(-Infinity);
  101. expect(new Number("0b1").valueOf()).toBe(1);
  102. expect(new Number("0B1").valueOf()).toBe(1);
  103. expect(new Number("0b01").valueOf()).toBe(1);
  104. expect(new Number("0b11").valueOf()).toBe(3);
  105. expect(new Number("0b").valueOf()).toBeNaN();
  106. expect(new Number("0B").valueOf()).toBeNaN();
  107. expect(new Number("-0b1").valueOf()).toBeNaN();
  108. expect(new Number("+0b1").valueOf()).toBeNaN();
  109. expect(new Number("0b1.1").valueOf()).toBeNaN();
  110. expect(new Number("0b1e10").valueOf()).toBeNaN();
  111. expect(new Number("0b1e+10").valueOf()).toBeNaN();
  112. expect(new Number("0b1e-10").valueOf()).toBeNaN();
  113. expect(new Number("0b1_1").valueOf()).toBeNaN();
  114. expect(new Number("0o7").valueOf()).toBe(7);
  115. expect(new Number("0O7").valueOf()).toBe(7);
  116. expect(new Number("0o07").valueOf()).toBe(7);
  117. expect(new Number("0o77").valueOf()).toBe(63);
  118. expect(new Number("0o").valueOf()).toBeNaN();
  119. expect(new Number("0O").valueOf()).toBeNaN();
  120. expect(new Number("-0o1").valueOf()).toBeNaN();
  121. expect(new Number("+0o1").valueOf()).toBeNaN();
  122. expect(new Number("0o1.1").valueOf()).toBeNaN();
  123. expect(new Number("0o1e7").valueOf()).toBeNaN();
  124. expect(new Number("0o1e+10").valueOf()).toBeNaN();
  125. expect(new Number("0o1e-10").valueOf()).toBeNaN();
  126. expect(new Number("0o1_1").valueOf()).toBeNaN();
  127. expect(new Number("0x1").valueOf()).toBe(1);
  128. expect(new Number("0X1").valueOf()).toBe(1);
  129. expect(new Number("0x01").valueOf()).toBe(1);
  130. expect(new Number("0x11").valueOf()).toBe(17);
  131. expect(new Number("0x").valueOf()).toBeNaN();
  132. expect(new Number("0X").valueOf()).toBeNaN();
  133. expect(new Number("-0x1").valueOf()).toBeNaN();
  134. expect(new Number("+0x1").valueOf()).toBeNaN();
  135. expect(new Number("0x1.1").valueOf()).toBeNaN();
  136. expect(new Number("0x1e10").valueOf()).toBe(7696);
  137. expect(new Number("0x1e+10").valueOf()).toBeNaN();
  138. expect(new Number("0x1e-10").valueOf()).toBeNaN();
  139. expect(new Number("0x1_1").valueOf()).toBeNaN();
  140. });