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

Unified Diff: pkg/unittest/lib/unittest.dart

Issue 13251003: pkg/unittest: readonly view of testCase collection (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: nit Created 7 years, 9 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 | « pkg/unittest/lib/src/config.dart ('k') | pkg/unittest/test/unittest_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/unittest/lib/unittest.dart
diff --git a/pkg/unittest/lib/unittest.dart b/pkg/unittest/lib/unittest.dart
index 329e20dc68b61be922a967f566b95ca5635b83e1..a0f5ffc3e41f8ee66f41e12c881518197ec52713 100644
--- a/pkg/unittest/lib/unittest.dart
+++ b/pkg/unittest/lib/unittest.dart
@@ -155,6 +155,7 @@ library unittest;
import 'dart:async';
import 'dart:isolate';
+import 'dart:collection';
import 'matcher.dart';
export 'matcher.dart';
@@ -196,10 +197,10 @@ String _currentGroup = '';
String groupSep = ' ';
/** Tests executed in this suite. */
-List<TestCase> _tests;
+final List<TestCase> _testCases = new List<TestCase>();
/** Get the list of tests. */
-List<TestCase> get testCases => _tests;
+final List<TestCase> testCases = new UnmodifiableListView(_testCases);
/** Setup function called before each test in a group */
Function _testSetup;
@@ -207,13 +208,12 @@ Function _testSetup;
/** Teardown function called after each test in a group */
Function _testTeardown;
-/** Current test being executed. */
-int _currentTest = 0;
-TestCase _currentTestCase;
+int _currentTestCaseIndex = 0;
+/** [TestCase] currently being executed. */
TestCase get currentTestCase =>
- (_currentTest >= 0 && _currentTest < _tests.length)
- ? _tests[_currentTest]
+ (_currentTestCaseIndex >= 0 && _currentTestCaseIndex < _testCases.length)
+ ? _testCases[_currentTestCaseIndex]
: null;
/** Whether the framework is in an initialized state. */
@@ -249,7 +249,8 @@ Map testState = {};
*/
void test(String spec, TestFunction body) {
ensureInitialized();
- _tests.add(new TestCase._internal(_tests.length + 1, _fullSpec(spec), body));
+ _testCases.add(new TestCase._internal(_testCases.length + 1, _fullSpec(spec),
+ body));
}
/**
@@ -271,8 +272,8 @@ void solo_test(String spec, TestFunction body) {
ensureInitialized();
- _soloTest = new TestCase._internal(_tests.length + 1, _fullSpec(spec), body);
- _tests.add(_soloTest);
+ _soloTest = new TestCase._internal(_testCases.length + 1, _fullSpec(spec), body);
+ _testCases.add(_soloTest);
}
/** Sentinel value for [_SpreadArgsHelper]. */
@@ -303,19 +304,19 @@ class _SpreadArgsHelper {
? minExpected
: maxExpected,
this.isDone = isDone,
- testNum = _currentTest,
+ testNum = _currentTestCaseIndex,
this.id = _makeCallbackId(id, callback) {
ensureInitialized();
- if (!(_currentTest >= 0 &&
- _currentTest < _tests.length &&
- _tests[_currentTest] != null)) {
+ if (!(_currentTestCaseIndex >= 0 &&
+ _currentTestCaseIndex < _testCases.length &&
+ _testCases[_currentTestCaseIndex] != null)) {
print("No valid test, did you forget to run your test inside a call "
"to test()?");
}
- assert(_currentTest >= 0 &&
- _currentTest < _tests.length &&
- _tests[_currentTest] != null);
- testCase = _tests[_currentTest];
+ assert(_currentTestCaseIndex >= 0 &&
+ _currentTestCaseIndex < _testCases.length &&
+ _testCases[_currentTestCaseIndex] != null);
+ testCase = _testCases[_currentTestCaseIndex];
if (isDone != null || minExpected > 0) {
testCase._callbackFunctionsOutstanding++;
complete = false;
@@ -634,7 +635,7 @@ void tearDown(Function teardownTest) {
/** Advance to the next test case. */
void _nextTestCase() {
_defer(() {
- _currentTest++;
+ _currentTestCaseIndex++;
_nextBatch();
});
}
@@ -644,8 +645,8 @@ void _nextTestCase() {
* error was caught outside of this library.
*/
void _reportTestError(String msg, String trace) {
- if (_currentTest < _tests.length) {
- final testCase = _tests[_currentTest];
+ if (_currentTestCaseIndex < _testCases.length) {
+ final testCase = _testCases[_currentTestCaseIndex];
testCase.error(msg, trace);
} else {
_uncaughtErrorMessage = "$msg: $trace";
@@ -686,12 +687,12 @@ void filterTests(testFilter) {
} else if (testFilter is Function) {
filterFunction = testFilter;
}
- _tests.retainWhere(filterFunction);
+ _testCases.retainWhere(filterFunction);
}
/** Runs all queued tests, one at a time. */
void runTests() {
- _currentTest = 0;
+ _currentTestCaseIndex = 0;
_currentGroup = '';
// If we are soloing a test, remove all the others.
@@ -713,7 +714,7 @@ void runTests() {
* The value returned by [tryBody] (if any) is returned by [guardAsync].
*/
guardAsync(Function tryBody) {
- return _guardAsync(tryBody, null, _currentTest);
+ return _guardAsync(tryBody, null, _currentTestCaseIndex);
}
_guardAsync(Function tryBody, Function finallyBody, int testNum) {
@@ -731,7 +732,7 @@ _guardAsync(Function tryBody, Function finallyBody, int testNum) {
* Registers that an exception was caught for the current test.
*/
void registerException(e, [trace]) {
- _registerException(_currentTest, e, trace);
+ _registerException(_currentTestCaseIndex, e, trace);
}
/**
@@ -740,10 +741,10 @@ void registerException(e, [trace]) {
void _registerException(testNum, e, [trace]) {
trace = trace == null ? '' : trace.toString();
String message = (e is TestFailure) ? e.message : 'Caught $e';
- if (_tests[testNum].result == null) {
- _tests[testNum].fail(message, trace);
+ if (_testCases[testNum].result == null) {
+ _testCases[testNum].fail(message, trace);
} else {
- _tests[testNum].error(message, trace);
+ _testCases[testNum].error(message, trace);
}
}
@@ -754,19 +755,19 @@ void _registerException(testNum, e, [trace]) {
*/
void _nextBatch() {
while (true) {
- if (_currentTest >= _tests.length) {
+ if (_currentTestCaseIndex >= _testCases.length) {
_completeTests();
break;
}
- final testCase = _tests[_currentTest];
- var f = _guardAsync(testCase._run, null, _currentTest);
+ final testCase = _testCases[_currentTestCaseIndex];
+ var f = _guardAsync(testCase._run, null, _currentTestCaseIndex);
if (f != null) {
f.whenComplete(() {
_nextTestCase(); // Schedule the next test.
});
break;
}
- _currentTest++;
+ _currentTestCaseIndex++;
}
}
@@ -777,14 +778,14 @@ void _completeTests() {
int failed = 0;
int errors = 0;
- for (TestCase t in _tests) {
+ for (TestCase t in _testCases) {
switch (t.result) {
case PASS: passed++; break;
case FAIL: failed++; break;
case ERROR: errors++; break;
}
}
- _config.onSummary(passed, failed, errors, _tests, _uncaughtErrorMessage);
+ _config.onSummary(passed, failed, errors, _testCases, _uncaughtErrorMessage);
_config.onDone(passed > 0 && failed == 0 && errors == 0 &&
_uncaughtErrorMessage == null);
_initialized = false;
@@ -806,7 +807,6 @@ void ensureInitialized() {
// Hook our async guard into the matcher library.
wrapAsync = (f, [id]) => expectAsync1(f, id: id);
- _tests = <TestCase>[];
_uncaughtErrorMessage = null;
if (_config == null) {
@@ -823,9 +823,9 @@ void ensureInitialized() {
/** Select a solo test by ID. */
void setSoloTest(int id) {
- for (var i = 0; i < _tests.length; i++) {
- if (_tests[i].id == id) {
- _soloTest = _tests[i];
+ for (var i = 0; i < _testCases.length; i++) {
+ if (_testCases[i].id == id) {
+ _soloTest = _testCases[i];
break;
}
}
@@ -834,12 +834,12 @@ void setSoloTest(int id) {
/** Enable/disable a test by ID. */
void _setTestEnabledState(int testId, bool state) {
// Try fast path first.
- if (_tests.length > testId && _tests[testId].id == testId) {
- _tests[testId].enabled = state;
+ if (_testCases.length > testId && _testCases[testId].id == testId) {
+ _testCases[testId].enabled = state;
} else {
- for (var i = 0; i < _tests.length; i++) {
- if (_tests[i].id == testId) {
- _tests[i].enabled = state;
+ for (var i = 0; i < _testCases.length; i++) {
+ if (_testCases[i].id == testId) {
+ _testCases[i].enabled = state;
break;
}
}
« no previous file with comments | « pkg/unittest/lib/src/config.dart ('k') | pkg/unittest/test/unittest_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698