| 
									
										
										
										
											2019-03-04 11:43:55 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * @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 * as ts from 'typescript'; | 
					
						
							| 
									
										
										
										
											2019-03-20 13:47:58 +00:00
										 |  |  | import {CtorParameter} from '../../../src/ngtsc/reflection'; | 
					
						
							| 
									
										
										
										
											2019-03-04 11:43:55 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Check that a given list of `CtorParameter`s has `typeValueReference`s of specific `ts.Identifier` | 
					
						
							|  |  |  |  * names. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | export function expectTypeValueReferencesForParameters( | 
					
						
							| 
									
										
										
										
											2019-11-18 11:53:25 -08:00
										 |  |  |     parameters: CtorParameter[], expectedParams: (string | null)[], | 
					
						
							|  |  |  |     fromModule: string | null = null) { | 
					
						
							| 
									
										
										
										
											2019-03-04 11:43:55 -08:00
										 |  |  |   parameters !.forEach((param, idx) => { | 
					
						
							|  |  |  |     const expected = expectedParams[idx]; | 
					
						
							|  |  |  |     if (expected !== null) { | 
					
						
							| 
									
										
										
										
											2019-11-18 11:53:25 -08:00
										 |  |  |       if (param.typeValueReference === null) { | 
					
						
							| 
									
										
										
										
											2019-03-04 11:43:55 -08:00
										 |  |  |         fail(`Incorrect typeValueReference generated, expected ${expected}`); | 
					
						
							| 
									
										
										
										
											2019-11-18 11:53:25 -08:00
										 |  |  |       } else if (param.typeValueReference.local && fromModule !== null) { | 
					
						
							|  |  |  |         fail(`Incorrect typeValueReference generated, expected non-local`); | 
					
						
							|  |  |  |       } else if (!param.typeValueReference.local && fromModule === null) { | 
					
						
							|  |  |  |         fail(`Incorrect typeValueReference generated, expected local`); | 
					
						
							|  |  |  |       } else if (param.typeValueReference.local) { | 
					
						
							|  |  |  |         if (!ts.isIdentifier(param.typeValueReference.expression)) { | 
					
						
							|  |  |  |           fail(`Incorrect typeValueReference generated, expected identifer`); | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |           expect(param.typeValueReference.expression.text).toEqual(expected); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       } else if (param.typeValueReference !== null) { | 
					
						
							|  |  |  |         expect(param.typeValueReference.moduleName).toBe(fromModule !); | 
					
						
							|  |  |  |         expect(param.typeValueReference.name).toBe(expected); | 
					
						
							| 
									
										
										
										
											2019-03-04 11:43:55 -08:00
										 |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | } |