// Copyright (c) 2012, 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/initializing static fields. import "package:expect/expect.dart"; class First { First() {} static var a; static var b; static const int c = 1; static setValues() { a = 24; b = 10; return a + b + c; } } class InitializerTest { static var one; static var two = 2; static var three = 2; static checkValueOfThree() { // We need to keep this check separate to prevent three from // getting initialized before the += is executed. Expect.equals(3, three); } static void testStaticFieldInitialization() { Expect.equals(null, one); Expect.equals(2, two); one = 11; two = 22; Expect.equals(11, one); Expect.equals(22, two); // Assignment operators exercise a different code path. Make sure // that initialization works here as well. three += 1; checkValueOfThree(); } } class StaticFieldTest { static testMain() { First.a = 3; First.b = First.a; Expect.equals(3, First.a); Expect.equals(First.a, First.b); First.b = (First.a = 10); Expect.equals(10, First.a); Expect.equals(10, First.b); First.b = First.a = 15; Expect.equals(15, First.a); Expect.equals(15, First.b); Expect.equals(35, First.setValues()); Expect.equals(24, First.a); Expect.equals(10, First.b); } } class StaticField1RunNegativeTest { static // //# 01: compile-time error var x; testMain() { var foo = new StaticField1RunNegativeTest(); print(x); // Used to compile 'x' and force any errors. var result = foo.x; } } class StaticField1aRunNegativeTest { static // //# 02: compile-time error, runtime error void m() {} testMain() { var foo = new StaticField1aRunNegativeTest(); print(m); // Used to compile 'm' and force any errors. var result = foo.m; } } class StaticField2RunNegativeTest { static //# 03: compile-time error var x; testMain() { var foo = new StaticField2RunNegativeTest(); print(x); // Used to compile 'x' and force any errors. foo.x = 1; } } class StaticField2aRunNegativeTest { static // //# 04: compile-time error void m() {} testMain() { var foo = new StaticField2aRunNegativeTest(); print(m); // Used to compile 'm' and force any errors. foo.m = 1; //# 04:continued } } main() { StaticFieldTest.testMain(); InitializerTest.testStaticFieldInitialization(); new StaticField1RunNegativeTest().testMain(); new StaticField1aRunNegativeTest().testMain(); new StaticField2RunNegativeTest().testMain(); new StaticField2aRunNegativeTest().testMain(); }