blob: 25f06fcf571819c9c54e1aece0b2f4f8d2f706d0 [file] [log] [blame]
// 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 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 a assertion error occurs if the conditional
* expression e evaluates to false and has correct message.
* @author sgrekhov@unipro.ru
*/
import '../../../Utils/expect.dart';
main() {
if (assertStatementsEnabled) {
dynamic n = null;
if(hasSoundNullSafety) {
Expect.throws(() {
assert(n);
}, (e) => e is TypeError);
} else {
Expect.throws(() {
assert(n);
}, (e) => e is AssertionError);
}
Expect.throws(() {
assert(false, "Some message");
}, (e) => e is AssertionError, "Some message");
Expect.throws(() {
assert(false, 123);
}, (e) => e is AssertionError, "123");
Expect.throws(() {
assert(false, 3.14);
}, (e) => e is AssertionError, 3.14.toString());
var o = new Object();
Expect.throws(() {
assert(false, o);
}, (e) => e is AssertionError, o.toString());
}
}