Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(142)

Unified Diff: lib/unittest/expect.dart

Issue 10579008: Added test setup/teardown. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: lib/unittest/expect.dart
===================================================================
--- lib/unittest/expect.dart (revision 8828)
+++ lib/unittest/expect.dart (working copy)
@@ -4,30 +4,21 @@
/**
* This is the main assertion function. It asserts that [actual]
- * matches the [matcher]. [reason] is optional and is typically
- * not supplied, as a reason can be generated from the matcher.
+ * matches the [matcher]. [matcher] is optional and defaults to isTrue,
+ * so expect can be used with a single predicate argument. [reason]
+ * is optional and is typically not supplied if a reasonable matcher is
+ * explicitly provided, as a reason can be generated from the matcher.
* If [reason] is included it is appended to the reason generated
* by the matcher.
*
+ * [matcher] can be a value in which case it will be wrapped in an
+ * [equals] matcher.
+ *
* If the assertion fails, then the default behavior is to throw an
* [ExpectException], but this behavior can be changed by calling
* [configureExpectHandler] and providing an alternative handler that
* implements the [IFailureHandler] interface.
*
- * [expect] allows an alternative call format, providing a Boolean
- * predicate as the first argument and an optional reason as a named
- * second argument. This supports brevity at the expense of detailed
- * error messages. For example, these are equivalent, but the first
- * form will give a detailed error message, while the second form will
- * just give a generic assertion failed message:
- *
- * expect(foo, isLessThanOrEqual(bar));
- * expect(foo <= bar);
- *
- * A better way of doing the second form is:
- *
- * expect(foo <= bar, reason: "foo not less than or equal to bar");
- *
* expect() is a 3rd generation assertion mechanism, drawing
* inspiration from [Hamcrest] and Ladislav Thon's [dart-matchers]
* library.
@@ -36,43 +27,39 @@
* [Hamcrest] http://http://code.google.com/p/hamcrest/
* [dart-matchers] https://github.com/Ladicek/dart-matchers
*/
-void expect(actual, [matcher = null, String reason = null]) {
- if (matcher == null) {
- // Treat this as an assert(predicate, [reason]).
- if (!actual) {
- if (reason == null) {
- reason = 'Assertion failed';
- }
- // Make sure we have a failure handler configured.
- configureExpectHandler(_assertFailureHandler);
- _assertFailureHandler.fail(reason);
+void expect(actual, [matcher = isTrue, String reason = null]) {
+ matcher = wrapMatcher(matcher);
+ var doesMatch;
+ try {
+ doesMatch = matcher.matches(actual);
+ } catch (var e, var trace) {
+ doesMatch = false;
+ if (reason == null) {
+ reason = '${(e is String) ? e : e.toString()} at $trace';
}
- } else {
- // Treat this as an expect(value, [matcher], [reason]).
- matcher = wrapMatcher(matcher);
- var doesMatch;
- try {
- doesMatch = matcher.matches(actual);
- } catch (var e, var trace) {
- doesMatch = false;
- if (reason == null) {
- reason = '${(e is String) ? e : e.toString()} at $trace';
- }
- }
- if (!doesMatch) {
- // Make sure we have a failure handler configured.
- configureExpectHandler(_assertFailureHandler);
- _assertFailureHandler.failMatch(actual, matcher, reason);
- }
}
+ if (!doesMatch) {
+ // Make sure we have a failure handler configured.
+ configureExpectHandler(_assertFailureHandler);
+ _assertFailureHandler.failMatch(actual, matcher, reason);
+ }
}
/**
* Takes an argument and returns an equivalent matcher.
- * If the argument is already a matcher this does nothing, else it
- * generates an equals matcher for the argument.
+ * If the argument is already a matcher this does nothing,
+ * else if the argument is a function, it generates a predicate
+ * function matcher, else it generates an equals matcher.
*/
-Matcher wrapMatcher(x) => ((x is Matcher) ? x : equals(x));
+Matcher wrapMatcher(x) {
+ if (x is Matcher) {
+ return x;
+ } else if (x is Function) {
+ return predicate(x);
+ } else {
+ return equals(x);
+ }
+}
// The handler for failed asserts.
FailureHandler _assertFailureHandler = null;

Powered by Google App Engine
This is Rietveld 408576698