| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- var o = {};
- function Ctor() {};
- Ctor.prototype.valueOf = function() { return o.x++; }
- var c = new Ctor();
- var test_add = function(o, c)
- {
- var n = 0;
- for (var i = 0; i < 2; i++)
- {
- n = o.x + c;
- }
- return n;
- }
- test_add.test_result1 = 4;
- var test_add_assign = function() {
- for (var i = 0 ; i < 1 ; i++){
- var obj={ x:1.23, z:1 }
- for (var j = 0 ; j < 1 ; j++){
- obj.x += obj.z
- }
- }
- return obj.x;
- }
- test_add_assign.test_result1 = 2.23;
- var test_sub = function(o, c)
- {
- var n = 0;
- for (var i = 0; i < 2; i++)
- {
- n = o.x - c;
- }
- return n;
- }
- test_sub.test_result1 = 0;
- var test_mul = function(o, c)
- {
- var n = 0;
- for (var i = 0; i < 2; i++)
- {
- n = o.x * c;
- }
- return n;
- }
- test_mul.test_result1 = 4;
- var test_div = function(o, c)
- {
- var n = 0;
- for (var i = 0; i < 2; i++)
- {
- n = o.x / c;
- }
- return n;
- }
- test_div.test_result1 = 1;
- var test_mod = function(o, c)
- {
- var n = 0;
- for (var i = 0; i < 2; i++)
- {
- n = o.x % c;
- }
- return n;
- }
- test_mod.test_result1 = 0;
- var test_neg = function(o, c)
- {
- var n = 0;
- for (var i = 0; i < 2; i++)
- {
- n = -c;
- n += o.x;
- }
- return n;
- }
- test_neg.test_result1 = 1;
- var test_bitand = function(o, c)
- {
- var n = 0;
- for (var i = 0; i < 2; i++)
- {
- n += o.x & c;
- }
- return n;
- }
- test_bitand.test_result1 = 3;
- var test_bitor = function(o, c)
- {
- var n = 0;
- for (var i = 0; i < 2; i++)
- {
- n += o.x | c;
- }
- return n;
- }
- test_bitor.test_result1 = 3;
- var test_bitxor = function(o, c)
- {
- var n = 0;
- for (var i = 0; i < 2; i++)
- {
- n += o.x ^ c;
- }
- return n;
- }
- test_bitxor.test_result1 = 0;
- var test_bitnot = function(o, c)
- {
- var n = 0;
- for (var i = 0; i < 2; i++)
- {
- n += o.x;
- n += ~c;
- }
- return n;
- }
- test_bitnot.test_result1 = -2;
- var test_bitshiftleft = function(o, c)
- {
- var n = 0;
- for (var i = 0; i < 2; i++)
- {
- n += o.x << c;
- }
- return n;
- }
- test_bitshiftleft.test_result1 = 10;
- var test_bitshiftright = function(o, c)
- {
- var n = 0;
- for (var i = 0; i < 2; i++)
- {
- n += (o.x << 10) >> c;
- }
- return n;
- }
- test_bitshiftright.test_result1 = 1024;
- var test_unsignedbitshiftright = function(o, c)
- {
- var n = 0;
- for (var i = 0; i < 2; i++)
- {
- n += (-o.x << 10) >>> c;
- }
- return n;
- }
- test_unsignedbitshiftright.test_result1 = 3221224448;
- var test_less = function(o, c)
- {
- var n = 0;
- for (var i = 0; i < 2; i++)
- {
- if (o.x < c)
- {
- n += o.x;
- }
- else
- {
- n -= o.x;
- }
- }
- return n;
- }
- test_less.test_result1 = -5;
- var test_less_equal = function(o, c)
- {
- var n = 0;
- for (var i = 0; i < 2; i++)
- {
- if (o.x <= c)
- {
- n += o.x;
- }
- else
- {
- n -= o.x;
- }
- }
- return n;
- }
- test_less_equal.test_result1 = 5;
- var test_greater = function(o, c)
- {
- var n = 0;
- for (var i = 0; i < 2; i++)
- {
- if (o.x > c)
- {
- n += o.x;
- }
- else
- {
- n -= o.x;
- }
- }
- return n;
- }
- test_greater.test_result1 = -5;
- var test_greater_equal = function(o, c)
- {
- var n = 0;
- for (var i = 0; i < 2; i++)
- {
- if (o.x >= c)
- {
- n += o.x;
- }
- else
- {
- n -= o.x;
- }
- }
- return n;
- }
- test_greater_equal.test_result1 = 5;
- var test_equal = function(o, c)
- {
- var n = 0;
- for (var i = 0; i < 2; i++)
- {
- if (o.x == c)
- {
- n += o.x;
- }
- else
- {
- n -= o.x;
- }
- }
- return n;
- }
- test_equal.test_result1 = 5;
- var test_not_equal = function(o, c)
- {
- var n = 0;
- for (var i = 0; i < 2; i++)
- {
- if (o.x != c)
- {
- n += o.x;
- }
- else
- {
- n -= o.x;
- }
- }
- return n;
- }
- test_not_equal.test_result1 = -5;
- var test_compare_less = function(o, c)
- {
- var n = 0;
- for (var i = 0; i < 2; i++)
- {
- var b = o.x < c;
- if (b)
- {
- n += o.x;
- }
- else
- {
- n -= o.x;
- }
- }
- return n;
- }
- test_compare_less.test_result1 = -5;
- var test_compare_less_equal = function(o, c)
- {
- var n = 0;
- for (var i = 0; i < 2; i++)
- {
- var b = o.x <= c;
- if (b)
- {
- n += o.x;
- }
- else
- {
- n -= o.x;
- }
- }
- return n;
- }
- test_compare_less_equal.test_result1 = 5;
- var test_compare_greater = function(o, c)
- {
- var n = 0;
- for (var i = 0; i < 2; i++)
- {
- var b = o.x > c;
- if (b)
- {
- n += o.x;
- }
- else
- {
- n -= o.x;
- }
- }
- return n;
- }
- test_compare_greater.test_result1 = -5;
- var test_compare_greater_equal = function(o, c)
- {
- var n = 0;
- for (var i = 0; i < 2; i++)
- {
- var b = o.x >= c;
- if (b)
- {
- n += o.x;
- }
- else
- {
- n -= o.x;
- }
- }
- return n;
- }
- test_compare_greater_equal.test_result1 = 5;
- var test_compare_equal = function(o, c)
- {
- var n = 0;
- for (var i = 0; i < 2; i++)
- {
- var b = (o.x == c);
- if (b)
- {
- n += o.x;
- }
- else
- {
- n -= o.x;
- }
- }
- return n;
- }
- test_compare_equal.test_result1 = 5;
- var test_compare_not_equal = function(o, c)
- {
- var n = 0;
- for (var i = 0; i < 2; i++)
- {
- var b = (o.x != c);
- if (b)
- {
- n += o.x;
- }
- else
- {
- n -= o.x;
- }
- }
- return n;
- }
- test_compare_not_equal.test_result1 = -5;
- Object.defineProperty(this, "getme", {get: function() { WScript.Echo('no!')}});
- (function() {
- // Try to hoist a property with a getter to verify that we can safely avoid executing the getter in the header.
- for (var i = 0; i < 10; i++) {
- if (this.undefined) {
- var g = getme;
- g.x;
- }
- }
- })();
- for (var test in this)
- {
- if (typeof this[test] == "function" && test != "Ctor" && this[test].test_result1 != undefined)
- {
- o.x = 1;
- var ret = this[test](o,c);
- if (ret == this[test].test_result1)
- {
- WScript.Echo("PASS: " + test);
- }
- else
- {
- WScript.Echo("FAIL: " + test + ": expected " + this[test].test_result1 + ", got " + ret);
- }
- }
- }
|