442 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			442 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								import {
							 | 
						||
| 
								 | 
							
								  ddescribe,
							 | 
						||
| 
								 | 
							
								  describe,
							 | 
						||
| 
								 | 
							
								  xdescribe,
							 | 
						||
| 
								 | 
							
								  it,
							 | 
						||
| 
								 | 
							
								  iit,
							 | 
						||
| 
								 | 
							
								  xit,
							 | 
						||
| 
								 | 
							
								  expect,
							 | 
						||
| 
								 | 
							
								  beforeEach,
							 | 
						||
| 
								 | 
							
								  afterEach,
							 | 
						||
| 
								 | 
							
								  AsyncTestCompleter,
							 | 
						||
| 
								 | 
							
								  inject,
							 | 
						||
| 
								 | 
							
								  beforeEachProviders
							 | 
						||
| 
								 | 
							
								} from 'angular2/testing_internal';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import {StaticReflector, StaticReflectorHost} from 'angular2/src/compiler/static_reflector';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export function main() {
							 | 
						||
| 
								 | 
							
								  describe('StaticRefelector', () => {
							 | 
						||
| 
								 | 
							
								    it('should get annotations for NgFor', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      let NgFor = reflector.getStaticType('angular2/src/common/directives/ng_for', 'NgFor');
							 | 
						||
| 
								 | 
							
								      let annotations = reflector.annotations(NgFor);
							 | 
						||
| 
								 | 
							
								      expect(annotations.length).toEqual(1);
							 | 
						||
| 
								 | 
							
								      let annotation = annotations[0];
							 | 
						||
| 
								 | 
							
								      expect(annotation.selector).toEqual('[ngFor][ngForOf]');
							 | 
						||
| 
								 | 
							
								      expect(annotation.inputs).toEqual(['ngForTrackBy', 'ngForOf', 'ngForTemplate']);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should get constructor for NgFor', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      let NgFor = reflector.getStaticType('angular2/src/common/directives/ng_for', 'NgFor');
							 | 
						||
| 
								 | 
							
								      let ViewContainerRef = reflector.getStaticType('angular2/src/core/linker/view_container_ref',
							 | 
						||
| 
								 | 
							
								                                                     'ViewContainerRef');
							 | 
						||
| 
								 | 
							
								      let TemplateRef =
							 | 
						||
| 
								 | 
							
								          reflector.getStaticType('angular2/src/core/linker/template_ref', 'TemplateRef');
							 | 
						||
| 
								 | 
							
								      let IterableDiffers = reflector.getStaticType(
							 | 
						||
| 
								 | 
							
								          'angular2/src/core/change_detection/differs/iterable_differs', 'IterableDiffers');
							 | 
						||
| 
								 | 
							
								      let ChangeDetectorRef = reflector.getStaticType(
							 | 
						||
| 
								 | 
							
								          'angular2/src/core/change_detection/change_detector_ref', 'ChangeDetectorRef');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      let parameters = reflector.parameters(NgFor);
							 | 
						||
| 
								 | 
							
								      expect(parameters)
							 | 
						||
| 
								 | 
							
								          .toEqual([ViewContainerRef, TemplateRef, IterableDiffers, ChangeDetectorRef]);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should get annotations for HeroDetailComponent', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      let HeroDetailComponent =
							 | 
						||
| 
								 | 
							
								          reflector.getStaticType('./app/hero-detail.component', 'HeroDetailComponent');
							 | 
						||
| 
								 | 
							
								      let annotations = reflector.annotations(HeroDetailComponent);
							 | 
						||
| 
								 | 
							
								      expect(annotations.length).toEqual(1);
							 | 
						||
| 
								 | 
							
								      let annotation = annotations[0];
							 | 
						||
| 
								 | 
							
								      expect(annotation.selector).toEqual('my-hero-detail');
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should get propMetadata for HeroDetailComponent', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      let HeroDetailComponent =
							 | 
						||
| 
								 | 
							
								          reflector.getStaticType('./app/hero-detail.component', 'HeroDetailComponent');
							 | 
						||
| 
								 | 
							
								      let props = reflector.propMetadata(HeroDetailComponent);
							 | 
						||
| 
								 | 
							
								      expect(props['hero']).toBeTruthy();
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify primitive into itself', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', 1)).toBe(1);
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', true)).toBe(true);
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', "some value")).toBe("some value");
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify an array into a copy of the array', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', [1, 2, 3])).toEqual([1, 2, 3]);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify an object to a copy of the object', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								      let expr = {a: 1, b: 2, c: 3};
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', expr)).toEqual(expr);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify &&', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '&&', left: true, right: true}))).toBe(true);
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '&&', left: true, right: false}))).toBe(false);
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '&&', left: false, right: true}))).toBe(false);
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '&&', left: false, right: false}))).toBe(false);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify ||', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '||', left: true, right: true}))).toBe(true);
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '||', left: true, right: false}))).toBe(true);
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '||', left: false, right: true}))).toBe(true);
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '||', left: false, right: false}))).toBe(false);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify &', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '&', left: 0x22, right: 0x0F}))).toBe(0x22 & 0x0F);
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '&', left: 0x22, right: 0xF0}))).toBe(0x22 & 0xF0);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify |', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '|', left: 0x22, right: 0x0F}))).toBe(0x22 | 0x0F);
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '|', left: 0x22, right: 0xF0}))).toBe(0x22 | 0xF0);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify ^', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '|', left: 0x22, right: 0x0F}))).toBe(0x22 | 0x0F);
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '|', left: 0x22, right: 0xF0}))).toBe(0x22 | 0xF0);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify ==', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '==', left: 0x22, right: 0x22}))).toBe(0x22 == 0x22);
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '==', left: 0x22, right: 0xF0}))).toBe(0x22 == 0xF0);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify !=', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '!=', left: 0x22, right: 0x22}))).toBe(0x22 != 0x22);
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '!=', left: 0x22, right: 0xF0}))).toBe(0x22 != 0xF0);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify ===', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '===', left: 0x22, right: 0x22}))).toBe(0x22 === 0x22);
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '===', left: 0x22, right: 0xF0}))).toBe(0x22 === 0xF0);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify !==', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '!==', left: 0x22, right: 0x22}))).toBe(0x22 !== 0x22);
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '!==', left: 0x22, right: 0xF0}))).toBe(0x22 !== 0xF0);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify >', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '>', left: 1, right: 1}))).toBe(1 > 1);
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '>', left: 1, right: 0}))).toBe(1 > 0);
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '>', left: 0, right: 1}))).toBe(0 > 1);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify >=', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '>=', left: 1, right: 1}))).toBe(1 >= 1);
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '>=', left: 1, right: 0}))).toBe(1 >= 0);
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '>=', left: 0, right: 1}))).toBe(0 >= 1);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify <=', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '<=', left: 1, right: 1}))).toBe(1 <= 1);
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '<=', left: 1, right: 0}))).toBe(1 <= 0);
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '<=', left: 0, right: 1}))).toBe(0 <= 1);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify <', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '<', left: 1, right: 1}))).toBe(1 < 1);
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '<', left: 1, right: 0}))).toBe(1 < 0);
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '<', left: 0, right: 1}))).toBe(0 < 1);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify <<', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '<<', left: 0x55, right: 2}))).toBe(0x55 << 2);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify >>', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '>>', left: 0x55, right: 2}))).toBe(0x55 >> 2);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify +', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '+', left: 0x55, right: 2}))).toBe(0x55 + 2);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify -', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '-', left: 0x55, right: 2}))).toBe(0x55 - 2);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify *', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '*', left: 0x55, right: 2}))).toBe(0x55 * 2);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify /', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '/', left: 0x55, right: 2}))).toBe(0x55 / 2);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify %', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'binop', operator: '%', left: 0x55, right: 2}))).toBe(0x55 % 2);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify prefix -', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'pre', operator: '-', operand: 2}))).toBe(-2);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify prefix ~', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'pre', operator: '~', operand: 2}))).toBe(~2);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify prefix !', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'pre', operator: '!', operand: true}))).toBe(!true);
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({ __symbolic: 'pre', operator: '!', operand: false}))).toBe(!false);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simpify an array index', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', ({__symbolic: "index", expression: [1, 2, 3], index: 2})))
							 | 
						||
| 
								 | 
							
								          .toBe(3);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify an object index', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								      let expr = {__symbolic: "select", expression: {a: 1, b: 2, c: 3}, member: "b"};
							 | 
						||
| 
								 | 
							
								      expect(reflector.simplify('', expr)).toBe(2);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should simplify a module reference', () => {
							 | 
						||
| 
								 | 
							
								      let host = new MockReflectorHost();
							 | 
						||
| 
								 | 
							
								      let reflector = new StaticReflector(host);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      expect(
							 | 
						||
| 
								 | 
							
								          reflector.simplify('./cases', ({__symbolic: "reference", module: "./extern", name: "s"})))
							 | 
						||
| 
								 | 
							
								          .toEqual("s");
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class MockReflectorHost implements StaticReflectorHost {
							 | 
						||
| 
								 | 
							
								  getMetadataFor(moduleId: string): any {
							 | 
						||
| 
								 | 
							
								    return {
							 | 
						||
| 
								 | 
							
								      'angular2/src/common/directives/ng_for':
							 | 
						||
| 
								 | 
							
								          {
							 | 
						||
| 
								 | 
							
								            "__symbolic": "module",
							 | 
						||
| 
								 | 
							
								            "module": "./ng_for",
							 | 
						||
| 
								 | 
							
								            "metadata":
							 | 
						||
| 
								 | 
							
								                {
							 | 
						||
| 
								 | 
							
								                  "NgFor":
							 | 
						||
| 
								 | 
							
								                      {
							 | 
						||
| 
								 | 
							
								                        "__symbolic": "class",
							 | 
						||
| 
								 | 
							
								                        "decorators":
							 | 
						||
| 
								 | 
							
								                            [
							 | 
						||
| 
								 | 
							
								                              {
							 | 
						||
| 
								 | 
							
								                                "__symbolic": "call",
							 | 
						||
| 
								 | 
							
								                                "expression": {
							 | 
						||
| 
								 | 
							
								                                  "__symbolic": "reference",
							 | 
						||
| 
								 | 
							
								                                  "name": "Directive",
							 | 
						||
| 
								 | 
							
								                                  "module": "../../core/metadata"
							 | 
						||
| 
								 | 
							
								                                },
							 | 
						||
| 
								 | 
							
								                                "arguments":
							 | 
						||
| 
								 | 
							
								                                    [
							 | 
						||
| 
								 | 
							
								                                      {
							 | 
						||
| 
								 | 
							
								                                        "selector": "[ngFor][ngForOf]",
							 | 
						||
| 
								 | 
							
								                                        "inputs": ["ngForTrackBy", "ngForOf", "ngForTemplate"]
							 | 
						||
| 
								 | 
							
								                                      }
							 | 
						||
| 
								 | 
							
								                                    ]
							 | 
						||
| 
								 | 
							
								                              }
							 | 
						||
| 
								 | 
							
								                            ],
							 | 
						||
| 
								 | 
							
								                        "members":
							 | 
						||
| 
								 | 
							
								                            {
							 | 
						||
| 
								 | 
							
								                              "__ctor__": [
							 | 
						||
| 
								 | 
							
								                                {
							 | 
						||
| 
								 | 
							
								                                  "__symbolic": "constructor",
							 | 
						||
| 
								 | 
							
								                                  "parameters":
							 | 
						||
| 
								 | 
							
								                                      [
							 | 
						||
| 
								 | 
							
								                                        {
							 | 
						||
| 
								 | 
							
								                                          "__symbolic": "reference",
							 | 
						||
| 
								 | 
							
								                                          "module": "../../core/linker/view_container_ref",
							 | 
						||
| 
								 | 
							
								                                          "name": "ViewContainerRef"
							 | 
						||
| 
								 | 
							
								                                        },
							 | 
						||
| 
								 | 
							
								                                        {
							 | 
						||
| 
								 | 
							
								                                          "__symbolic": "reference",
							 | 
						||
| 
								 | 
							
								                                          "module": "../../core/linker/template_ref",
							 | 
						||
| 
								 | 
							
								                                          "name": "TemplateRef"
							 | 
						||
| 
								 | 
							
								                                        },
							 | 
						||
| 
								 | 
							
								                                        {
							 | 
						||
| 
								 | 
							
								                                          "__symbolic": "reference",
							 | 
						||
| 
								 | 
							
								                                          "module":
							 | 
						||
| 
								 | 
							
								                                              "../../core/change_detection/differs/iterable_differs",
							 | 
						||
| 
								 | 
							
								                                          "name": "IterableDiffers"
							 | 
						||
| 
								 | 
							
								                                        },
							 | 
						||
| 
								 | 
							
								                                        {
							 | 
						||
| 
								 | 
							
								                                          "__symbolic": "reference",
							 | 
						||
| 
								 | 
							
								                                          "module":
							 | 
						||
| 
								 | 
							
								                                              "../../core/change_detection/change_detector_ref",
							 | 
						||
| 
								 | 
							
								                                          "name": "ChangeDetectorRef"
							 | 
						||
| 
								 | 
							
								                                        }
							 | 
						||
| 
								 | 
							
								                                      ]
							 | 
						||
| 
								 | 
							
								                                }
							 | 
						||
| 
								 | 
							
								                              ]
							 | 
						||
| 
								 | 
							
								                            }
							 | 
						||
| 
								 | 
							
								                      }
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          'angular2/src/core/linker/view_container_ref':
							 | 
						||
| 
								 | 
							
								              {
							 | 
						||
| 
								 | 
							
								                "module": "./view_container_ref",
							 | 
						||
| 
								 | 
							
								                "metadata": {"ViewContainerRef": {"__symbolic": "class"}}
							 | 
						||
| 
								 | 
							
								              },
							 | 
						||
| 
								 | 
							
								          'angular2/src/core/linker/template_ref':
							 | 
						||
| 
								 | 
							
								              {"module": "./template_ref", "metadata": {"TemplateRef": {"__symbolic": "class"}}},
							 | 
						||
| 
								 | 
							
								          'angular2/src/core/change_detection/differs/iterable_differs':
							 | 
						||
| 
								 | 
							
								              {
							 | 
						||
| 
								 | 
							
								                "module": "./iterable_differs",
							 | 
						||
| 
								 | 
							
								                "metadata": {"IterableDiffers": {"__symbolic": "class"}}
							 | 
						||
| 
								 | 
							
								              },
							 | 
						||
| 
								 | 
							
								          'angular2/src/core/change_detection/change_detector_ref':
							 | 
						||
| 
								 | 
							
								              {
							 | 
						||
| 
								 | 
							
								                "module": "./change_detector_ref",
							 | 
						||
| 
								 | 
							
								                "metadata": {"ChangeDetectorRef": {"__symbolic": "class"}}
							 | 
						||
| 
								 | 
							
								              },
							 | 
						||
| 
								 | 
							
								          './app/hero-detail.component':
							 | 
						||
| 
								 | 
							
								              {
							 | 
						||
| 
								 | 
							
								                "__symbolic": "module",
							 | 
						||
| 
								 | 
							
								                "module": "./hero-detail.component",
							 | 
						||
| 
								 | 
							
								                "metadata":
							 | 
						||
| 
								 | 
							
								                    {
							 | 
						||
| 
								 | 
							
								                      "HeroDetailComponent":
							 | 
						||
| 
								 | 
							
								                          {
							 | 
						||
| 
								 | 
							
								                            "__symbolic": "class",
							 | 
						||
| 
								 | 
							
								                            "decorators":
							 | 
						||
| 
								 | 
							
								                                [
							 | 
						||
| 
								 | 
							
								                                  {
							 | 
						||
| 
								 | 
							
								                                    "__symbolic": "call",
							 | 
						||
| 
								 | 
							
								                                    "expression": {
							 | 
						||
| 
								 | 
							
								                                      "__symbolic": "reference",
							 | 
						||
| 
								 | 
							
								                                      "name": "Component",
							 | 
						||
| 
								 | 
							
								                                      "module": "angular2/src/core/metadata"
							 | 
						||
| 
								 | 
							
								                                    },
							 | 
						||
| 
								 | 
							
								                                    "arguments": [
							 | 
						||
| 
								 | 
							
								                                      {
							 | 
						||
| 
								 | 
							
								                                        "selector": "my-hero-detail",
							 | 
						||
| 
								 | 
							
								                                        "template": "\n  <div *ngIf=\"hero\">\n    <h2>{{hero.name}} details!</h2>\n    <div><label>id: </label>{{hero.id}}</div>\n    <div>\n      <label>name: </label>\n      <input [(ngModel)]=\"hero.name\" placeholder=\"name\"/>\n    </div>\n  </div>\n"
							 | 
						||
| 
								 | 
							
								                                      }
							 | 
						||
| 
								 | 
							
								                                    ]
							 | 
						||
| 
								 | 
							
								                                  }
							 | 
						||
| 
								 | 
							
								                                ],
							 | 
						||
| 
								 | 
							
								                            "members":
							 | 
						||
| 
								 | 
							
								                                {
							 | 
						||
| 
								 | 
							
								                                  "hero": [
							 | 
						||
| 
								 | 
							
								                                    {
							 | 
						||
| 
								 | 
							
								                                      "__symbolic": "property",
							 | 
						||
| 
								 | 
							
								                                      "decorators":
							 | 
						||
| 
								 | 
							
								                                          [
							 | 
						||
| 
								 | 
							
								                                            {
							 | 
						||
| 
								 | 
							
								                                              "__symbolic": "call",
							 | 
						||
| 
								 | 
							
								                                              "expression":
							 | 
						||
| 
								 | 
							
								                                                  {
							 | 
						||
| 
								 | 
							
								                                                    "__symbolic": "reference",
							 | 
						||
| 
								 | 
							
								                                                    "name": "Input",
							 | 
						||
| 
								 | 
							
								                                                    "module": "angular2/src/core/metadata"
							 | 
						||
| 
								 | 
							
								                                                  }
							 | 
						||
| 
								 | 
							
								                                            }
							 | 
						||
| 
								 | 
							
								                                          ]
							 | 
						||
| 
								 | 
							
								                                    }
							 | 
						||
| 
								 | 
							
								                                  ]
							 | 
						||
| 
								 | 
							
								                                }
							 | 
						||
| 
								 | 
							
								                          }
							 | 
						||
| 
								 | 
							
								                    }
							 | 
						||
| 
								 | 
							
								              },
							 | 
						||
| 
								 | 
							
								          './extern': {
							 | 
						||
| 
								 | 
							
								        "__symbolic": "module", module: './extern', metadata: { s: "s" }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    [moduleId];
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 |