Chromium Code Reviews| Index: lib/src/backend/group.dart |
| diff --git a/lib/src/backend/group.dart b/lib/src/backend/group.dart |
| index 75eae2d807c77e3a7c414b997fc3a0e22423187c..68e04dc8f4c0fbdaa9b5ea909168fe856114592b 100644 |
| --- a/lib/src/backend/group.dart |
| +++ b/lib/src/backend/group.dart |
| @@ -8,42 +8,47 @@ import 'dart:collection'; |
| import 'metadata.dart'; |
| import 'operating_system.dart'; |
| -import 'suite_entry.dart'; |
| +import 'group_entry.dart'; |
| import 'test.dart'; |
| import 'test_platform.dart'; |
| /// A group contains one or more tests and subgroups. |
| /// |
| /// It includes metadata that applies to all contained tests. |
| -class Group implements SuiteEntry { |
| +class Group implements GroupEntry { |
| final String name; |
| final Metadata metadata; |
| /// The children of this group. |
| - final List<SuiteEntry> entries; |
| + final List<GroupEntry> entries; |
| - Group(this.name, this.metadata, Iterable<SuiteEntry> entries) |
| - : entries = new UnmodifiableListView<SuiteEntry>(entries.toList()); |
| + /// Returns a new root-level group. |
| + Group.root(Iterable<GroupEntry> entries, {Metadata metadata}) |
| + : this(null, entries, metadata: metadata); |
| + |
| + Group(this.name, Iterable<GroupEntry> entries, {Metadata metadata}) |
| + : entries = new UnmodifiableListView<GroupEntry>(entries.toList()), |
|
kevmoo
2015/10/07 00:59:51
using new List.unmodifiable(..) instead?
Copies e
nweiz
2015/10/07 19:22:18
Done.
|
| + metadata = metadata == null ? new Metadata() : metadata; |
| Group forPlatform(TestPlatform platform, {OperatingSystem os}) { |
| if (!metadata.testOn.evaluate(platform, os: os)) return null; |
| var newMetadata = metadata.forPlatform(platform, os: os); |
| var filtered = _map((entry) => entry.forPlatform(platform, os: os)); |
| if (filtered.isEmpty) return null; |
| - return new Group(name, newMetadata, filtered); |
| + return new Group(name, filtered, metadata: newMetadata); |
| } |
| Group filter(bool callback(Test test)) { |
| var filtered = _map((entry) => entry.filter(callback)); |
| if (filtered.isEmpty) return null; |
| - return new Group(name, metadata, filtered); |
| + return new Group(name, filtered, metadata: metadata); |
| } |
| /// Returns the entries of this group mapped using [callback]. |
| /// |
| /// Any `null` values returned by [callback] will be removed. |
| - List<SuiteEntry> _map(SuiteEntry callback(SuiteEntry entry)) { |
| + List<GroupEntry> _map(GroupEntry callback(GroupEntry entry)) { |
| return entries |
| .map((entry) => callback(entry)) |
| .where((entry) => entry != null) |