Index: lib/unittest/interfaces.dart |
=================================================================== |
--- lib/unittest/interfaces.dart (revision 0) |
+++ lib/unittest/interfaces.dart (revision 0) |
@@ -0,0 +1,62 @@ |
+// Copyright (c) 2012, 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. |
+ |
+// To decouple the reporting of errors, and allow for extensibility of |
+// matchers, we make use of some interfaces. |
+ |
+/** |
+ * The IErrorFormatter interface is implemented by classes that |
+ * can be used to build up error reports upon expect() failures. |
Bob Nystrom
2012/05/30 23:23:51
Square brackets around [expect()], [StringDescript
|
+ * There is one built-in implementation (StringDescription) which |
+ * is used by the default failure handler. If the failure handler |
+ * is replaced it may be desirable to replace the StringDescription |
+ * error description formatter with another; this can be done |
+ * by implementing this interface. |
+ */ |
+interface IErrorFormatter { |
+ String format(actual, IMatcher matcher, String reason); |
Bob Nystrom
2012/05/30 23:23:51
Should this just be a function type? Why make it a
gram
2012/06/01 17:33:15
Done.
|
+} |
+ |
+/** |
+ * Matchers build up their error messages by appending to |
+ * IDescription objects. This interface is also implemented |
+ * by StringDescription. This interface is unlikely to need |
+ * other implementations, but could be useful to replace in |
+ * some cases - e.g. language conversion. |
+ */ |
+interface IDescription { |
+ IDescription append(text); |
Bob Nystrom
2012/05/30 23:23:51
"append" -> "add"
gram
2012/06/01 17:33:15
Done.
|
+ IDescription appendDescriptionOf(value); |
+ IDescription appendList(start, separator, end, list); |
Bob Nystrom
2012/05/30 23:23:51
Can these be typed?
gram
2012/06/01 17:33:15
Done.
|
+} |
+ |
+/** |
+ * Matchers must implement the IMatcher interface. There |
+ * are three methods: match, which does the matching; |
Bob Nystrom
2012/05/30 23:23:51
Instead of describing the methods here, just put c
gram
2012/06/01 17:33:15
Done.
|
+ * describe, which builds a description of the matcher, |
+ * and describeMismatch, which builds a description of |
+ * a specific mismatch. The base Matcher class that implements |
+ * this interface has a generic implementation of |
+ * describeMismatch so this does not need to be provided |
+ * unless a more clear description is required. The other |
+ * two methods must always be provided as they are highly |
+ * matcher-specific. |
+ */ |
+interface IMatcher { |
+ bool matches(item); |
+ IDescription describe(IDescription description); |
+ IDescription describeMismatch(item, IDescription mismatchDescription); |
+} |
+ |
+/** |
+ * Failed matches are reported using a default IFailureHandler. |
+ * The default implementation simply throws ExpectExceptions; |
+ * this can be replaced by some other implementation of |
+ * IFailureHandler by calling configureExpectHandler. |
+ */ |
+interface IFailureHandler { |
+ void fail(String reason); |
+ void failMatch(actual, IMatcher matcher, String reason); |
+} |
+ |