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) |