blob: 4dae4eac357d7551ccd144b5e53b9525e24d388c [file] [log] [blame]
/*
* 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 In checked mode, execution of an assert statement assert(e); proceeds as follows:
* The conditional expression e is evaluated to an object o. If the class of o is
* a subtype of Function then let r be the result of invoking o with no arguments.
* Otherwise, let r be o. It is a dynamic type error if o is not of type bool or
* of type Function, or if r is not of type bool. If r is false, we say that the
* assertion failed. If r is true, we say that the assertion succeeded. If the assertion
* succeeded, execution of the assert statement is complete. If the assertion failed,
* an AssertionError is thrown.
* @description Checks that the assert statement succeeds if the conditional expression
* evaluates to either true or () => true.
* @author rodionov
* @reviewer iefremov
*/
import "../../Utils/expect.dart";
import "../../Utils/dynamic_check.dart";
bool t() {return true;}
bool f() {return false;}
bool flag = false;
bool check() {flag = true; return flag;}
main() {
assert(check());
if(isCheckedMode()) {
Expect.isTrue(flag);
}
assert(true);
assert(true ? true : true);
assert((1 > 0 ? true && true : true || false));
assert(() => true);
assert(t);
assert("string".contains("tri") ? t : f);
assert("string".contains("tri") ? (() => true) : (() => false));
}