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

Unified Diff: pkg/analyzer/test/src/task/inputs_test.dart

Issue 1147853002: Properly handle circular references among constants in the task model. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 7 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
Index: pkg/analyzer/test/src/task/inputs_test.dart
diff --git a/pkg/analyzer/test/src/task/inputs_test.dart b/pkg/analyzer/test/src/task/inputs_test.dart
index f894d11aee361877c84e842d1db9de81569c89c6..8a11406643bdaceea8b584cbad965f8bd590c093 100644
--- a/pkg/analyzer/test/src/task/inputs_test.dart
+++ b/pkg/analyzer/test/src/task/inputs_test.dart
@@ -95,6 +95,14 @@ class ListToListTaskInputBuilderTest extends EngineTestCase {
expect(builder.currentResult, null);
}
+ test_currentResult_afterCurrentValueNotAvailable() {
+ ListToListTaskInputBuilder builder = new ListToListTaskInputBuilder(input);
+ builder.moveNext();
+ builder.currentValueNotAvailable();
+ builder.moveNext();
+ expect(builder.currentResult, null);
+ }
+
test_currentResult_afterOneMoveNext() {
ListToListTaskInputBuilder builder = new ListToListTaskInputBuilder(input);
builder.moveNext();
@@ -114,6 +122,14 @@ class ListToListTaskInputBuilderTest extends EngineTestCase {
expect(builder.currentTarget, null);
}
+ test_currentTarget_afterCurrentValueNotAvailable() {
+ ListToListTaskInputBuilder builder = new ListToListTaskInputBuilder(input);
+ builder.moveNext();
+ builder.currentValueNotAvailable();
+ builder.moveNext();
+ expect(builder.currentTarget, null);
+ }
+
test_currentTarget_afterOneMoveNext() {
ListToListTaskInputBuilder builder = new ListToListTaskInputBuilder(input);
builder.moveNext();
@@ -138,6 +154,19 @@ class ListToListTaskInputBuilderTest extends EngineTestCase {
}, throwsStateError);
}
+ test_currentValueNotAvailable_afterOneMoveNext() {
+ ListToListTaskInputBuilder builder = new ListToListTaskInputBuilder(input);
+ builder.moveNext();
+ builder.currentValueNotAvailable();
+ }
+
+ test_currentValueNotAvailable_beforeMoveNext() {
+ ListToListTaskInputBuilder builder = new ListToListTaskInputBuilder(input);
+ expect(() {
+ builder.currentValueNotAvailable();
+ }, throwsStateError);
+ }
+
test_inputValue_afterComplete() {
AnalysisTarget target2 = new TestSource();
AnalysisTarget target3 = new TestSource();
@@ -159,6 +188,36 @@ class ListToListTaskInputBuilderTest extends EngineTestCase {
expect(list[1], value3);
}
+ test_inputValue_afterFirstValueNotAvailable() {
+ AnalysisTarget target2 = new TestSource();
+ AnalysisTarget target3 = new TestSource();
+ String value3 = 'value3';
+ ListToListTaskInputBuilder builder = new ListToListTaskInputBuilder(input);
+ builder.moveNext(); // Advance to requesting the list
+ builder.currentValue = [target2, target3];
+ builder.moveNext(); // Advance to requesting result2 for target2
+ builder.currentValueNotAvailable();
+ builder.moveNext(); // Advance to requesting result2 for target3
+ builder.currentValue = value3;
+ builder.moveNext(); // Advance to the end
+ var inputValue = builder.inputValue;
+ expect(inputValue, new isInstanceOf<List>());
+ List list = inputValue;
+ expect(list.length, 1);
scheglov 2015/05/19 19:25:41 expect(list, hasLength(1));
+ expect(list[0], value3);
scheglov 2015/05/19 19:25:42 or maybe even just this statement only: expect(lis
Paul Berry 2015/05/19 19:36:11 Done.
+ }
+
+ test_inputValue_afterListNotAvailable() {
+ ListToListTaskInputBuilder builder = new ListToListTaskInputBuilder(input);
+ builder.moveNext(); // Advance to requesting the list
+ builder.currentValueNotAvailable();
+ builder.moveNext(); // Advance to the end
+ var inputValue = builder.inputValue;
+ expect(inputValue, new isInstanceOf<List>());
+ List list = inputValue;
+ expect(list, isEmpty);
+ }
+
test_inputValue_afterOneMoveNext() {
ListToListTaskInputBuilder builder = new ListToListTaskInputBuilder(input);
builder.moveNext();
@@ -232,6 +291,14 @@ class ListToMapTaskInputBuilderTest extends EngineTestCase {
expect(builder.currentResult, null);
}
+ test_currentResult_afterCurrentValueNotAvailable() {
+ ListToMapTaskInputBuilder builder = new ListToMapTaskInputBuilder(input);
+ builder.moveNext();
+ builder.currentValueNotAvailable();
+ builder.moveNext();
+ expect(builder.currentResult, null);
+ }
+
test_currentResult_afterOneMoveNext() {
ListToMapTaskInputBuilder builder = new ListToMapTaskInputBuilder(input);
builder.moveNext();
@@ -251,6 +318,14 @@ class ListToMapTaskInputBuilderTest extends EngineTestCase {
expect(builder.currentTarget, null);
}
+ test_currentTarget_afterCurrentValueNotAvailable() {
+ ListToMapTaskInputBuilder builder = new ListToMapTaskInputBuilder(input);
+ builder.moveNext();
+ builder.currentValueNotAvailable();
+ builder.moveNext();
+ expect(builder.currentTarget, null);
+ }
+
test_currentTarget_afterOneMoveNext() {
ListToMapTaskInputBuilder builder = new ListToMapTaskInputBuilder(input);
builder.moveNext();
@@ -275,6 +350,19 @@ class ListToMapTaskInputBuilderTest extends EngineTestCase {
}, throwsStateError);
}
+ test_currentValueNotAvailable_afterOneMoveNext() {
+ ListToMapTaskInputBuilder builder = new ListToMapTaskInputBuilder(input);
+ builder.moveNext();
+ builder.currentValueNotAvailable();
+ }
+
+ test_currentValueNotAvailable_beforeMoveNext() {
+ ListToMapTaskInputBuilder builder = new ListToMapTaskInputBuilder(input);
+ expect(() {
+ builder.currentValueNotAvailable();
+ }, throwsStateError);
+ }
+
test_inputValue_afterComplete() {
AnalysisTarget target2 = new TestSource('target2');
AnalysisTarget target3 = new TestSource('target3');
@@ -295,6 +383,34 @@ class ListToMapTaskInputBuilderTest extends EngineTestCase {
expect(inputValue, containsPair(target3, value3));
}
+ test_inputValue_afterFirstValueNotAvailable() {
+ AnalysisTarget target2 = new TestSource('target2');
+ AnalysisTarget target3 = new TestSource('target3');
+ String value3 = 'value3';
+ ListToMapTaskInputBuilder builder = new ListToMapTaskInputBuilder(input);
+ builder.moveNext(); // Advance to requesting the list
+ builder.currentValue = [target2, target3];
+ builder.moveNext(); // Advance to requesting result2 for target2
+ builder.currentValueNotAvailable();
+ builder.moveNext(); // Advance to requesting result2 for target3
+ builder.currentValue = value3;
+ builder.moveNext(); // Advance to the end
+ var inputValue = builder.inputValue;
+ expect(inputValue, new isInstanceOf<Map>());
+ expect(inputValue.length, 1);
scheglov 2015/05/19 19:25:41 expect(inputValue, hasLength(1));
Paul Berry 2015/05/19 19:36:11 Done.
+ expect(inputValue, containsPair(target3, value3));
+ }
+
+ test_inputValue_afterListNotAvailable() {
+ ListToMapTaskInputBuilder builder = new ListToMapTaskInputBuilder(input);
+ builder.moveNext(); // Advance to requesting the list
+ builder.currentValueNotAvailable();
+ builder.moveNext(); // Advance to the end
+ var inputValue = builder.inputValue;
+ expect(inputValue, new isInstanceOf<Map>());
+ expect(inputValue, isEmpty);
+ }
+
test_inputValue_afterOneMoveNext() {
ListToMapTaskInputBuilder builder = new ListToMapTaskInputBuilder(input);
builder.moveNext();
@@ -365,6 +481,14 @@ class SimpleTaskInputBuilderTest extends EngineTestCase {
expect(builder.currentResult, null);
}
+ test_currentResult_afterCurrentValueNotAvailable() {
+ SimpleTaskInputBuilder builder = new SimpleTaskInputBuilder(input);
+ builder.moveNext();
+ builder.currentValueNotAvailable();
+ builder.moveNext();
+ expect(builder.currentResult, null);
+ }
+
test_currentResult_afterOneMoveNext() {
SimpleTaskInputBuilder builder = new SimpleTaskInputBuilder(input);
builder.moveNext();
@@ -384,6 +508,14 @@ class SimpleTaskInputBuilderTest extends EngineTestCase {
expect(builder.currentTarget, null);
}
+ test_currentTarget_afterCurrentValueNotAvailable() {
+ SimpleTaskInputBuilder builder = new SimpleTaskInputBuilder(input);
+ builder.moveNext();
+ builder.currentValueNotAvailable();
+ builder.moveNext();
+ expect(builder.currentTarget, null);
+ }
+
test_currentTarget_afterOneMoveNext() {
SimpleTaskInputBuilder builder = new SimpleTaskInputBuilder(input);
builder.moveNext();
@@ -408,6 +540,19 @@ class SimpleTaskInputBuilderTest extends EngineTestCase {
}, throwsStateError);
}
+ test_currentValueNotAvailable_afterOneMoveNext() {
+ SimpleTaskInputBuilder builder = new SimpleTaskInputBuilder(input);
+ builder.moveNext();
+ builder.currentValueNotAvailable();
+ }
+
+ test_currentValueNotAvailable_beforeMoveNext() {
+ SimpleTaskInputBuilder builder = new SimpleTaskInputBuilder(input);
+ expect(() {
+ builder.currentValueNotAvailable();
+ }, throwsStateError);
+ }
+
test_inputValue_afterComplete() {
SimpleTaskInputBuilder builder = new SimpleTaskInputBuilder(input);
builder.moveNext();
@@ -417,6 +562,15 @@ class SimpleTaskInputBuilderTest extends EngineTestCase {
expect(builder.inputValue, value);
}
+ test_inputValue_afterCurrentValueNotAvailable() {
+ SimpleTaskInputBuilder builder = new SimpleTaskInputBuilder(input);
+ builder.moveNext();
+ String value = 'value';
+ builder.currentValueNotAvailable();
+ builder.moveNext();
+ expect(builder.inputValue, isNull);
+ }
+
test_inputValue_afterOneMoveNext() {
SimpleTaskInputBuilder builder = new SimpleTaskInputBuilder(input);
builder.moveNext();
@@ -490,6 +644,16 @@ class TopLevelTaskInputBuilderTest extends EngineTestCase {
expect(builder.currentResult, null);
}
+ test_currentResult_afterCurrentValueNotAvailable() {
+ Map<String, TaskInput> inputDescriptors = {'one': input1};
+ TopLevelTaskInputBuilder builder =
+ new TopLevelTaskInputBuilder(inputDescriptors);
+ builder.moveNext();
+ builder.currentValueNotAvailable();
+ builder.moveNext();
+ expect(builder.currentResult, null);
+ }
+
test_currentResult_afterOneMoveNext() {
Map<String, TaskInput> inputDescriptors = {'one': input1, 'two': input2};
TopLevelTaskInputBuilder builder =
@@ -515,6 +679,16 @@ class TopLevelTaskInputBuilderTest extends EngineTestCase {
expect(builder.currentTarget, null);
}
+ test_currentTarget_afterCurrentValueNotAvailable() {
+ Map<String, TaskInput> inputDescriptors = {'one': input1};
+ TopLevelTaskInputBuilder builder =
+ new TopLevelTaskInputBuilder(inputDescriptors);
+ builder.moveNext();
+ builder.currentValueNotAvailable();
+ builder.moveNext();
+ expect(builder.currentTarget, null);
+ }
+
test_currentTarget_afterOneMoveNext() {
Map<String, TaskInput> inputDescriptors = {'one': input1};
TopLevelTaskInputBuilder builder =
@@ -547,6 +721,23 @@ class TopLevelTaskInputBuilderTest extends EngineTestCase {
}, throwsStateError);
}
+ test_currentValueNotAvailable_afterOneMoveNext() {
+ Map<String, TaskInput> inputDescriptors = {'one': input1};
+ TopLevelTaskInputBuilder builder =
+ new TopLevelTaskInputBuilder(inputDescriptors);
+ builder.moveNext();
+ builder.currentValueNotAvailable();
+ }
+
+ test_currentValueNotAvailable_beforeMoveNext() {
+ Map<String, TaskInput> inputDescriptors = {'one': input1};
+ TopLevelTaskInputBuilder builder =
+ new TopLevelTaskInputBuilder(inputDescriptors);
+ expect(() {
+ builder.currentValueNotAvailable();
+ }, throwsStateError);
+ }
+
test_inputValue_afterComplete() {
String key1 = 'one';
String key2 = 'two';
@@ -576,6 +767,25 @@ class TopLevelTaskInputBuilderTest extends EngineTestCase {
expect(() => builder.inputValue, throwsStateError);
}
+ test_inputValue_afterOneValueNotAvailable() {
+ String key1 = 'one';
+ String key2 = 'two';
+ String value2 = 'value2';
+ Map<String, TaskInput> inputDescriptors = {key1: input1, key2: input2};
+ TopLevelTaskInputBuilder builder =
+ new TopLevelTaskInputBuilder(inputDescriptors);
+ builder.moveNext(); // Advance to requesting result1 for target
+ builder.currentValueNotAvailable();
+ builder.moveNext(); // Advance to requesting result2 for target
+ builder.currentValue = value2;
+ builder.moveNext(); // Advance to the end
+ var inputValue = builder.inputValue;
+ expect(inputValue, new isInstanceOf<Map>());
+ Map inputs = inputValue;
+ expect(inputs.length, 1);
scheglov 2015/05/19 19:25:41 hasLength(1)
Paul Berry 2015/05/19 19:36:11 Done.
+ expect(inputs, containsPair(key2, value2));
+ }
+
test_inputValue_beforeMoveNext() {
Map<String, TaskInput> inputDescriptors = {};
TopLevelTaskInputBuilder builder =

Powered by Google App Engine
This is Rietveld 408576698