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

Side by Side Diff: pkg/testing/lib/src/expectation.dart

Issue 2913153002: Add RuntimeError to default expectations and handle expectation groups correctly. (Closed)
Patch Set: Created 3 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 unified diff | Download patch
« no previous file with comments | « pkg/testing/lib/src/chain.dart ('k') | pkg/testing/lib/src/stdio_process.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE.md file. 3 // BSD-style license that can be found in the LICENSE.md file.
4 4
5 library testing.expectation; 5 library testing.expectation;
6 6
7 /// An expectation represents the expected outcome of a test (or if it should 7 /// An expectation represents the expected outcome of a test (or if it should
8 /// be skipped). 8 /// be skipped).
9 /// 9 ///
10 /// An expectation belongs to a group, for example, [ExpectationGroup.Fail]. 10 /// An expectation belongs to a group, for example, [ExpectationGroup.Fail].
(...skipping 16 matching lines...) Expand all
27 27
28 static const Expectation Skip = 28 static const Expectation Skip =
29 const Expectation("Skip", ExpectationGroup.Skip); 29 const Expectation("Skip", ExpectationGroup.Skip);
30 30
31 final String name; 31 final String name;
32 32
33 final ExpectationGroup group; 33 final ExpectationGroup group;
34 34
35 const Expectation(this.name, this.group); 35 const Expectation(this.name, this.group);
36 36
37 /// Returns the canonical expectation representing [group]. That is, one of
38 /// the above expectations (except for `Meta` which returns `this`).
39 Expectation get canonical => fromGroup(group) ?? this;
40
37 String toString() => name; 41 String toString() => name;
42
43 static Expectation fromGroup(ExpectationGroup group) {
44 switch (group) {
45 case ExpectationGroup.Crash:
46 return Expectation.Crash;
47 case ExpectationGroup.Fail:
48 return Expectation.Fail;
49 case ExpectationGroup.Meta:
50 return null;
51 case ExpectationGroup.Pass:
52 return Expectation.Pass;
53 case ExpectationGroup.Skip:
54 return Expectation.Skip;
55 case ExpectationGroup.Timeout:
56 return Expectation.Timeout;
57 }
58 throw "Unhandled group: '$group'.";
59 }
38 } 60 }
39 61
40 class ExpectationSet { 62 class ExpectationSet {
41 static const ExpectationSet Default = 63 static const ExpectationSet Default =
42 const ExpectationSet(const <String, Expectation>{ 64 const ExpectationSet(const <String, Expectation>{
43 "pass": Expectation.Pass, 65 "pass": Expectation.Pass,
44 "crash": Expectation.Crash, 66 "crash": Expectation.Crash,
45 "timeout": Expectation.Timeout, 67 "timeout": Expectation.Timeout,
46 "fail": Expectation.Fail, 68 "fail": Expectation.Fail,
47 "skip": Expectation.Skip, 69 "skip": Expectation.Skip,
48 "missingcompiletimeerror": 70 "missingcompiletimeerror":
49 const Expectation("MissingCompileTimeError", ExpectationGroup.Fail), 71 const Expectation("MissingCompileTimeError", ExpectationGroup.Fail),
50 "missingruntimeerror": 72 "missingruntimeerror":
51 const Expectation("MissingRuntimeError", ExpectationGroup.Fail), 73 const Expectation("MissingRuntimeError", ExpectationGroup.Fail),
74 "runtimeerror": const Expectation("RuntimeError", ExpectationGroup.Fail),
52 }); 75 });
53 76
54 final Map<String, Expectation> internalMap; 77 final Map<String, Expectation> internalMap;
55 78
56 const ExpectationSet(this.internalMap); 79 const ExpectationSet(this.internalMap);
57 80
58 operator [](String name) { 81 operator [](String name) {
59 return internalMap[name.toLowerCase()] ?? 82 return internalMap[name.toLowerCase()] ??
60 (throw "No expectation named: '$name'."); 83 (throw "No expectation named: '$name'.");
61 } 84 }
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 case "Pass": 140 case "Pass":
118 return ExpectationGroup.Pass; 141 return ExpectationGroup.Pass;
119 case "Skip": 142 case "Skip":
120 return ExpectationGroup.Skip; 143 return ExpectationGroup.Skip;
121 case "Timeout": 144 case "Timeout":
122 return ExpectationGroup.Timeout; 145 return ExpectationGroup.Timeout;
123 default: 146 default:
124 throw "Unrecognized group: '$name'."; 147 throw "Unrecognized group: '$name'.";
125 } 148 }
126 } 149 }
OLDNEW
« no previous file with comments | « pkg/testing/lib/src/chain.dart ('k') | pkg/testing/lib/src/stdio_process.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698