75 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			75 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								import {
							 | 
						||
| 
								 | 
							
								  AsyncTestCompleter,
							 | 
						||
| 
								 | 
							
								  inject,
							 | 
						||
| 
								 | 
							
								  ddescribe,
							 | 
						||
| 
								 | 
							
								  describe,
							 | 
						||
| 
								 | 
							
								  it,
							 | 
						||
| 
								 | 
							
								  iit,
							 | 
						||
| 
								 | 
							
								  xit,
							 | 
						||
| 
								 | 
							
								  expect,
							 | 
						||
| 
								 | 
							
								  SpyObject,
							 | 
						||
| 
								 | 
							
								  proxy
							 | 
						||
| 
								 | 
							
								} from 'angular2/test_lib';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import {DOM, DomAdapter} from 'angular2/src/dom/dom_adapter';
							 | 
						||
| 
								 | 
							
								import {ElementRef} from 'angular2/src/core/compiler/element_ref';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import {Ruler, Rectangle} from 'angular2/src/services/ruler';
							 | 
						||
| 
								 | 
							
								import {createRectangle} from './rectangle_mock';
							 | 
						||
| 
								 | 
							
								import {IMPLEMENTS} from 'angular2/src/facade/lang';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function assertDimensions(rect: Rectangle, left, right, top, bottom, width, height) {
							 | 
						||
| 
								 | 
							
								  expect(rect.left).toEqual(left);
							 | 
						||
| 
								 | 
							
								  expect(rect.right).toEqual(right);
							 | 
						||
| 
								 | 
							
								  expect(rect.top).toEqual(top);
							 | 
						||
| 
								 | 
							
								  expect(rect.bottom).toEqual(bottom);
							 | 
						||
| 
								 | 
							
								  expect(rect.width).toEqual(width);
							 | 
						||
| 
								 | 
							
								  expect(rect.height).toEqual(height);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export function main() {
							 | 
						||
| 
								 | 
							
								  describe('ruler service', () => {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should allow measuring ElementRefs', inject([AsyncTestCompleter], (async) => {
							 | 
						||
| 
								 | 
							
								         var ruler = new Ruler(SpyObject.stub(
							 | 
						||
| 
								 | 
							
								             new SpyDomAdapter(), {'getBoundingClientRect': createRectangle(10, 20, 200, 100)}));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								         var elRef = <any>new SpyElementRef();
							 | 
						||
| 
								 | 
							
								         ruler.measure(elRef).then((rect) => {
							 | 
						||
| 
								 | 
							
								           assertDimensions(rect, 10, 210, 20, 120, 200, 100);
							 | 
						||
| 
								 | 
							
								           async.done();
							 | 
						||
| 
								 | 
							
								         });
							 | 
						||
| 
								 | 
							
								       }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should return 0 for all rectangle values while measuring elements in a document fragment',
							 | 
						||
| 
								 | 
							
								       inject([AsyncTestCompleter], (async) => {
							 | 
						||
| 
								 | 
							
								         var ruler = new Ruler(DOM);
							 | 
						||
| 
								 | 
							
								         var elRef = <any>new SpyElementRef();
							 | 
						||
| 
								 | 
							
								         elRef.domElement = DOM.createElement('div');
							 | 
						||
| 
								 | 
							
								         ruler.measure(elRef).then((rect) => {
							 | 
						||
| 
								 | 
							
								           // here we are using an element created in a doc fragment so all the measures will come
							 | 
						||
| 
								 | 
							
								           // back as 0
							 | 
						||
| 
								 | 
							
								           assertDimensions(rect, 0, 0, 0, 0, 0, 0);
							 | 
						||
| 
								 | 
							
								           async.done();
							 | 
						||
| 
								 | 
							
								         });
							 | 
						||
| 
								 | 
							
								       }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@proxy
							 | 
						||
| 
								 | 
							
								@IMPLEMENTS(ElementRef)
							 | 
						||
| 
								 | 
							
								class SpyElementRef extends SpyObject {
							 | 
						||
| 
								 | 
							
								  domElement;
							 | 
						||
| 
								 | 
							
								  constructor() { super(ElementRef); }
							 | 
						||
| 
								 | 
							
								  noSuchMethod(m) { return super.noSuchMethod(m) }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@proxy
							 | 
						||
| 
								 | 
							
								@IMPLEMENTS(DomAdapter)
							 | 
						||
| 
								 | 
							
								class SpyDomAdapter extends SpyObject {
							 | 
						||
| 
								 | 
							
								  constructor() { super(DomAdapter); }
							 | 
						||
| 
								 | 
							
								  noSuchMethod(m) { return super.noSuchMethod(m) }
							 | 
						||
| 
								 | 
							
								}
							 |