import {AsyncTestCompleter, beforeEach, ddescribe, describe, expect, iit, inject, it, xdescribe, xit, Log} from 'angular2/testing_internal'; import {BaseException, WrappedException, ExceptionHandler} from 'angular2/src/facade/exceptions'; class _CustomException { context = 'some context'; toString(): string { return 'custom'; } } export function main() { describe('ExceptionHandler', () => { it('should output exception', () => { var e = ExceptionHandler.exceptionToString(new BaseException('message!')); expect(e).toContain('message!'); }); it('should output stackTrace', () => { var e = ExceptionHandler.exceptionToString(new BaseException('message!'), 'stack!'); expect(e).toContain('stack!'); }); it('should join a long stackTrace', () => { var e = ExceptionHandler.exceptionToString(new BaseException('message!'), ['stack1', 'stack2']); expect(e).toContain('stack1'); expect(e).toContain('stack2'); }); it('should output reason when present', () => { var e = ExceptionHandler.exceptionToString(new BaseException('message!'), null, 'reason!'); expect(e).toContain('reason!'); }); describe('context', () => { it('should print context', () => { var e = ExceptionHandler.exceptionToString( new WrappedException('message!', null, null, 'context!')); expect(e).toContain('context!'); }); it('should print nested context', () => { var original = new WrappedException('message!', null, null, 'context!'); var e = ExceptionHandler.exceptionToString(new WrappedException('message', original)); expect(e).toContain('context!'); }); it('should not print context when the passed-in exception is not a BaseException', () => { var e = ExceptionHandler.exceptionToString(new _CustomException()); expect(e).not.toContain('context'); }); }); describe('original exception', () => { it('should print original exception message if available (original is BaseException)', () => { var realOriginal = new BaseException('inner'); var original = new WrappedException('wrapped', realOriginal); var e = ExceptionHandler.exceptionToString(new WrappedException('wrappedwrapped', original)); expect(e).toContain('inner'); }); it('should print original exception message if available (original is not BaseException)', () => { var realOriginal = new _CustomException(); var original = new WrappedException('wrapped', realOriginal); var e = ExceptionHandler.exceptionToString(new WrappedException('wrappedwrapped', original)); expect(e).toContain('custom'); }); }); describe('original stack', () => { it('should print original stack if available', () => { var realOriginal = new BaseException('inner'); var original = new WrappedException('wrapped', realOriginal, 'originalStack'); var e = ExceptionHandler.exceptionToString( new WrappedException('wrappedwrapped', original, 'wrappedStack')); expect(e).toContain('originalStack'); }); }); }); }