1 // Copyright 2013 the V8 project authors. All rights reserved. 2 // Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 3 // 4 // Redistribution and use in source and binary forms, with or without 5 // modification, are permitted provided that the following conditions 6 // are met: 7 // 1. Redistributions of source code must retain the above copyright 8 // notice, this list of conditions and the following disclaimer. 9 // 2. Redistributions in binary form must reproduce the above copyright 10 // notice, this list of conditions and the following disclaimer in the 11 // documentation and/or other materials provided with the distribution. 12 // 13 // THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY 14 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 15 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 16 // DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY 17 // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 18 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 19 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 20 // ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 22 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 24 description("This test checks toString() round-trip decompilation for binary and unary operators."); 25 26 var tests = [ 27 "x + + y", 28 "x + - y", 29 "x - + y", 30 "x - - y", 31 "x * + y", 32 "x * - y", 33 "x / + y", 34 "x / - y", 35 "x % + y", 36 "x % - y", 37 "x++ + y", 38 "x++ - y", 39 "x++ * y", 40 "x++ / y", 41 "x-- + y", 42 "x-- - y", 43 "x-- * y", 44 "x-- / y", 45 "x + ++y", 46 "x - ++y", 47 "x * ++y", 48 "x / ++y", 49 "x + --y", 50 "x - --y", 51 "x * --y", 52 "x / --y", 53 "x++ + ++y", 54 "x++ - ++y", 55 "x++ * ++y", 56 "x++ / ++y", 57 "x-- + ++y", 58 "x-- - ++y", 59 "x-- * ++y", 60 "x-- / ++y", 61 "x++ + --y", 62 "x++ - --y", 63 "x++ * --y", 64 "x++ / --y", 65 "x-- + --y", 66 "x-- - --y", 67 "x-- * --y", 68 "x-- / --y", 69 "+ + x", 70 "+ - x", 71 "- + x", 72 "- - x", 73 "1", 74 "-1", 75 "- -1", 76 "- - 0", 77 "- - NaN" 78 ]; 79 80 for (test in tests) { 81 var decompiledFunction = eval("(function () { " + tests[test] + ";})").toString().replace(/\n/g, ""); 82 shouldBe("decompiledFunction", "'function () { " + tests[test] + ";}'"); 83 } 84