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

Side by Side Diff: tests/language/src/InterfaceFactoryTest.dart

Issue 10248007: test rename overhaul: step 8 - language tests (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 7 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
(Empty)
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
3 // BSD-style license that can be found in the LICENSE file.
4 //
5 // Test that the two major variations of interface factories work.
6
7 // Variant 1. The factory class implements the interface and provides
8 // a default implementation of the interface.
9
10 interface Interface1 default DefaultImplementation {
11 // first parameter type 'var' not a subtype of 'int' in default implementation
12 Interface1(var secret); /// static type warning
13 Interface1.named();
14
15 GetSecret();
16 }
17
18 class DefaultImplementation implements Interface1 {
19 int _secret;
20
21 DefaultImplementation(int this._secret) {}
22 DefaultImplementation.named() : this._secret = 11 {}
23
24 int GetSecret() { return _secret; }
25
26 static testMain() {
27 Expect.equals(7, new Interface1(7).GetSecret());
28 Expect.equals(11, new Interface1.named().GetSecret());
29 }
30 }
31
32 // Variant 2. The factory class provides factory constructors for the
33 // interface.
34
35 interface Interface2 default FactoryProvider {
36 Interface2(var secret);
37 Interface2.named();
38
39 GetSecret();
40 }
41
42 class SomeImplementation implements Interface2 {
43 String _secret;
44
45 SomeImplementation(String one, String two) : _secret = "${one}${two}" {}
46
47 String GetSecret() { return _secret; }
48 }
49
50 // Note that FactoryProvider does not implement Interface2.
51 class FactoryProvider {
52 factory Interface2(var secret) {
53 return new SomeImplementation(secret, secret);
54 }
55
56 factory Interface2.named() {
57 return new SomeImplementation("Named", "Constructor");
58 }
59
60 static testMain() {
61 Expect.equals("cobracobra", new Interface2("cobra").GetSecret());
62 Expect.equals("NamedConstructor", new Interface2.named().GetSecret());
63 }
64 }
65
66 main() {
67 DefaultImplementation.testMain();
68 FactoryProvider.testMain();
69 }
OLDNEW
« no previous file with comments | « tests/language/src/InterfaceFactoryMultiTest.dart ('k') | tests/language/src/InterfaceFunctionTypeAlias1NegativeTest.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698