feat(dart/transform): Add simple ParseTemplates step

Generate methods in the ParseTemplates step.
Add a test for inline template method generation.
This commit is contained in:
Tim Blasi
2015-03-13 13:55:49 -07:00
parent b3fa1fa4fa
commit 08b56e1c53
14 changed files with 194 additions and 143 deletions

View File

@ -1,6 +1,7 @@
library angular2.test.transform.integration;
import 'dart:io';
import 'package:angular2/src/dom/html5lib_adapter.dart';
import 'package:angular2/transformer.dart';
import 'package:code_transformers/tests.dart';
import 'package:dart_style/dart_style.dart';
@ -24,6 +25,8 @@ class IntegrationTestConfig {
}
void allTests() {
Html5LibDomAdapter.makeCurrent();
/*
* Each test has its own directory for inputs & an `expected` directory for
* expected outputs.

View File

@ -0,0 +1,39 @@
library angular2.test.transform.directive_processor.all_tests;
import 'package:barback/barback.dart';
import 'package:angular2/src/dom/html5lib_adapter.dart';
import 'package:angular2/src/transform/common/asset_reader.dart';
import 'package:angular2/src/transform/common/formatter.dart';
import 'package:angular2/src/transform/template_compiler/generator.dart';
import 'package:dart_style/dart_style.dart';
import 'package:unittest/unittest.dart';
import '../common/read_file.dart';
var formatter = new DartFormatter();
void allTests() {
Html5LibDomAdapter.makeCurrent();
AssetReader reader = new TestAssetReader();
test('should parse simple expressions in inline templates.', () async {
var inputPath =
'template_compiler/inline_expression_files/hello.ng_deps.dart';
var expected = readFile(
'template_compiler/inline_expression_files/expected/hello.ng_deps.dart');
var output = await processTemplates(reader, new AssetId('a', inputPath));
output = formatter.format(output);
expected = formatter.format(expected);
expect(output, equals(expected));
});
test('should parse simple methods in inline templates.', () async {
var inputPath = 'template_compiler/inline_method_files/hello.ng_deps.dart';
var expected = readFile(
'template_compiler/inline_method_files/expected/hello.ng_deps.dart');
var output = await processTemplates(reader, new AssetId('a', inputPath));
output = formatter.format(output);
expected = formatter.format(expected);
expect(output, equals(expected));
});
}

View File

@ -18,5 +18,5 @@ void setupReflection(reflector) {
]
})
..registerGetters({'greeting': (o) => o.greeting})
..registerSetters({'greeting': (o, String v) => o.greeting = v});
..registerSetters({'greeting': (o, v) => o.greeting = v});
}

View File

@ -0,0 +1,22 @@
library examples.src.hello_world.index_common_dart;
import 'hello.dart';
import 'package:angular2/angular2.dart'
show bootstrap, Component, Decorator, Template, NgElement;
bool _visited = false;
void setupReflection(reflector) {
if (_visited) return;
_visited = true;
reflector
..registerType(HelloCmp, {
'factory': () => new HelloCmp(),
'parameters': const [const []],
'annotations': const [
const Component(selector: 'hello-app'),
const Template(inline: '<button (click)=\"action()\">go</button>')
]
})
..registerMethods(
{'action': (o, List args) => Function.apply(o.action, args)});
}

View File

@ -0,0 +1,20 @@
library examples.src.hello_world.index_common_dart;
import 'hello.dart';
import 'package:angular2/angular2.dart'
show bootstrap, Component, Decorator, Template, NgElement;
bool _visited = false;
void setupReflection(reflector) {
if (_visited) return;
_visited = true;
reflector
..registerType(HelloCmp, {
'factory': () => new HelloCmp(),
'parameters': const [const []],
'annotations': const [
const Component(selector: 'hello-app'),
const Template(inline: '<button (click)=\"action()\">go</button>')
]
});
}

View File

@ -1,30 +0,0 @@
library angular2.test.transform.directive_processor.all_tests;
import 'dart:io';
import 'package:barback/barback.dart';
import 'package:angular2/src/transform/common/asset_reader.dart';
import 'package:angular2/src/transform/common/formatter.dart';
import 'package:angular2/src/transform/template_parser/generator.dart';
import 'package:code_transformers/tests.dart';
import 'package:dart_style/dart_style.dart';
import 'package:path/path.dart' as path;
import 'package:unittest/unittest.dart';
import 'package:unittest/vm_config.dart';
import '../common/read_file.dart';
var formatter = new DartFormatter();
void allTests() {
AssetReader reader = new TestAssetReader();
test('should parse simple inline templates.', () async {
var inputPath = 'template_parser/basic_files/hello.ngDeps.dart';
var expected =
readFile('template_parser/basic_files/expected/hello.ngDeps.dart');
var output = await processTemplates(reader, new AssetId('a', inputPath));
output = formatter.format(output);
expected = formatter.format(expected);
expect(output, equals(expected));
});
}

View File

@ -7,13 +7,13 @@ import 'bind_generator/all_tests.dart' as bindGenerator;
import 'directive_processor/all_tests.dart' as directiveProcessor;
import 'integration/all_tests.dart' as integration;
import 'reflection_remover/all_tests.dart' as reflectionRemover;
import 'template_parser/all_tests.dart' as templateParser;
import 'template_compiler/all_tests.dart' as templateCompiler;
main() {
useVMConfiguration();
group('Bind Generator', bindGenerator.allTests);
group('Directive Processor', directiveProcessor.allTests);
group('Reflection Remover', reflectionRemover.allTests);
group('Template Compiler', templateCompiler.allTests);
group('Transformer Pipeline', integration.allTests);
group('Template Parser', templateParser.allTests);
}