| Index: lib/src/backend/group.dart
|
| diff --git a/lib/src/backend/group.dart b/lib/src/backend/group.dart
|
| index 75eae2d807c77e3a7c414b997fc3a0e22423187c..bcc7e7785bf3f9cbf04aeca65265f320482a2b14 100644
|
| --- a/lib/src/backend/group.dart
|
| +++ b/lib/src/backend/group.dart
|
| @@ -4,46 +4,49 @@
|
|
|
| library test.backend.group;
|
|
|
| -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;
|
| +
|
| + /// Returns a new root-level group.
|
| + Group.root(Iterable<GroupEntry> entries, {Metadata metadata})
|
| + : this(null, entries, metadata: metadata);
|
|
|
| - Group(this.name, this.metadata, Iterable<SuiteEntry> entries)
|
| - : entries = new UnmodifiableListView<SuiteEntry>(entries.toList());
|
| + Group(this.name, Iterable<GroupEntry> entries, {Metadata metadata})
|
| + : entries = new List<GroupEntry>.unmodifiable(entries),
|
| + 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)
|
|
|