Chromium Code Reviews| Index: tests/html/custom_elements_test.dart |
| diff --git a/tests/html/custom_elements_test.dart b/tests/html/custom_elements_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..6ea6631947ea7a2a859a3344f0466fc93cc4cfdf |
| --- /dev/null |
| +++ b/tests/html/custom_elements_test.dart |
| @@ -0,0 +1,72 @@ |
| +// 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 blob_test; |
| +import '../../pkg/unittest/lib/unittest.dart'; |
| +import '../../pkg/unittest/lib/html_config.dart'; |
| +import 'dart:html'; |
| + |
| +class CustomType extends Element { |
| + bool onCreatedCalled = false; |
| + void onCreated() { |
| + onCreatedCalled = true; |
| + } |
| +} |
| + |
| +class NotAnElement {} |
| + |
| +main() { |
| + useHtmlConfiguration(); |
| + |
| + test('register', () { |
| + document.register('x-type1', CustomType); |
| + |
| + var element = new Element.tag('x-type1'); |
| + expect(element, isNotNull); |
| + expect(element is CustomType, isTrue); |
| + expect(element.onCreatedCalled, isTrue); |
| + }); |
| + |
| + test('register twice', () { |
| + document.register('x-type2', CustomType); |
| + expect(() { |
| + document.register('x-type2', CustomType); |
| + }, throws, reason: 'Cannot register a tag more than once.'); |
| + |
| + document.register('x-type3', CustomType); |
| + |
| + var element = new Element.tag('x-type3'); |
| + expect(element, isNotNull); |
| + expect(element is CustomType, isTrue); |
| + }); |
| + |
| + test('register null', () { |
| + expect(() { |
| + document.register('x-type4', null); |
| + }, throws, reason: 'Cannot register a null type.'); |
| + }); |
| + |
| + test('register native', () { |
| + expect(() { |
| + document.register('x-type5', BodyElement); |
| + }, throws, reason: 'Cannot register a native element.'); |
| + }); |
| + |
| + test('register non-element', () { |
| + expect(() { |
| + document.register('x-type6', NotAnElement); |
| + }, throws, reason: 'Cannot register a non-element.'); |
| + }); |
| + |
| + test('pre-registration construction', () { |
| + var dom = new Element.html('<div><x-type7></x-type7></div>'); |
| + |
| + document.register('x-type7', CustomType); |
| + |
| + element = dom.children[0]; |
|
Anton Muhin
2013/02/08 12:51:03
what if I fetch element before document.register c
blois
2013/02/08 17:44:30
Added checks, it should be an UnknownElement. Afte
|
| + expect(element, isNotNull); |
| + expect(element is CustomType, isTrue); |
| + expect(element.onCreatedCalled, isTrue); |
| + }); |
| +} |