equals.js 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. function write(v) {
  6. v = v.replace(/\(PDT\)/g, "(Pacific Daylight Time)")
  7. .replace(/\(PST\)/g, "(Pacific Standard Time)");
  8. WScript.Echo(v + "");
  9. }
  10. function foo() {}
  11. var oi = new Object(); oi.valueof = function() { return 100; }
  12. var ob = new Object(); ob.valueof = function() { return false; }
  13. var os = new Object(); os.valueof = function() { return "hello"; }
  14. var ni = new Number(10); ni.valueof = function() { return 100; }
  15. var nb = new Number(10); nb.valueof = function() { return false; }
  16. var ns = new Number(10); ns.valueof = function() { return "hello"; }
  17. var bi = new Boolean(true); bi.valueof = function() { return 100; }
  18. var bb = new Boolean(true); bb.valueof = function() { return false; }
  19. var bs = new Boolean(true); bs.valueof = function() { return "hello"; }
  20. var si = new String("world"); bi.valueof = function() { return 100; }
  21. var sb = new String("world"); bb.valueof = function() { return false; }
  22. var ss = new String("world"); bs.valueof = function() { return "hello"; }
  23. var all = [ undefined, null,
  24. true, false,
  25. Boolean(true), Boolean(false),
  26. new Boolean(true), new Boolean(false),
  27. NaN, +0, -0, 0, 0.0, -0.0, +0.0,
  28. 1, 10, 10.0, 10.1, -1,
  29. -10, -10.0, -10.1,
  30. Number.MAX_VALUE, Number.MIN_VALUE, Number.NaN, Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY,
  31. Number(10), Number(1), Number(0.0),
  32. new Number(NaN), new Number(+0), new Number(-0), new Number(0),
  33. new Number(0.0), new Number(-0.0), new Number(+0.0),
  34. new Number(1), new Number(10), new Number(10.0), new Number(10.1), new Number(-1),
  35. new Number(-10), new Number(-10.0), new Number(-10.1),
  36. new Number(Number.MAX_VALUE), new Number(Number.MIN_VALUE), new Number(Number.NaN),
  37. new Number(Number.POSITIVE_INFINITY), new Number(Number.NEGATIVE_INFINITY),
  38. "", "hello", "hel" + "lo",
  39. String(""), String("hello"), String("h" + "ello"),
  40. new String(""), new String("hello"), new String("he" + "llo"),
  41. new Object(), new Object(),
  42. [1,2,3], [1,2,3], [],
  43. new Array(3), Array(3), new Array(1,2,3), Array(1),
  44. foo, new foo(),
  45. oi, ob, os,
  46. ni, nb, ns,
  47. bi, bb, bs,
  48. si, sb, ss,
  49. new Date("Thu Oct 24 00:15:01 UTC+0530 1974"), new Date("Wed Oct 23 11:45:01 PDT 1974")
  50. ];
  51. for (var i=0; i<all.length; ++i) {
  52. for (var j=0; j<all.length; ++j) {
  53. write("a["+i+"]("+all[i]+") == a["+j+"]("+all[j]+") : " + (all[i] == all[j]));
  54. write("a["+i+"]("+all[i]+") != a["+j+"]("+all[j]+") : " + (all[i] != all[j]));
  55. }
  56. }