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

Side by Side Diff: tests/language/call_operator_test.dart

Issue 10834270: Implement call operator. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 4 months 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 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. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 5
6 // simple test with no types in signature 6 // simple test with no types in signature
7 class A1 { 7 class A1 {
8 operator call() => 42; 8 call() => 42;
9 } 9 }
10 10
11 // same test, include return type 11 // same test, include return type
12 class A2 { 12 class A2 {
13 int operator call() => 35; 13 int call() => 35;
14 } 14 }
15 15
16 class B { 16 class B {
17 call() => 28; // expect warning, should use 'operator call' 17 call() => 28;
18 } 18 }
19 19
20 // A call() operator can have any arity 20 // A call() operator can have any arity
21 class C { 21 class C {
22 operator call(arg) => 7 * arg; 22 call(arg) => 7 * arg;
23 } 23 }
24 24
25 // Test named arguments 25 // Test named arguments
26 class D { 26 class D {
27 operator call([arg=6]) => 7 * arg; 27 call([arg=6]) => 7 * arg;
28 } 28 }
29 29
30 // non-trvial method body combination of positional and named 30 // non-trivial method body combination of positional and named
31 class E { 31 class E {
32 String operator call(String str, [int count=1]) { 32 String call(String str, [int count=1]) {
33 String result = ""; 33 String result = "";
kasperl 2012/08/10 10:16:28 How about using a StringBuffer here? Seems cleaner
floitsch 2012/08/10 12:19:16 Done.
34 for (var i = 0; i < count; i++) { 34 for (var i = 0; i < count; i++) {
35 result += str; 35 result = "$result$str";
36 if (i < count -1) { 36 if (i < count -1) {
kasperl 2012/08/10 10:16:28 -1 => - 1
floitsch 2012/08/10 12:19:16 Done.
37 result += ':'; 37 result = '$result:';
38 } 38 }
39 } 39 }
40 return result; 40 return result;
41 } 41 }
42 } 42 }
43 43
44 main() { 44 main() {
45 var a1 = new A1(); 45 var a1 = new A1();
46 Expect.equals(42, a1()); 46 Expect.equals(42, a1());
47 Expect.equals(42, a1.call()); 47 Expect.equals(42, a1.call());
(...skipping 19 matching lines...) Expand all
67 Expect.equals(14, d.call(arg:2)); 67 Expect.equals(14, d.call(arg:2));
68 68
69 var e = new E(); 69 var e = new E();
70 Expect.equals("foo", e("foo")); 70 Expect.equals("foo", e("foo"));
71 Expect.equals("foo:foo", e("foo", 2)); 71 Expect.equals("foo:foo", e("foo", 2));
72 Expect.equals("foo:foo:foo", e("foo", count:3)); 72 Expect.equals("foo:foo:foo", e("foo", count:3));
73 Expect.equals("foo", e.call("foo")); 73 Expect.equals("foo", e.call("foo"));
74 Expect.equals("foo:foo", e.call("foo", 2)); 74 Expect.equals("foo:foo", e.call("foo", 2));
75 Expect.equals("foo:foo:foo", e.call("foo", count:3)); 75 Expect.equals("foo:foo:foo", e.call("foo", count:3));
76 } 76 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698