/*
 * 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 (logical AND higher than logical OR and logical negation higher
 * than both).
 * @author vasya
 */
import "../../../Utils/expect.dart";

check(bool A, bool B, bool C, [bool D=true]) {
  Expect.equals(A || (B && C), A || B && C);
  Expect.equals((A && B) || (C && D), A && B || C && D);
  Expect.equals(((A && B) && C) || D, A && B && C || D);
  Expect.equals(((!A) && B) || C, !A && B || C);
}

main() {
  check(true, true, true);
  check(true, true, true, false);
  check(true, true, false, false);
  check(true, false, false, false);
  check(false, false, false, false);
  check(false, false, false);
  check(false, false, true);
  check(false, true, true);
}
