refactor(dart/transform tests): Use actual directive def'n instead of mock.

In the transformer unit tests, we previously used a mock directive annotation. This update
substitutes the actual Angular2 directive annotations.

Closes #706
This commit is contained in:
Tim Blasi 2015-02-19 10:20:38 -08:00 committed by Misko Hevery
parent 85211f0a6b
commit 329b2eda66
18 changed files with 53 additions and 91 deletions

View File

@ -224,6 +224,14 @@ abstract class _TransformVisitor extends ToSourceVisitor {
}
}
@override
Object visitPrefixedIdentifier(PrefixedIdentifier node) {
// We add our own prefixes in [visitSimpleIdentifier], discard any used in
// the original source.
_visitNode(node.identifier);
return null;
}
@override
Object visitSimpleIdentifier(SimpleIdentifier node) {
// Make sure the identifier is prefixed if necessary.
@ -281,6 +289,7 @@ class _CtorTransformVisitor extends _TransformVisitor {
@override
Object visitDefaultFormalParameter(DefaultFormalParameter node) {
_visitNode(node.parameter);
// Ignore the declared default value.
return null;
}

View File

@ -1,11 +0,0 @@
// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
library angular2.test.transform;
// TODO(kegluneq): Remove this and use the actual Directive def'n.
// Simple mock of Directive.
class Directive {
final context;
const Directive({this.context});
}

View File

@ -1,9 +0,0 @@
library bar;
import 'package:angular2/src/core/annotations/annotations.dart';
@Directive(context: 'soup')
class Component {
final dynamic c;
Component([this.c = 'sandwich']);
}

View File

@ -1,14 +0,0 @@
import 'package:angular2/src/reflection/reflection.dart' show reflector;
import 'bar.dart' as i0;
import 'package:angular2/src/core/annotations/annotations.dart' as i1;
import 'index.dart' as i2;
main() {
reflector
..registerType(i0.Component, {
"factory": (dynamic c) => new i0.Component(c),
"parameters": const [const [dynamic]],
"annotations": const [const i1.Directive(context: 'soup')]
});
i2.main();
}

View File

@ -1,7 +0,0 @@
library web_foo;
import 'bar.dart';
void main() {
new Component('Things');
}

View File

@ -3,8 +3,8 @@ library bar;
import 'package:angular2/src/core/annotations/annotations.dart';
import 'foo.dart';
@Directive(context: const [MyContext])
class Component {
@Component(componentServices: const [MyContext])
class MyComponent {
final MyContext c;
Component(this.c);
MyComponent(this.c);
}

View File

@ -6,10 +6,12 @@ import 'index.dart' as i3;
main() {
reflector
..registerType(i0.Component, {
"factory": (i1.MyContext c) => new i0.Component(c),
..registerType(i0.MyComponent, {
"factory": (i1.MyContext c) => new i0.MyComponent(c),
"parameters": const [const [i1.MyContext]],
"annotations": const [const i2.Directive(context: const [i1.MyContext])]
"annotations": const [
const i2.Component(componentServices: const [i1.MyContext])
]
});
i3.main();
}

View File

@ -2,7 +2,7 @@ library bar;
import 'package:angular2/src/core/annotations/annotations.dart';
@Directive(context: 'soup')
class Component {
Component();
@Component(selector: '[soup]')
class MyComponent {
MyComponent();
}

View File

@ -5,10 +5,10 @@ import 'index.dart' as i2;
main() {
reflector
..registerType(i0.Component, {
"factory": () => new i0.Component(),
..registerType(i0.MyComponent, {
"factory": () => new i0.MyComponent(),
"parameters": const [const []],
"annotations": const [const i1.Directive(context: 'soup')]
"annotations": const [const i1.Component(selector: '[soup]')]
});
i2.main();
}

View File

@ -3,5 +3,5 @@ library web_foo;
import 'bar.dart';
void main() {
new Component('Things');
new MyComponent('Things');
}

View File

@ -2,5 +2,5 @@ library bar;
import 'package:angular2/src/core/annotations/annotations.dart';
@Directive(context: 'soup')
class Component {}
@Component(selector: '[soup]')
class MyComponent {}

View File

@ -5,10 +5,10 @@ import 'index.dart' as i2;
main() {
reflector
..registerType(i0.Component, {
"factory": () => new i0.Component(),
..registerType(i0.MyComponent, {
"factory": () => new i0.MyComponent(),
"parameters": const [const []],
"annotations": const [const i1.Directive(context: 'soup')]
"annotations": const [const i1.Component(selector: '[soup]')]
});
i2.main();
}

View File

@ -3,5 +3,5 @@ library web_foo;
import 'bar.dart';
void main() {
new Component();
new MyComponent();
}

View File

@ -1,4 +1,4 @@
library angular2.test.transform;
library angular2.test;
import 'dart:io';
import 'package:barback/barback.dart';
@ -8,8 +8,6 @@ import 'package:dart_style/dart_style.dart';
import 'package:unittest/unittest.dart';
import 'package:unittest/vm_config.dart';
import 'common.dart';
main() {
useVMConfiguration();
@ -41,7 +39,8 @@ void _runTests() {
inputs: {
'a|web/index.html': 'common.html',
'a|web/index.dart': 'html_entry_point_files/index.dart',
'angular2|lib/src/core/annotations/annotations.dart': 'common.dart'
'angular2|lib/src/core/annotations/annotations.dart':
'../../lib/src/core/annotations/annotations.dart'
},
outputs: {
'a|web/index.html': 'html_entry_point_files/expected/index.html'
@ -51,7 +50,8 @@ void _runTests() {
'a|web/index.html': 'common.html',
'a|web/index.dart': 'simple_annotation_files/index.dart',
'a|web/bar.dart': 'simple_annotation_files/bar.dart',
'angular2|lib/src/core/annotations/annotations.dart': 'common.dart'
'angular2|lib/src/core/annotations/annotations.dart':
'../../lib/src/core/annotations/annotations.dart'
},
outputs: {
'a|web/index.bootstrap.dart':
@ -63,7 +63,8 @@ void _runTests() {
'a|web/index.dart': 'two_deps_files/index.dart',
'a|web/foo.dart': 'two_deps_files/foo.dart',
'a|web/bar.dart': 'two_deps_files/bar.dart',
'angular2|lib/src/core/annotations/annotations.dart': 'common.dart'
'angular2|lib/src/core/annotations/annotations.dart':
'../../lib/src/core/annotations/annotations.dart'
},
outputs: {
'a|web/index.bootstrap.dart':
@ -75,29 +76,20 @@ void _runTests() {
'a|web/index.dart': 'list_of_types_files/index.dart',
'a|web/foo.dart': 'list_of_types_files/foo.dart',
'a|web/bar.dart': 'list_of_types_files/bar.dart',
'angular2|lib/src/core/annotations/annotations.dart': 'common.dart'
'angular2|lib/src/core/annotations/annotations.dart':
'../../lib/src/core/annotations/annotations.dart'
},
outputs: {
'a|web/index.bootstrap.dart':
'list_of_types_files/expected/index.bootstrap.dart'
}),
new TestConfig('Component ctor with default value',
inputs: {
'a|web/index.html': 'common.html',
'a|web/index.dart': 'ctor_with_default_value_files/index.dart',
'a|web/bar.dart': 'ctor_with_default_value_files/bar.dart',
'angular2|lib/src/core/annotations/annotations.dart': 'common.dart'
},
outputs: {
'a|web/index.bootstrap.dart':
'ctor_with_default_value_files/expected/index.bootstrap.dart'
}),
new TestConfig('Component with synthetic Constructor',
inputs: {
'a|web/index.html': 'common.html',
'a|web/index.dart': 'synthetic_ctor_files/index.dart',
'a|web/bar.dart': 'synthetic_ctor_files/bar.dart',
'angular2|lib/src/core/annotations/annotations.dart': 'common.dart'
'angular2|lib/src/core/annotations/annotations.dart':
'../../lib/src/core/annotations/annotations.dart'
},
outputs: {
'a|web/index.bootstrap.dart':

View File

@ -1,13 +1,13 @@
library bar;
import 'package:angular2/src/core/annotations/annotations.dart';
import 'foo.dart';
import 'foo.dart' as prefix;
@Directive(context: const MyContext(contextString))
class Component2 {
final MyContext c;
@Component(selector: prefix.preDefinedSelector)
class MyComponent {
final prefix.MyContext c;
final String generatedValue;
Component2(this.c, String inValue) {
MyComponent(this.c, String inValue) {
generatedValue = 'generated ' + inValue;
}
}

View File

@ -6,12 +6,12 @@ import 'index.dart' as i3;
main() {
reflector
..registerType(i0.Component2, {
..registerType(i0.MyComponent, {
"factory":
(i1.MyContext c, String inValue) => new i0.Component2(c, inValue),
(i1.MyContext c, String inValue) => new i0.MyComponent(c, inValue),
"parameters": const [const [i1.MyContext, String]],
"annotations": const [
const i2.Directive(context: const i1.MyContext(i1.contextString))
const i2.Component(selector: i1.preDefinedSelector)
]
});
i3.main();

View File

@ -1,8 +1,8 @@
library foo;
const contextString = 'soup';
const preDefinedSelector = 'soup';
class MyContext {
final String s;
const MyContext(this.s);
final String selector;
const MyContext(this.selector);
}

View File

@ -3,5 +3,5 @@ library web_foo;
import 'bar.dart';
void main() {
new Component('Things');
new MyComponent('Things');
}