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;
 | 
						|
} |