// 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('