to-number-basic.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. try {
  2. assert(+false === 0);
  3. assert(-false === 0);
  4. assert(+true === 1);
  5. assert(-true === -1);
  6. assert(+null === 0);
  7. assert(-null === 0);
  8. assert(+[] === 0);
  9. assert(-[] === 0);
  10. assert(+[[[[[]]]]] === 0);
  11. assert(-[[[[[]]]]] === 0);
  12. assert(+[[[[[42]]]]] === 42);
  13. assert(-[[[[[42]]]]] === -42);
  14. assert(+"" === 0);
  15. assert(-"" === 0);
  16. assert(+"42" === 42);
  17. assert(-"42" === -42);
  18. assert(+42 === 42);
  19. assert(-42 === -42);
  20. assert(+1.23 === 1.23);
  21. assert(-1.23 === -1.23);
  22. // FIXME: returns NaN
  23. // assert(+"1.23" === 1.23)
  24. // assert(-"1.23" === -1.23)
  25. assert(isNaN(+undefined));
  26. assert(isNaN(-undefined));
  27. assert(isNaN(+{}));
  28. assert(isNaN(-{}));
  29. assert(isNaN(+{a: 1}));
  30. assert(isNaN(-{a: 1}));
  31. assert(isNaN(+[1, 2, 3]));
  32. assert(isNaN(-[1, 2, 3]));
  33. assert(isNaN(+[[[["foo"]]]]));
  34. assert(isNaN(-[[[["foo"]]]]));
  35. assert(isNaN(+"foo"));
  36. assert(isNaN(-"foo"));
  37. console.log("PASS");
  38. } catch (e) {
  39. console.log("FAIL: " + e);
  40. }