Format all pure Dart code with package:dart_style v0.2.0 Command: ``` find -type f -name "*.dart" | xargs dartformat -w ```
		
			
				
	
	
		
			106 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
/// This file contains tests that make sense only in Dart
 | 
						|
library angular2.test.facade.async_dart_spec;
 | 
						|
 | 
						|
import 'package:angular2/test_lib.dart';
 | 
						|
import 'package:angular2/src/facade/async.dart';
 | 
						|
 | 
						|
class MockException implements Error {
 | 
						|
  var message;
 | 
						|
  var stackTrace;
 | 
						|
}
 | 
						|
 | 
						|
class NonError {
 | 
						|
  var message;
 | 
						|
}
 | 
						|
 | 
						|
void functionThatThrows() {
 | 
						|
  try {
 | 
						|
    throw new MockException();
 | 
						|
  } catch (e, stack) {
 | 
						|
    // If we lose the stack trace the message will no longer match
 | 
						|
    // the first line in the stack
 | 
						|
    e.message = stack.toString().split('\n')[0];
 | 
						|
    e.stackTrace = stack;
 | 
						|
    rethrow;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
void functionThatThrowsNonError() {
 | 
						|
  try {
 | 
						|
    throw new NonError();
 | 
						|
  } catch (e, stack) {
 | 
						|
    // If we lose the stack trace the message will no longer match
 | 
						|
    // the first line in the stack
 | 
						|
    e.message = stack.toString().split('\n')[0];
 | 
						|
    rethrow;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
void expectFunctionThatThrowsWithStackTrace(
 | 
						|
    Future future, AsyncTestCompleter async) {
 | 
						|
  PromiseWrapper.catchError(future, (err, StackTrace stack) {
 | 
						|
    expect(stack.toString().split('\n')[0]).toEqual(err.message);
 | 
						|
    async.done();
 | 
						|
  });
 | 
						|
}
 | 
						|
 | 
						|
main() {
 | 
						|
  describe('async facade', () {
 | 
						|
    describe('Completer', () {
 | 
						|
      it(
 | 
						|
          'should preserve Error stack traces',
 | 
						|
          inject([AsyncTestCompleter], (async) {
 | 
						|
            var c = PromiseWrapper.completer();
 | 
						|
 | 
						|
            expectFunctionThatThrowsWithStackTrace(c.promise, async);
 | 
						|
 | 
						|
            try {
 | 
						|
              functionThatThrows();
 | 
						|
            } catch (e) {
 | 
						|
              c.reject(e, null);
 | 
						|
            }
 | 
						|
          }));
 | 
						|
 | 
						|
      it(
 | 
						|
          'should preserve error stack traces for non-Errors',
 | 
						|
          inject([AsyncTestCompleter], (async) {
 | 
						|
            var c = PromiseWrapper.completer();
 | 
						|
 | 
						|
            expectFunctionThatThrowsWithStackTrace(c.promise, async);
 | 
						|
 | 
						|
            try {
 | 
						|
              functionThatThrowsNonError();
 | 
						|
            } catch (e, s) {
 | 
						|
              c.reject(e, s);
 | 
						|
            }
 | 
						|
          }));
 | 
						|
    });
 | 
						|
 | 
						|
    describe('PromiseWrapper', () {
 | 
						|
      describe('reject', () {
 | 
						|
        it(
 | 
						|
            'should preserve Error stack traces',
 | 
						|
            inject([AsyncTestCompleter], (async) {
 | 
						|
              try {
 | 
						|
                functionThatThrows();
 | 
						|
              } catch (e) {
 | 
						|
                var rejectedFuture = PromiseWrapper.reject(e, null);
 | 
						|
                expectFunctionThatThrowsWithStackTrace(rejectedFuture, async);
 | 
						|
              }
 | 
						|
            }));
 | 
						|
 | 
						|
        it(
 | 
						|
            'should preserve stack traces for non-Errors',
 | 
						|
            inject([AsyncTestCompleter], (async) {
 | 
						|
              try {
 | 
						|
                functionThatThrowsNonError();
 | 
						|
              } catch (e, s) {
 | 
						|
                var rejectedFuture = PromiseWrapper.reject(e, s);
 | 
						|
                expectFunctionThatThrowsWithStackTrace(rejectedFuture, async);
 | 
						|
              }
 | 
						|
            }));
 | 
						|
      });
 | 
						|
    });
 | 
						|
  });
 | 
						|
}
 |