| Index: test/src/common/polymer_descriptor_test.dart
 | 
| diff --git a/test/src/common/polymer_descriptor_test.dart b/test/src/common/polymer_descriptor_test.dart
 | 
| index 7df44b0c7490f8d1568d4ed48129bcc7f699c499..664386641f8bae3bcc8cb9f0014f2c40425813c2 100644
 | 
| --- a/test/src/common/polymer_descriptor_test.dart
 | 
| +++ b/test/src/common/polymer_descriptor_test.dart
 | 
| @@ -10,16 +10,11 @@ import 'package:polymer/polymer.dart';
 | 
|  import 'package:polymer/src/common/polymer_descriptor.dart';
 | 
|  
 | 
|  main() async {
 | 
| -
 | 
|    await initPolymer();
 | 
|  
 | 
|    test('can build polymer descriptor objects', () {
 | 
| -    var annotation = const PolymerRegister(
 | 
| -        'test-element',
 | 
| -        extendsTag: 'div',
 | 
| -        hostAttributes: const {
 | 
| -          'foo': 'bar',
 | 
| -        });
 | 
| +    var annotation = const PolymerRegister('test-element',
 | 
| +        extendsTag: 'div', hostAttributes: const {'foo': 'bar',});
 | 
|      JsObject descriptor = createPolymerDescriptor(Test, annotation);
 | 
|  
 | 
|      expect(descriptor['is'], annotation.tagName);
 | 
| @@ -30,26 +25,38 @@ main() async {
 | 
|      var properties = descriptor['properties'];
 | 
|      expectProperty(properties['myString'], type: context['String']);
 | 
|      expectProperty(properties['myInt'], type: context['Number'], notify: true);
 | 
| -    expectProperty(properties['myDouble'], type: context['Number'],
 | 
| -        observer: 'myDoubleChanged');
 | 
| -    expectProperty(properties['myNum'], type: context['Number'],
 | 
| -        reflectToAttribute: true);
 | 
| +    expectProperty(properties['myDouble'],
 | 
| +        type: context['Number'], observer: 'myDoubleChanged');
 | 
| +    expectProperty(properties['myNum'],
 | 
| +        type: context['Number'], reflectToAttribute: true);
 | 
|      expectProperty(properties['myBool'], type: context['Boolean']);
 | 
|      expectProperty(properties['myMap']);
 | 
|      expectProperty(properties['myStringMap']);
 | 
|      expectProperty(properties['myList'], type: context['Array']);
 | 
|      expectProperty(properties['myStringList'], type: context['Array']);
 | 
|      expectProperty(properties['myDateTime'], type: context['Date']);
 | 
| -    expectProperty(properties['computedNum'], type: context['Number'],
 | 
| +    expectProperty(properties['computedNum'],
 | 
| +        type: context['Number'],
 | 
|          computed: 'myNumsCombined(myInt, myDouble, myNum)');
 | 
| +    // From the dart behaviors!
 | 
| +    expectProperty(properties['behaviorOneProperty'], type: context['String']);
 | 
| +    expectProperty(properties['behaviorTwoProperty'], type: context['Number']);
 | 
|  
 | 
|      var observers = descriptor['observers'];
 | 
| -    expect(observers[0], 'myStringChanged(myString)');
 | 
| -    expect(observers[1], 'myDoubleOrIntChanged(myDouble, myInt)');
 | 
| +    expect(observers, contains('myStringChanged(myString)'));
 | 
| +    expect(observers, contains('myDoubleOrIntChanged(myDouble, myInt)'));
 | 
| +    // From the dart behaviors!
 | 
| +    expect(
 | 
| +        observers, contains('behaviorOnePropertyChanged(behaviorOneProperty)'));
 | 
| +    expect(
 | 
| +        observers, contains('behaviorTwoPropertyChanged(behaviorTwoProperty)'));
 | 
|  
 | 
|      var listeners = descriptor['listeners'];
 | 
|      expect(listeners['tap'], 'onTap');
 | 
|      expect(listeners['someId.tap'], 'onSomeIdTap');
 | 
| +    // From the dart behaviors!
 | 
| +    expect(listeners['someEventOne'], 'onSomeEventOne');
 | 
| +    expect(listeners['someEventTwo'], 'onSomeEventTwo');
 | 
|  
 | 
|      expect(descriptor['ready'] is JsFunction, isTrue);
 | 
|      expect(descriptor['attached'] is JsFunction, isTrue);
 | 
| @@ -57,11 +64,59 @@ main() async {
 | 
|      expect(descriptor['handleSomeEvent'] is JsFunction, isTrue);
 | 
|      expect(descriptor['myDoubleChanged'] is JsFunction, isTrue);
 | 
|      expect(descriptor['myNumsCombined'] is JsFunction, isTrue);
 | 
| +    // From the dart behaviors!
 | 
| +    expect(descriptor['behaviorOneExposedMethod'] is JsFunction, isTrue);
 | 
| +    expect(descriptor['behaviorTwoExposedMethod'] is JsFunction, isTrue);
 | 
| +
 | 
| +    expect(descriptor['behaviors'], isNotNull);
 | 
| +    expect(descriptor['behaviors'].length, 4);
 | 
| +    expect(descriptor['behaviors'][0], context['Foo']['JsBehaviorOne']);
 | 
| +    expect(descriptor['behaviors'][1], behavior.getBehavior(DartBehaviorOne));
 | 
| +    expect(descriptor['behaviors'][2], context['Foo']['JsBehaviorTwo']);
 | 
| +    expect(descriptor['behaviors'][3], behavior.getBehavior(DartBehaviorTwo));
 | 
| +    expect(descriptor['behaviors'][1], isNot(descriptor['behaviors'][3]));
 | 
|    });
 | 
|  }
 | 
|  
 | 
| +@BehaviorProxy(const ['Foo', 'JsBehaviorOne'])
 | 
| +class JsBehaviorOne {}
 | 
| +
 | 
| +@BehaviorProxy(const ['Foo', 'JsBehaviorTwo'])
 | 
| +class JsBehaviorTwo {}
 | 
| +
 | 
| +@behavior
 | 
| +class DartBehaviorOne {
 | 
| +  @property
 | 
| +  String behaviorOneProperty;
 | 
| +
 | 
| +  @Observe('behaviorOneProperty')
 | 
| +  void behaviorOnePropertyChanged() {}
 | 
| +
 | 
| +  @Listen('someEventOne')
 | 
| +  void onSomeEventOne() {}
 | 
| +
 | 
| +  @eventHandler
 | 
| +  void behaviorOneExposedMethod() {}
 | 
| +}
 | 
| +
 | 
| +@behavior
 | 
| +class DartBehaviorTwo {
 | 
| +  @property
 | 
| +  int behaviorTwoProperty;
 | 
| +
 | 
| +  @Observe('behaviorTwoProperty')
 | 
| +  void behaviorTwoPropertyChanged() {}
 | 
| +
 | 
| +  @Listen('someEventTwo')
 | 
| +  void onSomeEventTwo() {}
 | 
| +
 | 
| +  @eventHandler
 | 
| +  void behaviorTwoExposedMethod() {}
 | 
| +}
 | 
| +
 | 
|  @jsProxyReflectable
 | 
| -class Test {
 | 
| +class Test extends Object
 | 
| +    with JsBehaviorOne, DartBehaviorOne, JsBehaviorTwo, DartBehaviorTwo {
 | 
|    @property
 | 
|    String myString;
 | 
|    @Property(notify: true)
 | 
| @@ -113,9 +168,14 @@ class Test {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -void expectProperty(JsObject actual, {
 | 
| -    computed: null, defined: true, notify: false, observer: null,
 | 
| -    reflectToAttribute: false, type: null, value: isNotNull}) {
 | 
| +void expectProperty(JsObject actual,
 | 
| +    {computed: null,
 | 
| +    defined: true,
 | 
| +    notify: false,
 | 
| +    observer: null,
 | 
| +    reflectToAttribute: false,
 | 
| +    type: null,
 | 
| +    value: isNotNull}) {
 | 
|    var expected = {
 | 
|      'computed': computed,
 | 
|      'defined': defined,
 | 
| 
 |