import { ddescribe, describe, xdescribe, it, iit, xit, expect, beforeEach, afterEach, AsyncTestCompleter, inject, beforeEachBindings } from 'angular2/testing_internal'; import {provide} from 'angular2/src/core/di'; import {CONST_EXPR, stringify} from 'angular2/src/facade/lang'; import {MapWrapper} from 'angular2/src/facade/collection'; import {Promise} from 'angular2/src/facade/async'; import {ChangeDetectionCompiler} from 'angular2/src/compiler/change_detector_compiler'; import { CompileDirectiveMetadata, CompileTypeMetadata } from 'angular2/src/compiler/directive_metadata'; import { SourceModule, SourceExpression, SourceExpressions, moduleRef } from 'angular2/src/compiler/source_module'; import {TemplateParser} from 'angular2/src/compiler/template_parser'; import { ChangeDetectorGenConfig, ChangeDetectionStrategy, ChangeDispatcher, DirectiveIndex, Locals, BindingTarget, ChangeDetector } from 'angular2/src/core/change_detection/change_detection'; import {evalModule} from './eval_module'; import {TEST_PROVIDERS} from './test_bindings'; import {TestDispatcher, TestPipes} from './change_detector_mocks'; import {codeGenValueFn, codeGenExportVariable, MODULE_SUFFIX} from 'angular2/src/compiler/util'; // Attention: These module names have to correspond to real modules! var THIS_MODULE_ID = 'angular2/test/compiler/change_detector_compiler_spec'; var THIS_MODULE_URL = `package:${THIS_MODULE_ID}${MODULE_SUFFIX}`; var THIS_MODULE_REF = moduleRef(THIS_MODULE_URL); export function main() { describe('ChangeDetectorCompiler', () => { beforeEachBindings(() => TEST_PROVIDERS); var parser: TemplateParser; var compiler: ChangeDetectionCompiler; beforeEach(inject([TemplateParser, ChangeDetectionCompiler], (_parser, _compiler) => { parser = _parser; compiler = _compiler; })); describe('compileComponentRuntime', () => { function detectChanges(compiler: ChangeDetectionCompiler, template: string, directives: CompileDirectiveMetadata[] = CONST_EXPR([])): string[] { var type = new CompileTypeMetadata({name: stringify(SomeComponent), moduleUrl: THIS_MODULE_URL}); var parsedTemplate = parser.parse(template, directives, 'TestComp'); var factories = compiler.compileComponentRuntime(type, ChangeDetectionStrategy.Default, parsedTemplate); return testChangeDetector(factories[0]); } describe('no jit', () => { beforeEachBindings(() => [ provide(ChangeDetectorGenConfig, {useValue: new ChangeDetectorGenConfig(true, false, false)}) ]); it('should watch element properties', () => { expect(detectChanges(compiler, '