// 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 Execution of an if statement of the form if (b) s1 else s2
/// proceeds as follows:
/// . . .
/// If r is true, then the statement {s1} is executed, otherwise statement {s2}
/// is executed.
/// @description Checks that if the expression b evaluates to an object o that
/// converts to the boolean false, then the statement s2 is executed.
/// Boolean false constant is tested as well as various comparison expressions.
/// @author vasya

import '../../../Utils/expect.dart';

main() {
  var i = 0;
  if (false) {
    i = 1;
  } else {
    i = 2;
  }
  Expect.equals(2, i);

  i = 0;
  if ( 0 > 1 ) {
    i = 1;
  } else {
    i = 2;
  }
  Expect.equals(2, i);

  i = 0;
  if ( "".length > 0 ) {
    i = 1;
  } else {
    i = 2;
  }
  Expect.equals(2, i);

  i = 0;
  if ( [].length == 1 ) {
    i = 1;
  } else {
    i = 2;
  }
  Expect.equals(2, i);
}
