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

Unified Diff: lib/src/matcher/interfaces.dart

Issue 1135653004: pkg/(unit)test: include a copy of old matcher (Closed) Base URL: https://github.com/dart-lang/test.git@stable
Patch Set: another nit Created 5 years, 7 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
« no previous file with comments | « lib/src/matcher/future_matchers.dart ('k') | lib/src/matcher/iterable_matchers.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/matcher/interfaces.dart
diff --git a/lib/src/matcher/interfaces.dart b/lib/src/matcher/interfaces.dart
new file mode 100644
index 0000000000000000000000000000000000000000..3e68d2dcff8dad2ed3d5467a02c78b752170bf54
--- /dev/null
+++ b/lib/src/matcher/interfaces.dart
@@ -0,0 +1,60 @@
+// 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.
+
+library unittest.matcher.interfaces;
+
+// To decouple the reporting of errors, and allow for extensibility of
+// matchers, we make use of some interfaces.
+
+/// Matchers build up their error messages by appending to
+/// Description objects. This interface is implemented by
+/// StringDescription. This interface is unlikely to need
+/// other implementations, but could be useful to replace in
+/// some cases - e.g. language conversion.
+abstract class Description {
+ int get length;
+
+ /// Change the value of the description.
+ Description replace(String text);
+
+ /// This is used to add arbitrary text to the description.
+ Description add(String text);
+
+ /// This is used to add a meaningful description of a value.
+ Description addDescriptionOf(value);
+
+ /// This is used to add a description of an [Iterable] [list],
+ /// with appropriate [start] and [end] markers and inter-element [separator].
+ Description addAll(String start, String separator, String end, Iterable list);
+}
+
+/// [expect] Matchers must implement/extend the Matcher class.
+/// The base Matcher class 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 ([matches] and [describe])
+/// must always be provided as they are highly matcher-specific.
+abstract class Matcher {
+ const Matcher();
+
+ /// This does the matching of the actual vs expected values.
+ /// [item] is the actual value. [matchState] can be supplied
+ /// and may be used to add details about the mismatch that are too
+ /// costly to determine in [describeMismatch].
+ bool matches(item, Map matchState);
+
+ /// This builds a textual description of the matcher.
+ Description describe(Description description);
+
+ /// This builds a textual description of a specific mismatch. [item]
+ /// is the value that was tested by [matches]; [matchState] is
+ /// the [Map] that was passed to and supplemented by [matches]
+ /// with additional information about the mismatch, and [mismatchDescription]
+ /// is the [Description] that is being built to decribe the mismatch.
+ /// A few matchers make use of the [verbose] flag to provide detailed
+ /// information that is not typically included but can be of help in
+ /// diagnosing failures, such as stack traces.
+ Description describeMismatch(
+ item, Description mismatchDescription, Map matchState, bool verbose) =>
+ mismatchDescription;
+}
« no previous file with comments | « lib/src/matcher/future_matchers.dart ('k') | lib/src/matcher/iterable_matchers.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698