/trunk/Examples/test-suite/d/li_attribute_runme.2.d
D | 58 lines | 43 code | 12 blank | 3 comment | 18 complexity | b55279d43f50358aa233613c1ddbbe05 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- module li_attribute_runme;
- import std.exception;
- import li_attribute.A;
- import li_attribute.B;
- import li_attribute.MyClass;
- import li_attribute.MyClassVal;
- import li_attribute.MyStringyClass;
- import li_attribute.MyFoo;
- import li_attribute.Param_i;
- void main() {
- auto aa = new A(1,2,3);
- enforce(aa.a == 1);
- aa.a = 3;
- enforce(aa.a == 3);
- enforce(aa.b == 2);
- aa.b = 5;
- enforce(aa.b == 5);
- enforce(aa.d == aa.b);
- enforce(aa.c == 3);
- auto pi = new Param_i(7);
- enforce(pi.value == 7);
- pi.value=3;
- enforce(pi.value == 3);
- auto b = new B(aa);
- enforce(b.a.c == 3);
- // class/struct attribute with get/set methods using return/pass by reference
- auto myFoo = new MyFoo();
- myFoo.x = 8;
- auto myClass = new MyClass();
- myClass.Foo = myFoo;
- enforce(myClass.Foo.x == 8);
- // class/struct attribute with get/set methods using return/pass by value
- auto myClassVal = new MyClassVal();
- enforce(myClassVal.ReadWriteFoo.x == -1);
- enforce(myClassVal.ReadOnlyFoo.x == -1);
- myClassVal.ReadWriteFoo = myFoo;
- enforce(myClassVal.ReadWriteFoo.x == 8);
- enforce(myClassVal.ReadOnlyFoo.x == 8);
- // string attribute with get/set methods using return/pass by value
- auto myStringClass = new MyStringyClass("initial string");
- enforce(myStringClass.ReadWriteString == "initial string");
- enforce(myStringClass.ReadOnlyString == "initial string");
- myStringClass.ReadWriteString = "changed string";
- enforce(myStringClass.ReadWriteString == "changed string");
- enforce(myStringClass.ReadOnlyString == "changed string");
- }