| // Copyright (c) 2011, 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. |
| // Dart test program for testing setting/getting of instance fields. |
| |
| import "package:expect/expect.dart"; |
| |
| class First { |
| First() {} |
| var a; |
| var b; |
| |
| addFields() { |
| return a + b; |
| } |
| |
| setValues() { |
| a = 24; |
| b = 10; |
| return a + b; |
| } |
| } |
| |
| class Second extends First { |
| var c; |
| get a { |
| return -12; |
| } |
| |
| set b(a) { |
| a.c = 12; |
| } |
| } |
| |
| class FieldInitializedToNull { |
| int? x, y; |
| |
| static void test() { |
| var f = new FieldInitializedToNull(); |
| int? missingArg([int? x = 42]) => x; |
| Expect.isNull(f.x); |
| Expect.isNull(f.y); |
| // Regression tests for a DDC bug, where undefined gets initialized in the |
| // fields, and is incorrect recognized as a missing argument. |
| Expect.isNull(missingArg(f.x)); |
| Expect.isNull(missingArg(f.y)); |
| } |
| } |
| |
| class FieldTest { |
| static one() { |
| var f = new First(); |
| f.a = 3; |
| f.b = f.a; |
| Expect.equals(3, f.a); |
| Expect.equals(f.a, f.b); |
| f.b = (f.a = 10); |
| Expect.equals(10, f.a); |
| Expect.equals(10, f.b); |
| f.b = f.a = 15; |
| Expect.equals(15, f.a); |
| Expect.equals(15, f.b); |
| Expect.equals(30, f.addFields()); |
| Expect.equals(34, f.setValues()); |
| Expect.equals(24, f.a); |
| Expect.equals(10, f.b); |
| } |
| |
| static two() { |
| // The tests below are a little cumbersome because not |
| // everything is implemented yet. |
| var o = new Second(); |
| // 'a' getter is overridden, always returns -12. |
| Expect.equals(-12, o.a); |
| o.a = 2; |
| Expect.equals(-12, o.a); |
| // 'b' setter is overridden to write 12 to field 'c'. |
| o.b = o; |
| Expect.equals(12, o.c); |
| } |
| } |
| |
| main() { |
| FieldTest.one(); |
| FieldTest.two(); |
| FieldInitializedToNull.test(); |
| } |