diff options
Diffstat (limited to 'js/src/tests/non262/operators/order-01.js')
-rw-r--r-- | js/src/tests/non262/operators/order-01.js | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/js/src/tests/non262/operators/order-01.js b/js/src/tests/non262/operators/order-01.js new file mode 100644 index 0000000000..cab0c9b466 --- /dev/null +++ b/js/src/tests/non262/operators/order-01.js @@ -0,0 +1,72 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +//----------------------------------------------------------------------------- +var BUGNUMBER = 433672; +var summary = 'operator evaluation order'; +var actual = ''; +var expect = ''; + +function makeObject(label) +{ + var o = (function (){}); + + o.label = label; + o.valueOf = (function() { actual += this.label + ' valueOf, '; return Object.prototype.valueOf.call(this); }); + o.toString = (function() { actual += this.label + ' toString, '; return Object.prototype.toString.call(this); }); + + return o; +} + +operators = [ + {section: '11.5.1', operator: '*'}, + {section: '11.5.2', operator: '/'}, + {section: '11.5.3', operator: '%'}, + {section: '11.6.1', operator: '+'}, + {section: '11.6.2', operator: '-'}, + {section: '11.7.1', operator: '<<'}, + {section: '11.7.2', operator: '>>'}, + {section: '11.7.3', operator: '>>>'}, + {section: '11.8.1', operator: '<'}, + {section: '11.8.2', operator: '>'}, + {section: '11.8.3', operator: '<='}, + {section: '11.8.4', operator: '>='}, + {section: '11.10', operator: '&'}, + {section: '11.10', operator: '^'}, + {section: '11.10', operator: '|'}, + {section: '11.13.2', operator: '*='}, + {section: '11.13.2', operator: '/='}, + {section: '11.13.2', operator: '%='}, + {section: '11.13.2', operator: '+='}, + {section: '11.13.2', operator: '<<='}, + {section: '11.13.2', operator: '>>='}, + {section: '11.13.2', operator: '>>>='}, + {section: '11.13.2', operator: '&='}, + {section: '11.13.2', operator: '^='}, + {section: '11.13.2', operator: '|='}, + ]; + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + +function test() +{ + printBugNumber(BUGNUMBER); + printStatus (summary); + + for (var i = 0; i < operators.length; i++) + { + expect = 'left valueOf, left toString, right valueOf, right toString, '; + actual = ''; + + var left = makeObject('left'); + var right = makeObject('right'); + + eval('left ' + operators[i].operator + ' right'); + + reportCompare(expect, actual, summary + ': ' + operators[i].section + ' ' + operators[i].operator); + } +} |