to-number-basic.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. load("test-common.js");
  2. try {
  3. assert(+false === 0);
  4. assert(-false === 0);
  5. assert(+true === 1);
  6. assert(-true === -1);
  7. assert(+null === 0);
  8. assert(-null === 0);
  9. assert(+[] === 0);
  10. assert(-[] === 0);
  11. assert(+[,] === 0);
  12. assert(-[,] === 0);
  13. assert(+[null] === 0);
  14. assert(-[null] === 0);
  15. assert(+[undefined] === 0);
  16. assert(-[undefined] === 0);
  17. assert(+[[[[[]]]]] === 0);
  18. assert(-[[[[[]]]]] === 0);
  19. assert(+[[[[[42]]]]] === 42);
  20. assert(-[[[[[42]]]]] === -42);
  21. assert(+"" === 0);
  22. assert(-"" === 0);
  23. assert(+"42" === 42);
  24. assert(-"42" === -42);
  25. assert(+42 === 42);
  26. assert(-42 === -42);
  27. assert(+1.23 === 1.23);
  28. assert(-1.23 === -1.23);
  29. // FIXME: returns NaN
  30. // assert(+"1.23" === 1.23)
  31. // assert(-"1.23" === -1.23)
  32. assert(+"Infinity" === Infinity);
  33. assert(+"+Infinity" === Infinity);
  34. assert(+"-Infinity" === -Infinity);
  35. assert(-"Infinity" === -Infinity);
  36. assert(-"+Infinity" === -Infinity);
  37. assert(-"-Infinity" === Infinity);
  38. assert(isNaN(+undefined));
  39. assert(isNaN(-undefined));
  40. assert(isNaN(+{}));
  41. assert(isNaN(-{}));
  42. assert(isNaN(+{ a: 1 }));
  43. assert(isNaN(-{ a: 1 }));
  44. assert(isNaN(+[, , ,]));
  45. assert(isNaN(-[, , ,]));
  46. assert(isNaN(+[undefined, undefined]));
  47. assert(isNaN(-[undefined, undefined]));
  48. assert(isNaN(+[1, 2, 3]));
  49. assert(isNaN(-[1, 2, 3]));
  50. assert(isNaN(+[[[["foo"]]]]));
  51. assert(isNaN(-[[[["foo"]]]]));
  52. assert(isNaN(+"foo"));
  53. assert(isNaN(-"foo"));
  54. console.log("PASS");
  55. } catch (e) {
  56. console.log("FAIL: " + e);
  57. }