// Copyright (c) 2014, 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.

// @dart = 2.9

import 'package:expect/expect.dart';

var global = 0;

bar() {
  global += 1;
}

baz() {
  global += 100;
}

foo(x, y, z) {
  if ((x ? false : true) ? y : z) {
    bar();
    bar();
  } else {
    baz();
    baz();
  }
}

foo2(x, y, z) {
  return (x ? false : true) ? y : z;
}

foo3(x, y, z) {
  if (x ? (z ? false : true) : (y ? false : true)) {
    baz();
    baz();
  } else {
    bar();
    bar();
  }
}

main() {
  foo(true, true, true);
  Expect.equals(2, global);

  foo(true, true, false);
  Expect.equals(202, global);

  foo(true, false, true);
  Expect.equals(204, global);

  foo(true, false, false);
  Expect.equals(404, global);

  foo(false, true, true);
  Expect.equals(406, global);

  foo(false, true, false);
  Expect.equals(408, global);

  foo(false, false, true);
  Expect.equals(608, global);

  foo(false, false, false);
  Expect.equals(808, global);

  Expect.equals(true, foo2(true, true, true));
  Expect.equals(false, foo2(true, true, false));
  Expect.equals(true, foo2(true, false, true));
  Expect.equals(false, foo2(true, false, false));
  Expect.equals(true, foo2(false, true, true));
  Expect.equals(true, foo2(false, true, false));
  Expect.equals(false, foo2(false, false, true));
  Expect.equals(false, foo2(false, false, false));

  global = 0;
  foo3(true, true, true);
  Expect.equals(2, global);

  foo3(true, true, false);
  Expect.equals(202, global);

  foo3(true, false, true);
  Expect.equals(204, global);

  foo3(true, false, false);
  Expect.equals(404, global);

  foo3(false, true, true);
  Expect.equals(406, global);

  foo3(false, true, false);
  Expect.equals(408, global);

  foo3(false, false, true);
  Expect.equals(608, global);

  foo3(false, false, false);
  Expect.equals(808, global);
}
