Chromium Code Reviews| Index: tests/language/mixin_field_test.dart |
| diff --git a/tests/language/mixin_field_test.dart b/tests/language/mixin_field_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..251aa50b0960bae2f1faf6d85bb2e8f61012eefa |
| --- /dev/null |
| +++ b/tests/language/mixin_field_test.dart |
| @@ -0,0 +1,118 @@ |
| +// Copyright (c) 2013, 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. |
| + |
| +class S { |
| + var foo = "S-foo"; |
| +} |
| + |
| +class M1 { |
| + final bar = "M1-bar"; |
| +} |
| + |
| +class M2 { |
| + var baz = "M2-baz"; |
| +} |
| + |
| +typedef C = S with M1; |
| +typedef D = S with M1, M2; |
| +typedef E = S with M2, M1; |
| + |
| +class F extends E { |
| + var fez = "F-fez"; |
| +} |
| + |
| +main() { |
| + var c = new C(); |
| + var d = new D(); |
| + var e = new E(); |
| + var f = new F(); |
| + |
| + Expect.equals("S-foo", c.foo); |
| + Expect.equals("S-foo", d.foo); |
| + Expect.equals("S-foo", e.foo); |
| + Expect.equals("S-foo", f.foo); |
| + |
| + Expect.equals("M1-bar", c.bar); |
| + Expect.equals("M1-bar", d.bar); |
| + Expect.equals("M1-bar", e.bar); |
| + Expect.equals("M1-bar", f.bar); |
| + |
| + Expect.throws(() => c.baz, (error) => error is NoSuchMethodError); |
|
ahe
2013/01/18 12:40:12
You could create a help function for: (error) => e
|
| + Expect.equals("M2-baz", d.baz); |
| + Expect.equals("M2-baz", e.baz); |
| + Expect.equals("M2-baz", f.baz); |
| + |
| + Expect.throws(() => c.fez, (error) => error is NoSuchMethodError); |
| + Expect.throws(() => d.fez, (error) => error is NoSuchMethodError); |
| + Expect.throws(() => e.fez, (error) => error is NoSuchMethodError); |
| + Expect.equals("F-fez", f.fez); |
| + |
| + c.foo = "S-foo-c"; |
| + Expect.equals("S-foo-c", c.foo); |
| + Expect.equals("S-foo", d.foo); |
| + Expect.equals("S-foo", e.foo); |
| + Expect.equals("S-foo", f.foo); |
| + |
| + d.foo = "S-foo-d"; |
| + Expect.equals("S-foo-c", c.foo); |
| + Expect.equals("S-foo-d", d.foo); |
| + Expect.equals("S-foo", e.foo); |
| + Expect.equals("S-foo", f.foo); |
| + |
| + e.foo = "S-foo-e"; |
| + Expect.equals("S-foo-c", c.foo); |
| + Expect.equals("S-foo-d", d.foo); |
| + Expect.equals("S-foo-e", e.foo); |
| + Expect.equals("S-foo", f.foo); |
| + |
| + f.foo = "S-foo-f"; |
| + Expect.equals("S-foo-c", c.foo); |
| + Expect.equals("S-foo-d", d.foo); |
| + Expect.equals("S-foo-e", e.foo); |
| + Expect.equals("S-foo-f", f.foo); |
| + |
| + Expect.throws(() => c.bar = 0, (error) => error is NoSuchMethodError); |
| + Expect.throws(() => d.bar = 0, (error) => error is NoSuchMethodError); |
| + Expect.throws(() => e.bar = 0, (error) => error is NoSuchMethodError); |
| + Expect.throws(() => f.bar = 0, (error) => error is NoSuchMethodError); |
| + Expect.equals("M1-bar", c.bar); |
| + Expect.equals("M1-bar", d.bar); |
| + Expect.equals("M1-bar", e.bar); |
| + Expect.equals("M1-bar", f.bar); |
| + |
| + Expect.throws(() => c.baz = 0, (error) => error is NoSuchMethodError); |
| + Expect.throws(() => c.baz, (error) => error is NoSuchMethodError); |
| + Expect.equals("M2-baz", d.baz); |
| + Expect.equals("M2-baz", e.baz); |
| + Expect.equals("M2-baz", f.baz); |
| + |
| + d.baz = "M2-baz-d"; |
| + Expect.throws(() => c.baz, (error) => error is NoSuchMethodError); |
| + Expect.equals("M2-baz-d", d.baz); |
| + Expect.equals("M2-baz", e.baz); |
| + Expect.equals("M2-baz", f.baz); |
| + Expect.equals("M2-baz", f.baz); |
| + |
| + e.baz = "M2-baz-e"; |
| + Expect.throws(() => c.baz, (error) => error is NoSuchMethodError); |
| + Expect.equals("M2-baz-d", d.baz); |
| + Expect.equals("M2-baz-e", e.baz); |
| + Expect.equals("M2-baz", f.baz); |
| + |
| + f.baz = "M2-baz-f"; |
| + Expect.throws(() => c.baz, (error) => error is NoSuchMethodError); |
| + Expect.equals("M2-baz-d", d.baz); |
| + Expect.equals("M2-baz-e", e.baz); |
| + Expect.equals("M2-baz-f", f.baz); |
| + |
| + Expect.throws(() => c.fez = 0, (error) => error is NoSuchMethodError); |
| + Expect.throws(() => d.fez = 0, (error) => error is NoSuchMethodError); |
| + Expect.throws(() => e.fez = 0, (error) => error is NoSuchMethodError); |
| + |
| + f.fez = "F-fez-f"; |
| + Expect.throws(() => c.fez, (error) => error is NoSuchMethodError); |
| + Expect.throws(() => d.fez, (error) => error is NoSuchMethodError); |
| + Expect.throws(() => e.fez, (error) => error is NoSuchMethodError); |
| + Expect.equals("F-fez-f", f.fez); |
| +} |