blob: 7eec80a0d1fce2a33e72f9c17e44c37d9c79faba [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.
class XFoo extends PolymerElement {
XFoo.created() : super.created();
@published var Foo;
}
class XBar extends XFoo {
XBar.created() : super.created();
@published var Bar;
}
@CustomTag('x-zot')
class XZot extends XBar {
XZot.created() : super.created();
var m;
@published int zot = 3;
}
// TODO(sigmund): uncomment this part of the test too (see dartbug.com/14559)
// class XWho extends XZot {
// XWho.created() : super.created();
//
// @published var zap;
// }
@CustomTag('x-squid')
class XSquid extends XZot {
XSquid.created() : super.created();
@published int baz = 13;
@published int zot = 5;
@published int squid = 7;
}
main() {
initPolymer();
useHtmlConfiguration();
setUp(() => Polymer.onReady);
test('published properties', () {
published(tag) => (query('polymer-element[name=$tag]')
as PolymerDeclaration).publishedProperties;
expect(published('x-zot'), [#Foo, #Bar, #zot, #m]);
expect(published('x-squid'), [#Foo, #Bar, #zot, #m, #baz, #squid]);
expect(published('x-noscript'), [#Foo, #Bar, #zot, #m]);
// TODO(sigmund): uncomment, see above
// expect(published('x-squid'), [#Foo, #Bar, #zot, #zap, #baz, #squid]);
});
}