inject([AsyncTestCompleter], (async) => {
         var completerA: PromiseCompleter<any>;
         var completerB: PromiseCompleter<any>;

         macroTask(() => {
           _zone.run(() => {
             completerA = PromiseWrapper.completer();
             completerB = PromiseWrapper.completer();
             completerA.promise.then(_log.fn('a then'));
             completerB.promise.then(_log.fn('b then'));
             _log.add('run start');
           });
         });

         macroTask(() => { _zone.run(() => { completerA.resolve(null); }); }, 20);


         macroTask(() => { _zone.run(() => { completerB.resolve(null); }); }, 500);

         macroTask(() => {
           expect(_log.result())
               .toEqual(
                   // First VM turn
                   'onTurnStart; run start; onTurnDone; ' +
                   // Second VM turn
                   'onTurnStart; a then; onTurnDone; ' +
                   // Third VM turn
                   'onTurnStart; b then; onTurnDone');
           async.done();
         }, resultTimer);
       }), testTimeout);
       inject([AsyncTestCompleter], (async) => {
         var a: PromiseCompleter<string>;
         var b: PromiseCompleter<string>;

         macroTask(() => {
           _zone.run(() => {
             a = PromiseWrapper.completer();
             b = PromiseWrapper.completer();

             _log.add('run start');
             a.promise.then(_log.fn('a then'));
             b.promise.then(_log.fn('b then'));
           });
         });

         macroTask(() => {
           _zone.run(() => {
             a.resolve('a');
             b.resolve('b');
           });
         });

         macroTask(() => {
           expect(_log.result())
               .toEqual(
                   'onTurnStart; run start; onTurnDone; onTurnStart; a then; b then; onTurnDone');
           async.done();
         }, resultTimer);
       }), testTimeout);
Exemple #3
0
       inject([AsyncTestCompleter], (async) => {
         var a: PromiseCompleter<string>;
         var b: PromiseCompleter<string>;

         runNgZoneNoLog(() => {
           macroTask(() => {
             a = PromiseWrapper.completer();
             b = PromiseWrapper.completer();

             _log.add('run start');
             a.promise.then(_log.fn('a then'));
             b.promise.then(_log.fn('b then'));
           });
         });

         runNgZoneNoLog(() => {
           macroTask(() => {
             a.resolve('a');
             b.resolve('b');
           });
         });

         macroTask(() => {
           expect(_log.result())
               .toEqual(
                   'onUnstable; run start; onMicrotaskEmpty; onStable; onUnstable; a then; b then; onMicrotaskEmpty; onStable');
           async.done();
         }, resultTimer);
       }), testTimeout);
Exemple #4
0
       inject([AsyncTestCompleter], (async) => {
         var completerA: PromiseCompleter<any>;
         var completerB: PromiseCompleter<any>;

         runNgZoneNoLog(() => {
           macroTask(() => {
             completerA = PromiseWrapper.completer();
             completerB = PromiseWrapper.completer();
             completerA.promise.then(_log.fn('a then'));
             completerB.promise.then(_log.fn('b then'));
             _log.add('run start');
           });
         });

         runNgZoneNoLog(() => { macroTask(() => { completerA.resolve(null); }, 10); });

         runNgZoneNoLog(() => { macroTask(() => { completerB.resolve(null); }, 20); });

         macroTask(() => {
           expect(_log.result())
               .toEqual(
                   // First VM turn
                   'onUnstable; run start; onMicrotaskEmpty; onStable; ' +
                   // Second VM turn
                   'onUnstable; a then; onMicrotaskEmpty; onStable; ' +
                   // Third VM turn
                   'onUnstable; b then; onMicrotaskEmpty; onStable');
           async.done();
         }, resultTimer);
       }), testTimeout);
 complete(response: string) {
   if (isBlank(response)) {
     this.completer.reject(`Failed to load ${this.url}`, null);
   } else {
     this.completer.resolve(response);
   }
 }
       inject([AsyncTestCompleter], (async) => {
         var completer: PromiseCompleter<any>;

         macroTask(
             () => { _zone.runOutsideAngular(() => { completer = PromiseWrapper.completer(); }); });

         macroTask(
             () => { _zone.run(() => { completer.promise.then(_log.fn('executedMicrotask')); }); });

         macroTask(() => {
           _zone.runOutsideAngular(() => {
             _log.add('scheduling a microtask');
             completer.resolve(null);
           });
         });

         macroTask(() => {
           expect(_log.result())
               .toEqual(
                   // First VM turn => setup Promise then
                   'onTurnStart; onTurnDone; ' +
                   // Second VM turn (outside of anguler)
                   'scheduling a microtask; ' +
                   // Third VM Turn => execute the microtask (inside angular)
                   'onTurnStart; executedMicrotask; onTurnDone');
           async.done();
         }, resultTimer);
       }), testTimeout);
Exemple #7
0
       inject([AsyncTestCompleter], (async) => {
         var completer: PromiseCompleter<any>;

         macroTask(() => {
           NgZone.assertNotInAngularZone();
           completer = PromiseWrapper.completer();
         });

         runNgZoneNoLog(() => {
           macroTask(() => {
             NgZone.assertInAngularZone();
             completer.promise.then(_log.fn('executedMicrotask'));
           });
         });

         macroTask(() => {
           NgZone.assertNotInAngularZone();
           _log.add('scheduling a microtask');
           completer.resolve(null);
         });

         macroTask(() => {
           expect(_log.result())
               .toEqual(
                   // First VM turn => setup Promise then
                   'onUnstable; onMicrotaskEmpty; onStable; ' +
                   // Second VM turn (outside of angular)
                   'scheduling a microtask; onUnstable; ' +
                   // Third VM Turn => execute the microtask (inside angular)
                   // No onUnstable;  because we don't own the task which started the turn.
                   'executedMicrotask; onMicrotaskEmpty; onStable');
           async.done();
         }, resultTimer);
       }), testTimeout);
  get(url: string): Promise<string> {
    var completer: PromiseCompleter < string >= PromiseWrapper.completer();
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.responseType = 'text';

    xhr.onload = function() {
      // responseText is the old-school way of retrieving response (supported by IE8 & 9)
      // response/responseType properties were introduced in XHR Level2 spec (supported by IE10)
      var response = isPresent(xhr.response) ? xhr.response : xhr.responseText;

      // normalize IE9 bug (http://bugs.jquery.com/ticket/1450)
      var status = xhr.status === 1223 ? 204 : xhr.status;

      // fix status code when it is 0 (0 status is undocumented).
      // Occurs when accessing file resources or on Android 4.1 stock browser
      // while retrieving files from application cache.
      if (status === 0) {
        status = response ? 200 : 0;
      }

      if (200 <= status && status <= 300) {
        completer.resolve(response);
      } else {
        completer.reject(`Failed to load ${url}`, null);
      }
    };

    xhr.onerror = function() { completer.reject(`Failed to load ${url}`, null); };

    xhr.send();
    return completer.promise;
  }
 ObservableWrapper.subscribe<string>(eventBus, (ev) => {
   if (ev.startsWith('deactivate')) {
     completer.resolve(true);
     fixture.detectChanges();
     expect(fixture.debugElement.nativeElement).toHaveText('parent {deactivate cmp}');
   }
 });
    xhr.onload = function() {
      // responseText is the old-school way of retrieving response (supported by IE8 & 9)
      // response/responseType properties were introduced in XHR Level2 spec (supported by IE10)
      var response = isPresent(xhr.response) ? xhr.response : xhr.responseText;

      // normalize IE9 bug (http://bugs.jquery.com/ticket/1450)
      var status = xhr.status === 1223 ? 204 : xhr.status;

      // fix status code when it is 0 (0 status is undocumented).
      // Occurs when accessing file resources or on Android 4.1 stock browser
      // while retrieving files from application cache.
      if (status === 0) {
        status = response ? 200 : 0;
      }

      if (200 <= status && status <= 300) {
        completer.resolve(response);
      } else {
        completer.reject(`Failed to load ${url}`, null);
      }
    };