// Copyright (c) 2016, 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
/// Description    Operator                          Associativity Precedence
/// If-null           ??                               Left             4
/// @description Test that '??' if-null operator has precedence (4).
/// Compare with conditional '? :' operator (precedence 3). Test that '??' has
/// priority higher than '? :'
/// @author sgrekhov@unipro.ru

import "../../../Utils/expect.dart";

String log = "";

class C {
  getNull(String val) {
    log += val;
    return null;
  }

  bool getTrue(String val) {
    log += val;
    return true;
  }

  bool getFalse(String val) {
    log += val;
    return false;
  }
}

main() {
  C c = new C();

  var v = c.getNull("c0") ?? c.getTrue("c1") ? c.getTrue("c2") : c.getFalse("c3");
  Expect.isTrue(v);
  Expect.equals("c0c1c2", log);

  log = "";

  v = c.getFalse("c0") ? c.getNull("c1") : c.getNull("c2") ??
      c.getTrue("c3") ? c.getTrue("c4") : c.getFalse("c5");
  Expect.isTrue(v);
  Expect.equals("c0c2c3c4", log);
}

