| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |