/*
 * Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
 * for details. All rights reserved. Use of this source code is governed by a
 * BSD-style license that can be found in the LICENSE file.
 */
/**
 * @assertion Operator precedence is given implicitly by the grammar.
 * @description Checks that operator precedence given implicitly by the grammar
 * holds true (equality higher than conditional, relational higher than equality).
 * @author vasya
 */
import "../../../Utils/expect.dart";

main() {
  Expect.equals((true ? 1 : ( false ? 1 : 0 )), true ? 1 : false ? 0 : 1);
  Expect.equals((true == (1 <= 2)) ? (false != (2 > 3)) : ((0 >= 1) != false),
      true == 1 <= 2 ? false != 2 > 3 : 0 >= 1 != false);
  Expect.equals(((1 == 0) ? -1 : 100), 1 == 0 ? -1 : 100);
  Expect.equals(((5 - (4 * 2)) > 0) ? 4 : (2 * 4), 5 - 4 * 2 > 0 ? 4 : 2 * 4);
  Expect.equals(12 > (22 > 11 ? 22 : 11) ? 12 : (22 > 11 ? 22 : 11),
      ((12 > (22 > 11 ? 22 : 11) ) ? 12 : (22 > 11 ? 22 : 11)));
}
