Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(199)

Side by Side Diff: pkg/dev_compiler/test/codegen/lib/html/js_typed_interop_rename_static_test.dart

Issue 2536823003: Fix handling of static names for JS interop and improve test coverage. (Closed)
Patch Set: \ Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « pkg/dev_compiler/lib/src/compiler/code_generator.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 @JS()
6 library js_typed_interop_rename_static_test;
7
8 import 'dart:html';
9
10 import 'package:js/js.dart';
11 import 'package:js/js_util.dart' as js_util;
12 import 'package:expect/minitest.dart';
13
14 @JS('JSTopLevelField')
15 external set topLevelFieldOnlySetter(v);
16
17 @JS('JSTopLevelField')
18 external get topLevelFieldOnlyGetter;
19
20 @JS()
21 external get topLevelFieldNoRename;
22
23 @JS()
24 external set topLevelSetterNoRename(v);
25
26 @JS()
27 external topLevelMethod(v);
28
29 @JS('topLevelMethod')
30 external renamedTopLevelMethod(v);
31
32 @JS('JSFoo')
33 class Foo {
34 @JS('JSBar')
35 external static get bar;
36
37 @JS('JSBar')
38 external static set bar(v);
39
40 @JS('JSBar2')
41 external static get bar2;
42
43 @JS('JSBaz')
44 external static set baz(v);
45
46 @JS('JSMethodAddBar')
47 external static addBar(a);
48 }
49
50 main() {
51 document.body.append(new ScriptElement()
52 ..type = 'text/javascript'
53 ..innerHtml = r"""
54 window.JSFoo = {
55 'JSBar': 42,
56 'JSBar2': 80,
57 'JSMethodAddBar': function(a,b) { return a + this.JSBar; }
58 };
59 window.JSTopLevelField = 91;
60 window.topLevelFieldNoRename = 8;
61 window.topLevelMethod = function(a) { return a * 2; };
62 """);
63
64 group('rename static', () {
65 test('getter', () {
66 expect(Foo.bar, equals(42));
67 expect(Foo.bar2, equals(80));
68 expect(topLevelFieldOnlyGetter, 91);
69 expect(topLevelFieldNoRename, 8);
70 });
71
72 test('setter', () {
73 Foo.baz = 100;
74 expect(js_util.getProperty(js_util.getProperty(window, 'JSFoo'), 'JSBaz'),
75 equals(100));
76 Foo.bar = 30;
77 expect(Foo.bar, equals(30));
78 expect(js_util.getProperty(js_util.getProperty(window, 'JSFoo'), 'JSBar'),
79 equals(30));
80 topLevelFieldOnlySetter = 83;
81 expect(topLevelFieldOnlyGetter, 83);
82 topLevelSetterNoRename = 10;
83 expect(js_util.getProperty(window, 'topLevelSetterNoRename'), 10);
84 });
85
86 test('method', () {
87 Foo.bar = 100;
88 expect(Foo.addBar(10), equals(110));
89 Foo.bar = 200;
90 expect(Foo.addBar(10), equals(210));
91 expect(topLevelMethod(10), equals(20));
92 expect(renamedTopLevelMethod(10), equals(20));
93 });
94 });
95 }
OLDNEW
« no previous file with comments | « pkg/dev_compiler/lib/src/compiler/code_generator.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698