| Index: tests/html/unknownelement_test.dart
|
| diff --git a/tests/html/unknownelement_test.dart b/tests/html/unknownelement_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..59c0b9084d477661005fa403893d85b0cfdcc656
|
| --- /dev/null
|
| +++ b/tests/html/unknownelement_test.dart
|
| @@ -0,0 +1,72 @@
|
| +// Copyright (c) 2012, 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('UnknownElementTest');
|
| +#import('../../lib/unittest/unittest.dart');
|
| +#import('../../lib/unittest/html_config.dart');
|
| +#import('dart:html');
|
| +
|
| +main() {
|
| + useHtmlConfiguration();
|
| +
|
| + var foo = new Element.tag('foo');
|
| + foo.id = 'foo';
|
| + var bar = new Element.tag('bar');
|
| + bar.id = 'bar';
|
| + document.body.nodes.addAll([foo, bar]);
|
| +
|
| + test('type-check', () {
|
| + expect(foo is UnknownElement, isTrue);
|
| + expect(bar is UnknownElement, isTrue);
|
| + expect(query('#foo'), equals(foo));
|
| + expect(query('#bar'), equals(bar));
|
| + });
|
| +
|
| + test('dispatch-fail', () {
|
| + expect(() => foo.method1(), throwsException);
|
| + expect(() => foo.field1, throwsException);
|
| + expect(() { foo.field1 = 42; }, throwsException);
|
| + });
|
| +
|
| + test('dispatch', () {
|
| + dispatch(element, name, args) {
|
| + if (element.xtag == null) {
|
| + element.xtag = new Map();
|
| + }
|
| + var map = element.xtag;
|
| +
|
| + // FIXME: Remove once VM and Dart2JS converge.
|
| + name = name.replaceFirst(' ', ':');
|
| + switch (element.tagName.toLowerCase()) {
|
| + case 'foo':
|
| + switch (name) {
|
| + case 'get:x':
|
| + return 42;
|
| + case 'baz':
|
| + return '${element.id} - ${args[0]}';
|
| + }
|
| + break;
|
| + case 'bar':
|
| + switch (name) {
|
| + case 'get:y':
|
| + return map['y'];
|
| + case 'set:y':
|
| + map['y'] = args[0];
|
| + return;
|
| + }
|
| + break;
|
| + }
|
| + throw new NoSuchMethodException(element, name, args);
|
| + }
|
| + dynamicUnknownElementDispatcher = dispatch;
|
| +
|
| + expect(foo.x, equals(42));
|
| + expect(() { foo.x = 7; }, throwsException);
|
| + expect(foo.id, equals('foo'));
|
| + expect(() => bar.x, throwsException);
|
| + bar.y = 11;
|
| + expect(bar.y, equals(11));
|
| + expect(foo.baz('hello'), equals('foo - hello'));
|
| + });
|
| +}
|
|
|