Bike.Test.InteropTest.StaticEventHandling C# (CSharp) Method

StaticEventHandling() private method

private StaticEventHandling ( ) : void
return void
        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);
        }