blob: e31b74f92ad27ce26092874fc5d6b5e7355cf0fb [file] [log] [blame]
// 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.
import 'dart:html';
import 'package:unittest/unittest.dart';
import 'package:unittest/html_config.dart';
import 'package:polymer/polymer.dart';
// Dart note: unlike JS, you can't publish something that doesn't
// have a corresponding field because we can't dynamically add properties.
// So we define XFoo and XBar types here.
@CustomTag('x-foo')
class XFoo extends PolymerElement {
@observable var Foo;
@observable var baz;
}
@CustomTag('x-bar')
class XBar extends XFoo {
@observable var Bar;
}
@CustomTag('x-zot')
class XZot extends XBar {
@published int zot = 3;
}
@CustomTag('x-squid')
class XSquid extends XZot {
@published int baz = 13;
@published int zot = 5;
@published int squid = 7;
}
main() {
useHtmlConfiguration();
test('published properties', () {
published(tag) =>
query('polymer-element[name=$tag]').xtag.publishedProperties;
print(published('x-foo'));
print(published('x-bar'));
print(published('x-zot'));
print(published('x-squid'));
expect(published('x-foo'), ['Foo', 'baz']);
expect(published('x-bar'), ['Foo', 'baz', 'Bar']);
expect(published('x-zot'), ['Foo', 'baz', 'Bar', 'zot']);
expect(published('x-squid'), ['Foo', 'baz', 'Bar', 'zot', 'squid']);
});
}