981c4b11df
This means all imports of unittest in our test code had to change to include 'lib' in the path. While doing that change I changed the library/imports to the new syntax in the affected files. Review URL: https://codereview.chromium.org//11301046 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14443 260f80e4-7a28-3924-810f-c04153c831b5
76 lines
2.2 KiB
Dart
76 lines
2.2 KiB
Dart
// 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 '../../pkg/unittest/lib/unittest.dart';
|
|
import '../../pkg/unittest/lib/html_config.dart';
|
|
import 'dart:html';
|
|
|
|
main() {
|
|
useHtmlConfiguration();
|
|
|
|
var isUnknownElement =
|
|
predicate((x) => x is UnknownElement, 'is an UnknownELement');
|
|
|
|
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, isUnknownElement);
|
|
expect(bar, isUnknownElement);
|
|
expect(query('#foo'), equals(foo));
|
|
expect(query('#bar'), equals(bar));
|
|
});
|
|
|
|
test('dispatch-fail', () {
|
|
expect(() => foo.method1(), throwsNoSuchMethodError);
|
|
expect(() => foo.field1, throwsNoSuchMethodError);
|
|
expect(() { foo.field1 = 42; }, throwsNoSuchMethodError);
|
|
});
|
|
|
|
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 NoSuchMethodError(element, name, args, {});
|
|
}
|
|
dynamicUnknownElementDispatcher = dispatch;
|
|
|
|
expect(foo.x, equals(42));
|
|
expect(() { foo.x = 7; }, throwsNoSuchMethodError);
|
|
expect(foo.id, equals('foo'));
|
|
expect(() => bar.x, throwsNoSuchMethodError);
|
|
bar.y = 11;
|
|
expect(bar.y, equals(11));
|
|
expect(foo.baz('hello'), equals('foo - hello'));
|
|
});
|
|
}
|