blob: d7b5d2df46f90bb3da02dff366f19a44c1cb8633 [file] [log] [blame]
// 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.
import "package:expect/expect.dart";
class GettersSettersTest {
static int? foo;
static get bar {
return foo;
}
static set bar(newValue) {
foo = newValue;
}
static testMain() {
A a = new A();
a.x = 2;
Expect.equals(2, a.x);
Expect.equals(2, a.x_);
// Test inheritance.
a = new B();
a.x = 4;
Expect.equals(4, a.x);
Expect.equals(4, a.x_);
// Test overriding.
C c = new C();
c.x = 8;
Expect.equals(8, c.x);
Expect.equals(0, c.x_);
Expect.equals(8, c.y_);
// Test keyed getters and setters.
a.x_ = 0;
Expect.equals(2, a[2]);
a[2] = 4;
Expect.equals(6, a[0]);
// Test assignment operators.
a.x_ = 0;
a[2] += 8;
Expect.equals(12, a[0]);
// Test calling a function that internally uses getters.
Expect.equals(true, a.isXPositive());
// Test static fields.
foo = 42;
Expect.equals(42, foo);
Expect.equals(42, bar);
A.foo = 43;
Expect.equals(43, A.foo);
Expect.equals(43, A.bar);
bar = 42;
Expect.equals(42, foo);
Expect.equals(42, bar);
A.bar = 43;
Expect.equals(43, A.foo);
Expect.equals(43, A.bar);
}
}
class A {
A();
int? x_;
static int? foo;
static get bar {
return foo;
}
static set bar(newValue) {
foo = newValue;
}
int get x {
return x_!;
}
void set x(int value) {
x_ = value;
}
bool isXPositive() {
return x > 0;
}
int operator [](int index) {
return x_! + index;
}
void operator []=(int index, int value) {
x_ = index + value;
}
int getX_() {
return x_!;
}
}
class B extends A {
B();
}
class C extends A {
int? y_;
C() {
this.x_ = 0;
}
int get x {
return y_!;
}
void set x(int value) {
y_ = value;
}
}
main() {
GettersSettersTest.testMain();
}