public void StaticEventHandling()
{
Interpret(
@"load 'Bike.Test';
Test.Person.staticAction = func(arg) {arg * arg;};
var a = Test.Person.staticAction(2);")
.Equal("a", 4);
Interpret(
@"Test.Person.StaticAssignDelegate(func(arg) {arg * arg;});
a = Test.Person.staticAction(2);")
.Equal("a", 4);
Interpret(
@"var sum = 0;
Test.Person.staticAction += func(arg) {sum += arg;};
Test.Person.staticAction += func(arg) {sum += (arg * arg);};
a = Test.Person.staticAction(2);")
.Equal("a", 6)
.Equal("sum", 6);
Interpret(
@"sum = 0;
Test.Person.StaticAddDelegate(func(arg) {sum += arg;});
Test.Person.StaticAddDelegate(func(arg) {sum += (arg * arg);});
a = Test.Person.staticAction(2);")
.Equal("a", 12) // 12 because the previous handlers are still intact
.Equal("sum", 12);
Interpret(
@"sum = 0;
Test.Person.staticEventAction += func(arg) {sum += arg;};
Test.Person.staticEventAction += func(arg) {sum += (arg * arg);};
a = Test.Person.StaticRunEvent(2);")
.Equal("a", 6)
.Equal("sum", 6);
Interpret(
@"sum = 0;
Test.Person.StaticAddEvent(func(arg) {sum += arg;});
Test.Person.StaticAddEvent(func(arg) {sum += (arg * arg);});
a = Test.Person.StaticRunEvent(2);")
.Equal("a", 12)
.Equal("sum", 12);
}