OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. |
| 4 |
| 5 import 'dart:async'; |
| 6 import 'dart:html'; |
| 7 import 'package:unittest/unittest.dart'; |
| 8 import 'package:unittest/html_config.dart'; |
| 9 import 'package:polymer/polymer.dart'; |
| 10 |
| 11 export 'package:polymer/init.dart'; |
| 12 |
| 13 class XBaz extends PolymerElement { |
| 14 @published |
| 15 int get val => readValue(#val); |
| 16 set val(v) => writeValue(#val, v); |
| 17 |
| 18 XBaz.created() : super.created(); |
| 19 } |
| 20 |
| 21 class XBar extends PolymerElement { |
| 22 @published |
| 23 int get val => readValue(#val); |
| 24 set val(v) => writeValue(#val, v); |
| 25 |
| 26 XBar.created() : super.created(); |
| 27 } |
| 28 |
| 29 class XBat extends PolymerElement { |
| 30 @published |
| 31 int get val => readValue(#val); |
| 32 set val(v) => writeValue(#val, v); |
| 33 |
| 34 XBat.created() : super.created(); |
| 35 } |
| 36 |
| 37 class XFoo extends PolymerElement { |
| 38 @published |
| 39 int get val => readValue(#val); |
| 40 set val(v) => writeValue(#val, v); |
| 41 |
| 42 XFoo.created() : super.created(); |
| 43 } |
| 44 |
| 45 @CustomTag('bind-properties-test') |
| 46 class XTest extends PolymerElement { |
| 47 XTest.created() : super.created(); |
| 48 |
| 49 @published var obj; |
| 50 |
| 51 ready() { |
| 52 obj = toObservable({'path': {'to': {'value': 3}}}); |
| 53 readyCalled(); |
| 54 } |
| 55 } |
| 56 |
| 57 var completer = new Completer(); |
| 58 waitForElementReady(_) => completer.future; |
| 59 readyCalled() { |
| 60 completer.complete(null); |
| 61 } |
| 62 |
| 63 @initMethod |
| 64 init() { |
| 65 // TODO(sigmund): investigate why are we still seeing failures due to the |
| 66 // order of registrations, then use @CustomTag instead of this. |
| 67 Polymer.register('x-foo', XFoo); |
| 68 Polymer.register('x-bar', XBar); |
| 69 Polymer.register('x-baz', XBaz); |
| 70 Polymer.register('x-bat', XBat); |
| 71 |
| 72 useHtmlConfiguration(); |
| 73 |
| 74 setUp(() => Polymer.onReady.then(waitForElementReady)); |
| 75 |
| 76 test('bind properties test', () { |
| 77 var e = document.querySelector('bind-properties-test'); |
| 78 var foo = e.shadowRoot.querySelector('#foo'); |
| 79 var bar = foo.shadowRoot.querySelector('#bar'); |
| 80 var bat = foo.shadowRoot.querySelector('#bat'); |
| 81 var baz = bar.shadowRoot.querySelector('#baz'); |
| 82 |
| 83 expect(foo.val, 3); |
| 84 expect(bar.val, 3); |
| 85 expect(bat.val, 3); |
| 86 expect(baz.val, 3); |
| 87 |
| 88 foo.val = 4; |
| 89 |
| 90 expect(foo.val, 4); |
| 91 expect(bar.val, 4); |
| 92 expect(bat.val, 4); |
| 93 expect(baz.val, 4); |
| 94 |
| 95 baz.val = 5; |
| 96 |
| 97 expect(foo.val, 5); |
| 98 expect(bar.val, 5); |
| 99 expect(bat.val, 5); |
| 100 expect(baz.val, 5); |
| 101 |
| 102 e.obj['path']['to']['value'] = 6; |
| 103 |
| 104 expect(foo.val, 6); |
| 105 expect(bar.val, 6); |
| 106 expect(bat.val, 6); |
| 107 expect(baz.val, 6); |
| 108 }); |
| 109 } |
OLD | NEW |