blob: a22d594bdd0df1fe4b7933ef0c0a02254fb40eb1 [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 static void throws(void f(), [_CheckExceptionFn check = null, String reason = null])
* typedef bool _CheckExceptionFn(exception)
* Calls the function [f] and verifies that it throws an exception.
* The optional [check] function can provide additional validation that the
* correct exception is being thrown.
* @description Checks that if the tested method throws an exception, this
* method fails only if the validating function is not null and returns false,
* regardless of whether the specified reason is null or not.
* @author rodionov
*/
import "../../../Utils/expect.dart";
typedef bool checkFn(exception);
void goodboy() {
throw new Exception("");
}
main() {
Expect.throws(goodboy);
Expect.throws(goodboy, null, "");
Expect.throws(goodboy, null, "not empty");
Expect.throws(goodboy, (e) => true);
Expect.throws(goodboy, (e) => true, "");
Expect.throws(goodboy, (e) => true, "not empty");
check(goodboy, (e) => false);
check(goodboy, (e) => false, "");
check(goodboy, (e) => false, "not empty");
}
void check(void f(), [checkFn? ch = null, String? reason = null]) {
try {
Expect.throws(f, ch, reason);
throw new Exception("ExpectException expected");
} on ExpectException catch(e) {
}
}