| Index: third_party/pkg/angular/lib/mock/zone.dart
|
| diff --git a/third_party/pkg/angular/lib/mock/zone.dart b/third_party/pkg/angular/lib/mock/zone.dart
|
| deleted file mode 100644
|
| index 862d42014be740c2b0403cbb29426da913affa23..0000000000000000000000000000000000000000
|
| --- a/third_party/pkg/angular/lib/mock/zone.dart
|
| +++ /dev/null
|
| @@ -1,216 +0,0 @@
|
| -library angular.mock_zone;
|
| -
|
| -import 'dart:async' as dart_async;
|
| -
|
| -final _asyncQueue = <Function>[];
|
| -final _timerQueue = <_TimerSpec>[];
|
| -final _asyncErrors = [];
|
| -bool _noMoreAsync = false;
|
| -
|
| -/**
|
| - * Runs any queued up async calls and any async calls queued with
|
| - * running microLeap. Example:
|
| - *
|
| - * it('should run async code', async(() {
|
| - * var thenRan = false;
|
| - * new Future.value('s').then((_) { thenRan = true; });
|
| - * expect(thenRan).toBe(false);
|
| - * microLeap();
|
| - * expect(thenRan).toBe(true);
|
| - * }));
|
| - *
|
| - * it('should run chained thens', async(() {
|
| - * var log = [];
|
| - * new Future.value('s')
|
| - * .then((_) { log.add('firstThen'); })
|
| - * .then((_) { log.add('2ndThen'); });
|
| - * expect(log.join(' ')).toEqual('');
|
| - * microLeap();
|
| - * expect(log.join(' ')).toEqual('firstThen 2ndThen');
|
| - * }));
|
| - *
|
| - */
|
| -microLeap() {
|
| - while (!_asyncQueue.isEmpty) {
|
| - // copy the queue as it may change.
|
| - var toRun = new List.from(_asyncQueue);
|
| - _asyncQueue.clear();
|
| - // TODO: Support the case where multiple exceptions are thrown.
|
| - // e.g. with a throwNextException() method.
|
| - assert(_asyncErrors.isEmpty);
|
| - toRun.forEach((fn) => fn());
|
| - if (_asyncErrors.isNotEmpty) {
|
| - var e = _asyncErrors.removeAt(0);
|
| - throw ['Async error', e[0], e[1]];
|
| - }
|
| - }
|
| -}
|
| -
|
| -/**
|
| - * Simulates a clock tick by running any scheduled timers. Can only be used
|
| - * in [async] tests.Clock tick will call [microLeap] to process the microtask
|
| - * queue before each timer callback.
|
| - *
|
| - * Note: microtasks scheduled form the last timer are not going to be processed.
|
| - *
|
| - * Example:
|
| - *
|
| - * it('should run queued timer after sufficient clock ticks', async(() {
|
| - * bool timerRan = false;
|
| - * new Timer(new Duration(milliseconds: 10), () => timerRan = true);
|
| - *
|
| - * clockTick(milliseconds: 9);
|
| - * expect(timerRan).toBeFalsy();
|
| - * clockTick(milliseconds: 1);
|
| - * expect(timerRan).toBeTruthy();
|
| - * }));
|
| - *
|
| - * it('should run periodic timer', async(() {
|
| - * int timerRan = 0;
|
| - * new Timer.periodic(new Duration(milliseconds: 10), (_) => timerRan++);
|
| - *
|
| - * clockTick(milliseconds: 9);
|
| - * expect(timerRan).toBe(0);
|
| - * clockTick(milliseconds: 1);
|
| - * expect(timerRan).toBe(1);
|
| - * clockTick(milliseconds: 30);
|
| - * expect(timerRan).toBe(4);
|
| - * }));
|
| - */
|
| -void clockTick({int days: 0,
|
| - int hours: 0,
|
| - int minutes: 0,
|
| - int seconds: 0,
|
| - int milliseconds: 0,
|
| - int microseconds: 0}) {
|
| - var tickDuration = new Duration(days: days, hours: hours, minutes: minutes,
|
| - seconds: seconds, milliseconds: milliseconds, microseconds: microseconds);
|
| -
|
| - var remainingTimers = [];
|
| - var queue = new List.from(_timerQueue);
|
| - _timerQueue.clear();
|
| - queue
|
| - .where((_TimerSpec spec) => spec.isActive)
|
| - .forEach((_TimerSpec spec) {
|
| - if (spec.periodic) {
|
| - // We always add back the periodic timer unless it's cancelled.
|
| - remainingTimers.add(spec);
|
| -
|
| - // Ignore ZERO duration ticks for periodic timers.
|
| - if (tickDuration == Duration.ZERO) return;
|
| -
|
| - spec.elapsed += tickDuration;
|
| - // Run the timer as many times as the timer priod fits into the tick.
|
| - while (spec.elapsed >= spec.duration) {
|
| - spec.elapsed -= spec.duration;
|
| - microLeap();
|
| - spec.fn(spec);
|
| - }
|
| - } else {
|
| - spec.duration -= tickDuration;
|
| - if (spec.duration <= Duration.ZERO) {
|
| - microLeap();
|
| - spec.fn();
|
| - } else {
|
| - remainingTimers.add(spec);
|
| - }
|
| - }
|
| - });
|
| - // Remaining timers should come before anything else scheduled after them.
|
| - _timerQueue.insertAll(0, remainingTimers);
|
| -}
|
| -
|
| -/**
|
| - * Causes scheduleMicrotask calls to throw exceptions.
|
| - *
|
| - * This function is useful while debugging async tests: the exception
|
| - * is thrown from the scheduleMicrotask call-site instead later in the test.
|
| - */
|
| -noMoreAsync() {
|
| - _noMoreAsync = true;
|
| -}
|
| -
|
| -/**
|
| - * Captures all scheduleMicrotask calls inside of a function.
|
| - *
|
| - * Typically used within a test:
|
| - *
|
| - * it('should be async', async(() {
|
| - * ...
|
| - * }));
|
| - */
|
| -async(Function fn) => () {
|
| - _noMoreAsync = false;
|
| - _asyncErrors.clear();
|
| - _timerQueue.clear();
|
| - var zoneSpec = new dart_async.ZoneSpecification(
|
| - scheduleMicrotask: (_, __, ___, asyncFn) {
|
| - if (_noMoreAsync) {
|
| - throw ['scheduleMicrotask called after noMoreAsync()'];
|
| - } else {
|
| - _asyncQueue.add(asyncFn);
|
| - }
|
| - },
|
| - createTimer: (_, __, ____, Duration duration, void f()) =>
|
| - _createTimer(f, duration, false),
|
| - createPeriodicTimer:
|
| - (_, __, ___, Duration period, void f(dart_async.Timer timer)) =>
|
| - _createTimer(f, period, true),
|
| - handleUncaughtError: (_, __, ___, e, s) => _asyncErrors.add([e, s])
|
| - );
|
| - dart_async.runZoned(() {
|
| - fn();
|
| - microLeap();
|
| - }, zoneSpecification: zoneSpec);
|
| -
|
| - _asyncErrors.forEach((e) {
|
| - throw "During runZoned: ${e[0]}. Stack:\n${e[1]}";
|
| - });
|
| -
|
| - var activeTimers = _timerQueue.fold(0, (nb, _TimerSpec spec) {
|
| - return spec.isActive ? nb + 1 : nb;
|
| - });
|
| -
|
| - if (activeTimers > 0) {
|
| - throw ["$activeTimers active timer(s) are still in the queue."];
|
| - }
|
| -};
|
| -
|
| -_createTimer(Function fn, Duration duration, bool periodic) {
|
| - var timer = new _TimerSpec(fn, duration, periodic);
|
| - _timerQueue.add(timer);
|
| - return timer;
|
| -}
|
| -
|
| -/**
|
| - * Enforces synchronous code. Any calls to scheduleMicrotask inside of 'sync'
|
| - * will throw an exception.
|
| - */
|
| -sync(Function fn) => () {
|
| - dart_async.runZoned(fn, zoneSpecification: new dart_async.ZoneSpecification(
|
| - scheduleMicrotask: (_, __, ___, asyncFn) {
|
| - throw ['scheduleMicrotask called from sync function.'];
|
| - },
|
| - createTimer: (_, __, ____, Duration duration, void f()) {
|
| - throw ['Timer created from sync function.'];
|
| - },
|
| - createPeriodicTimer:
|
| - (_, __, ___, Duration period, void f(dart_async.Timer timer)) {
|
| - throw ['periodic Timer created from sync function.'];
|
| - }
|
| - ));
|
| -};
|
| -
|
| -class _TimerSpec implements dart_async.Timer {
|
| - Function fn;
|
| - Duration duration;
|
| - Duration elapsed = Duration.ZERO;
|
| - bool periodic;
|
| - bool isActive = true;
|
| -
|
| - _TimerSpec(this.fn, this.duration, this.periodic);
|
| -
|
| - void cancel() {
|
| - isActive = false;
|
| - }
|
| -}
|
|
|