52 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			52 lines
		
	
	
		
			1.6 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 {DomElementSchemaRegistry} from '@angular/compiler';
							 | 
						||
| 
								 | 
							
								import {SchemaInformation} from '../src/html_info';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								describe('html_info', () => {
							 | 
						||
| 
								 | 
							
								  const domRegistry = new DomElementSchemaRegistry();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('should have the same elements as the dom registry', () => {
							 | 
						||
| 
								 | 
							
								    // If this test fails, replace the SCHEMA constant in html_info with the one
							 | 
						||
| 
								 | 
							
								    // from dom_element_schema_registry and also verify the code to interpret
							 | 
						||
| 
								 | 
							
								    // the schema is the same.
							 | 
						||
| 
								 | 
							
								    const domElements = domRegistry.allKnownElementNames();
							 | 
						||
| 
								 | 
							
								    const infoElements = SchemaInformation.instance.allKnownElements();
							 | 
						||
| 
								 | 
							
								    const uniqueToDom = uniqueElements(infoElements, domElements);
							 | 
						||
| 
								 | 
							
								    const uniqueToInfo = uniqueElements(domElements, infoElements);
							 | 
						||
| 
								 | 
							
								    expect(uniqueToDom).toEqual([]);
							 | 
						||
| 
								 | 
							
								    expect(uniqueToInfo).toEqual([]);
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('should have at least a sub-set of properties', () => {
							 | 
						||
| 
								 | 
							
								    const elements = SchemaInformation.instance.allKnownElements();
							 | 
						||
| 
								 | 
							
								    for (const element of elements) {
							 | 
						||
| 
								 | 
							
								      for (const prop of SchemaInformation.instance.propertiesOf(element)) {
							 | 
						||
| 
								 | 
							
								        expect(domRegistry.hasProperty(element, prop, []));
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function uniqueElements<T>(a: T[], b: T[]): T[] {
							 | 
						||
| 
								 | 
							
								  const s = new Set<T>();
							 | 
						||
| 
								 | 
							
								  for (const aItem of a) {
							 | 
						||
| 
								 | 
							
								    s.add(aItem);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  const result: T[] = [];
							 | 
						||
| 
								 | 
							
								  const reported = new Set<T>();
							 | 
						||
| 
								 | 
							
								  for (const bItem of b) {
							 | 
						||
| 
								 | 
							
								    if (!s.has(bItem) && !reported.has(bItem)) {
							 | 
						||
| 
								 | 
							
								      reported.add(bItem);
							 | 
						||
| 
								 | 
							
								      result.push(bItem);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return result;
							 | 
						||
| 
								 | 
							
								}
							 |