forked from dart-lang/sdk
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwindow_nosuchmethod_test.dart
54 lines (46 loc) · 1.5 KB
/
window_nosuchmethod_test.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// 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('WindowNSMETest');
#import('../../pkg/unittest/unittest.dart');
#import('../../pkg/unittest/html_config.dart');
#import('dart:html', prefix: 'dom');
// Not defined in dom.Window.
foo(x) => x;
class Unused {
foo(x) => 'not $x';
}
int inscrutable(int x) => x == 0 ? 0 : x | inscrutable(x & (x - 1));
main() {
useHtmlConfiguration();
var things = [new Unused(), dom.window];
test('windowNonMethod', () {
var win = things[inscrutable(1)];
final message = foo("Hello World");
try {
String x = win.foo(message);
Expect.fail('Should not reach here: $x');
} on NoSuchMethodError catch (e) {
// Expected exception.
} on Exception catch (e) {
Expect.fail('Wrong exception: $e');
}
});
test('foo', () {
var win = things[inscrutable(0)];
String x = win.foo('bar');
Expect.equals('not bar', x);
});
// Use dom.window direclty in case the compiler does type inference.
test('windowNonMethod2', () {
final message = foo("Hello World");
try {
String x = dom.window.foo(message);
Expect.fail('Should not reach here: $x');
} on NoSuchMethodError catch (e) {
// Expected exception.
} on Exception catch (e) {
Expect.fail('Wrong exception: $e');
}
});
}