michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: michael@0: /** michael@0: File Name: 11.12.js michael@0: ECMA Section: 11.12 Conditional Operator michael@0: Description: michael@0: Logi michael@0: michael@0: calORExpression ? AssignmentExpression : AssignmentExpression michael@0: michael@0: Semantics michael@0: michael@0: The production ConditionalExpression : michael@0: LogicalORExpression ? AssignmentExpression : AssignmentExpression michael@0: is evaluated as follows: michael@0: michael@0: 1. Evaluate LogicalORExpression. michael@0: 2. Call GetValue(Result(1)). michael@0: 3. Call ToBoolean(Result(2)). michael@0: 4. If Result(3) is false, go to step 8. michael@0: 5. Evaluate the first AssignmentExpression. michael@0: 6. Call GetValue(Result(5)). michael@0: 7. Return Result(6). michael@0: 8. Evaluate the second AssignmentExpression. michael@0: 9. Call GetValue(Result(8)). michael@0: 10. Return Result(9). michael@0: michael@0: Author: christine@netscape.com michael@0: Date: 12 november 1997 michael@0: */ michael@0: var SECTION = "11.12"; michael@0: var VERSION = "ECMA_1"; michael@0: startTest(); michael@0: michael@0: writeHeaderToLog( SECTION + " Conditional operator( ? : )"); michael@0: michael@0: new TestCase( SECTION, "true ? 'PASSED' : 'FAILED'", "PASSED", (true?"PASSED":"FAILED")); michael@0: new TestCase( SECTION, "false ? 'FAILED' : 'PASSED'", "PASSED", (false?"FAILED":"PASSED")); michael@0: michael@0: new TestCase( SECTION, "1 ? 'PASSED' : 'FAILED'", "PASSED", (true?"PASSED":"FAILED")); michael@0: new TestCase( SECTION, "0 ? 'FAILED' : 'PASSED'", "PASSED", (false?"FAILED":"PASSED")); michael@0: new TestCase( SECTION, "-1 ? 'PASSED' : 'FAILED'", "PASSED", (true?"PASSED":"FAILED")); michael@0: michael@0: new TestCase( SECTION, "NaN ? 'FAILED' : 'PASSED'", "PASSED", (Number.NaN?"FAILED":"PASSED")); michael@0: michael@0: new TestCase( SECTION, "var VAR = true ? , : 'FAILED'", "PASSED", (VAR = true ? "PASSED" : "FAILED") ); michael@0: michael@0: test();