public void InstanceEventHandling()
{
Interpret(
@"load 'Bike.Test';
var person = Test.Person();
person.action = func(arg) {arg * arg;};
var a = person.action(2);")
.Equal("a", 4);
Interpret(
@"person = Test.Person();
person.AssignDelegate(func(arg) {arg * arg;});
a = person.action(2);")
.Equal("a", 4);
Interpret(
@"person = Test.Person('bike', 11, 'kiki');
var sum = 0;
person.action += func(arg) {sum += this.Age;};
person.action += func(arg) {sum += (arg * arg);};
a = person.action(2);")
.Equal("a", 15)
.Equal("sum", 15);
Interpret(
@"person = Test.Person();
sum = 0;
person.AddDelegate(func(arg) {sum += arg;});
person.AddDelegate(func(arg) {sum += (arg * arg);});
a = person.action(2);")
.Equal("a", 6)
.Equal("sum", 6);
Interpret(
@"person = Test.Person('bike', 11, 'kiki');
sum = 0;
person.eventAction += func(arg) {sum += this.Age;};
person.eventAction += func(arg) {sum += (arg * arg);};
a = person.RunEvent(2);")
.Equal("a", 15)
.Equal("sum", 15);
Interpret(
@"person = Test.Person();
sum = 0;
person.AddEvent(func(arg) {sum += arg;});
person.AddEvent(func(arg) {sum += (arg * arg);});
a = person.RunEvent(2);")
.Equal("a", 6)
.Equal("sum", 6);
Interpret(
@"person = Test.Person('bike', 11, 'kiki');
person.action = func() { this.Age; };
a = person.action(0);")
.Equal("a", 11);
}