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

Side by Side Diff: pkg/analyzer/test/src/task/driver_test.dart

Issue 990773002: Test for computing task inputs before performing task itself. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | pkg/analyzer/test/src/task/test_support.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library test.src.task.driver_test; 5 library test.src.task.driver_test;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:collection'; 8 import 'dart:collection';
9 9
10 import 'package:analyzer/src/cancelable_future.dart'; 10 import 'package:analyzer/src/cancelable_future.dart';
11 import 'package:analyzer/src/context/cache.dart'; 11 import 'package:analyzer/src/context/cache.dart';
12 import 'package:analyzer/src/generated/ast.dart'; 12 import 'package:analyzer/src/generated/ast.dart';
13 import 'package:analyzer/src/generated/constant.dart'; 13 import 'package:analyzer/src/generated/constant.dart';
14 import 'package:analyzer/src/generated/element.dart'; 14 import 'package:analyzer/src/generated/element.dart';
15 import 'package:analyzer/src/generated/engine.dart' hide AnalysisTask; 15 import 'package:analyzer/src/generated/engine.dart' hide AnalysisTask;
16 import 'package:analyzer/src/generated/error.dart'; 16 import 'package:analyzer/src/generated/error.dart';
17 import 'package:analyzer/src/generated/html.dart'; 17 import 'package:analyzer/src/generated/html.dart';
18 import 'package:analyzer/src/generated/java_engine.dart'; 18 import 'package:analyzer/src/generated/java_engine.dart';
19 import 'package:analyzer/src/generated/resolver.dart'; 19 import 'package:analyzer/src/generated/resolver.dart';
20 import 'package:analyzer/src/generated/source.dart'; 20 import 'package:analyzer/src/generated/source.dart';
21 import 'package:analyzer/src/task/driver.dart'; 21 import 'package:analyzer/src/task/driver.dart';
22 import 'package:analyzer/src/task/inputs.dart';
22 import 'package:analyzer/src/task/manager.dart'; 23 import 'package:analyzer/src/task/manager.dart';
23 import 'package:analyzer/task/model.dart'; 24 import 'package:analyzer/task/model.dart';
24 import 'package:unittest/unittest.dart'; 25 import 'package:unittest/unittest.dart';
25 26
26 import '../../generated/resolver_test.dart'; 27 import '../../generated/resolver_test.dart';
27 import '../../generated/test_support.dart'; 28 import '../../generated/test_support.dart';
28 import '../../reflective_tests.dart'; 29 import '../../reflective_tests.dart';
29 import 'test_support.dart'; 30 import 'test_support.dart';
30 31
31 main() { 32 main() {
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 task = new TestAnalysisTask(context, target, descriptor: descriptor); 217 task = new TestAnalysisTask(context, target, descriptor: descriptor);
217 manager.addTaskDescriptor(descriptor); 218 manager.addTaskDescriptor(descriptor);
218 manager.addGeneralResult(result); 219 manager.addGeneralResult(result);
219 context.priorityTargets.add(target); 220 context.priorityTargets.add(target);
220 221
221 expect(driver.performAnalysisTask(), true); 222 expect(driver.performAnalysisTask(), true);
222 expect(driver.performAnalysisTask(), true); 223 expect(driver.performAnalysisTask(), true);
223 expect(driver.performAnalysisTask(), false); 224 expect(driver.performAnalysisTask(), false);
224 } 225 }
225 226
227 test_performAnalysisTask_inputsFirst() {
228 AnalysisTarget target = new TestSource();
229 ResultDescriptor resultA = new ResultDescriptor('resultA', -1);
230 ResultDescriptor resultB = new ResultDescriptor('resultB', -2);
231 // configure tasks
232 TestAnalysisTask task1;
233 TestAnalysisTask task2;
234 TaskDescriptor descriptor1 = new TaskDescriptor(
235 'task1', (context, target) => task1, (target) => {}, [resultA]);
236 TaskDescriptor descriptor2 = new TaskDescriptor('task2',
237 (context, target) => task2,
238 (target) => {'inputA': new SimpleTaskInput<int>(target, resultA)}, [
239 resultB
240 ]);
241 task1 = new TestAnalysisTask(context, target,
242 descriptor: descriptor1, results: [resultA], value: 10);
243 task2 = new TestAnalysisTask(context, target,
244 descriptor: descriptor2, value: 20);
245 manager.addTaskDescriptor(descriptor1);
246 manager.addTaskDescriptor(descriptor2);
247 context.explicitTargets.add(target);
248 manager.addGeneralResult(resultB);
249 // prepare work order
250 expect(driver.performAnalysisTask(), true);
251 expect(context.getCacheEntry(target).getValue(resultA), -1);
252 expect(context.getCacheEntry(target).getValue(resultB), -2);
253 // compute resultA
254 expect(driver.performAnalysisTask(), true);
255 expect(context.getCacheEntry(target).getValue(resultA), 10);
256 expect(context.getCacheEntry(target).getValue(resultB), -2);
257 // compute resultB
258 expect(driver.performAnalysisTask(), true);
259 expect(context.getCacheEntry(target).getValue(resultA), 10);
260 expect(context.getCacheEntry(target).getValue(resultB), 20);
261 // done
262 expect(driver.performAnalysisTask(), false);
263 }
264
226 test_performWorkItem_exceptionInTask() { 265 test_performWorkItem_exceptionInTask() {
227 AnalysisTarget target = new TestSource(); 266 AnalysisTarget target = new TestSource();
228 ResultDescriptor result = new ResultDescriptor('result', null); 267 ResultDescriptor result = new ResultDescriptor('result', null);
229 CaughtException exception = 268 CaughtException exception =
230 new CaughtException(new AnalysisException(), null); 269 new CaughtException(new AnalysisException(), null);
231 TestAnalysisTask task; 270 TestAnalysisTask task;
232 TaskDescriptor descriptor = new TaskDescriptor( 271 TaskDescriptor descriptor = new TaskDescriptor(
233 'task', (context, target) => task, (target) => {}, [result]); 272 'task', (context, target) => task, (target) => {}, [result]);
234 task = new TestAnalysisTask(context, target, 273 task = new TestAnalysisTask(context, target,
235 descriptor: descriptor, exception: exception); 274 descriptor: descriptor, exception: exception);
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 expect(order.pendingItems, hasLength(1)); 469 expect(order.pendingItems, hasLength(1));
431 expect(order.taskManager, manager); 470 expect(order.taskManager, manager);
432 } 471 }
433 472
434 test_moveNext() { 473 test_moveNext() {
435 TaskManager manager = new TaskManager(); 474 TaskManager manager = new TaskManager();
436 TaskDescriptor descriptor = new TaskDescriptor( 475 TaskDescriptor descriptor = new TaskDescriptor(
437 'task', null, (_) => {}, [new ResultDescriptor('result', null)]); 476 'task', null, (_) => {}, [new ResultDescriptor('result', null)]);
438 WorkItem workItem = new WorkItem(null, null, descriptor); 477 WorkItem workItem = new WorkItem(null, null, descriptor);
439 WorkOrder order = new WorkOrder(manager, workItem); 478 WorkOrder order = new WorkOrder(manager, workItem);
440 expect(order.moveNext(), true); 479 // "item" has no child items
480 expect(order.moveNext(), isTrue);
441 expect(order.current, workItem); 481 expect(order.current, workItem);
482 // done
483 expect(order.moveNext(), isFalse);
484 expect(order.current, isNull);
442 } 485 }
443 } 486 }
444 487
445 class _TestContext implements ExtendedAnalysisContext { 488 class _TestContext implements ExtendedAnalysisContext {
446 InternalAnalysisContext baseContext = 489 InternalAnalysisContext baseContext =
447 AnalysisContextFactory.contextWithCore(); 490 AnalysisContextFactory.contextWithCore();
448 491
449 @override 492 @override
450 List<AnalysisTarget> explicitTargets = <AnalysisTarget>[]; 493 List<AnalysisTarget> explicitTargets = <AnalysisTarget>[];
451 494
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
781 void setContents(Source source, String contents) { 824 void setContents(Source source, String contents) {
782 baseContext.setContents(source, contents); 825 baseContext.setContents(source, contents);
783 } 826 }
784 827
785 @override 828 @override
786 void visitCacheItems(void callback(Source source, SourceEntry dartEntry, 829 void visitCacheItems(void callback(Source source, SourceEntry dartEntry,
787 DataDescriptor rowDesc, CacheState state)) { 830 DataDescriptor rowDesc, CacheState state)) {
788 baseContext.visitCacheItems(callback); 831 baseContext.visitCacheItems(callback);
789 } 832 }
790 } 833 }
OLDNEW
« no previous file with comments | « no previous file | pkg/analyzer/test/src/task/test_support.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698