47 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			47 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|  | /** | ||
|  |  * @license | ||
|  |  * Copyright Google Inc. All Rights Reserved. | ||
|  |  * | ||
|  |  * Use of this source code is governed by an MIT-style license that can be | ||
|  |  * found in the LICENSE file at https://angular.io/license
 | ||
|  |  */ | ||
|  | 
 | ||
|  | import {ngDevModeResetPerfCounters} from '../../src/render3/ng_dev_mode'; | ||
|  | 
 | ||
|  | beforeEach(ngDevModeResetPerfCounters); | ||
|  | beforeEach(() => { | ||
|  |   jasmine.addMatchers({ | ||
|  |     toHaveProperties: function(util, customEqualityTesters) { | ||
|  |       return {compare: toHavePropertiesCompare}; | ||
|  |     } | ||
|  |   }); | ||
|  | }); | ||
|  | function toHavePropertiesCompare(actual: any, expected: any) { | ||
|  |   let pass = true; | ||
|  |   let errors = []; | ||
|  |   for (let key of Object.keys(actual)) { | ||
|  |     if (expected.hasOwnProperty(key)) { | ||
|  |       if (actual[key] !== expected[key]) { | ||
|  |         pass = false; | ||
|  |         errors.push(`Expected '${key}' to be '${expected[key]}' but was '${actual[key]}'.`); | ||
|  |       } | ||
|  |     } | ||
|  |   } | ||
|  |   return {pass: pass, message: errors.join('\n')}; | ||
|  | } | ||
|  | 
 | ||
|  | describe('toHaveProperties', () => { | ||
|  |   it('should pass', () => { | ||
|  |     expect({tNode: 1}).toHaveProperties({}); | ||
|  |     expect({tNode: 2}).toHaveProperties({tNode: 2}); | ||
|  |   }); | ||
|  | 
 | ||
|  |   it('should fail', () => { | ||
|  |     expect(toHavePropertiesCompare({tNode: 2, tView: 4}, {tNode: 3, tView: 5})).toEqual({ | ||
|  |       pass: false, | ||
|  |       message: | ||
|  |           'Expected \'tNode\' to be \'3\' but was \'2\'.\nExpected \'tView\' to be \'5\' but was \'4\'.' | ||
|  |     }); | ||
|  |   }); | ||
|  | }); |