| Index: packages/polymer/test/unbind_test.dart
|
| diff --git a/packages/polymer/test/unbind_test.dart b/packages/polymer/test/unbind_test.dart
|
| deleted file mode 100644
|
| index 248ee51f98f88fbebfe37635c8e8ddb641a7d615..0000000000000000000000000000000000000000
|
| --- a/packages/polymer/test/unbind_test.dart
|
| +++ /dev/null
|
| @@ -1,123 +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 polymer.test.unbind_test;
|
| -
|
| -import 'dart:async' show Future, scheduleMicrotask;
|
| -import 'dart:html';
|
| -
|
| -@MirrorsUsed(targets: const [Polymer], override: 'polymer.test.unbind_test')
|
| -import 'dart:mirrors' show reflect, reflectClass, MirrorSystem, MirrorsUsed;
|
| -
|
| -import 'package:polymer/polymer.dart';
|
| -import 'package:unittest/unittest.dart';
|
| -import 'package:unittest/html_config.dart';
|
| -
|
| -@CustomTag('x-test')
|
| -class XTest extends PolymerElement {
|
| - @observable var foo = '';
|
| - @observable var bar;
|
| -
|
| - bool fooWasChanged = false;
|
| - var validBar;
|
| -
|
| - factory XTest() => new Element.tag('x-test');
|
| - XTest.created() : super.created();
|
| -
|
| - ready() {}
|
| -
|
| - fooChanged() {
|
| - fooWasChanged = true;
|
| - }
|
| -
|
| - barChanged() {
|
| - validBar = bar;
|
| - }
|
| -
|
| - bool get isBarValid => validBar == bar;
|
| -}
|
| -
|
| -main() => initPolymer().then((zone) => zone.run(() {
|
| - useHtmlConfiguration();
|
| -
|
| - setUp(() => Polymer.onReady);
|
| -
|
| - test('unbind', unbindTests);
|
| -}));
|
| -
|
| -Future testAsync(List<Function> tests, int delayMs, [List args]) {
|
| - if (tests.length == 0) return new Future.value();
|
| - // TODO(jmesserly): CustomElements.takeRecords();
|
| - return new Future.delayed(new Duration(milliseconds: delayMs), () {
|
| - if (args == null) args = [];
|
| - var lastArgs = Function.apply(tests.removeAt(0), args);
|
| - return testAsync(tests, delayMs, lastArgs);
|
| - });
|
| -}
|
| -
|
| -// TODO(sorvell): In IE, the unbind time is indeterminate, so wait an
|
| -// extra beat.
|
| -delay(x) => new Future.delayed(new Duration(milliseconds: 50), () => x);
|
| -
|
| -// TODO(jmesserly): fix this when it's easier to get a private symbol.
|
| -final unboundSymbol = reflectClass(Polymer).declarations.keys
|
| - .firstWhere((s) => MirrorSystem.getName(s) == '_unbound');
|
| -final observersSymbol = reflectClass(Polymer).declarations.keys
|
| - .firstWhere((s) => MirrorSystem.getName(s) == '_observers');
|
| -
|
| -_unbound(node) => reflect(node).getField(unboundSymbol).reflectee;
|
| -_observerCount(node) =>
|
| - reflect(node).getField(observersSymbol).reflectee.length;
|
| -
|
| -unbindTests() {
|
| - var xTest = document.querySelector('x-test');
|
| - xTest.foo = 'bar';
|
| - scheduleMicrotask(Observable.dirtyCheck);
|
| -
|
| - return delay(null).then((_) {
|
| - expect(_unbound(xTest), null, reason: 'element is bound when inserted');
|
| - expect(xTest.fooWasChanged, true, reason: 'element is actually bound');
|
| - // Dart note: we don't have a way to check for the global count of
|
| - // observables/bindables, so we just check the count in the node.
|
| - expect(_observerCount(xTest), greaterThan(0));
|
| - xTest.remove();
|
| - }).then(delay).then((_) {
|
| - expect(_unbound(xTest), true, reason: 'element is unbound when removed');
|
| - expect(_observerCount(xTest), 0);
|
| - return new XTest();
|
| - }).then(delay).then((node) {
|
| - expect(_unbound(node), null, reason: 'element is bound when not inserted');
|
| - node.foo = 'bar';
|
| - expect(_observerCount(node), greaterThan(0));
|
| - scheduleMicrotask(Observable.dirtyCheck);
|
| - return node;
|
| - }).then(delay).then((node) {
|
| - expect(node.fooWasChanged, true, reason: 'node is actually bound');
|
| - node.unbindAll();
|
| - var n = new XTest();
|
| - n.cancelUnbindAll();
|
| - return n;
|
| - }).then(delay).then((node) {
|
| - expect(_unbound(node), null,
|
| - reason: 'element is bound when cancelUnbindAll is called');
|
| - expect(_observerCount(node), greaterThan(0));
|
| - node.unbindAll();
|
| - expect(_unbound(node), true,
|
| - reason: 'element is unbound when unbindAll is called');
|
| - expect(_observerCount(node), 0);
|
| - var n = new XTest()..id = 'foobar!!!';
|
| - document.body.append(n);
|
| - return n;
|
| - }).then(delay).then((node) {
|
| - expect(_unbound(node), null,
|
| - reason: 'element is bound when manually inserted');
|
| - expect(_observerCount(node), greaterThan(0));
|
| - node.remove();
|
| - return node;
|
| - }).then(delay).then((node) {
|
| - expect(_unbound(node), true,
|
| - reason: 'element is unbound when manually removed is called');
|
| - expect(_observerCount(node), 0);
|
| - });
|
| -}
|
|
|