Пример #1
0
    private static void TestFunctionPointer()
    {
        int expectedValue = 987654;

        int TestFunction() => expectedValue;

        Assert.True(ValidateDelegateReturnsExpected(expectedValue, TestFunction));

        {
            TestDelegate localDelegate = TestFunction;
            Assert.True(ReplaceDelegate(expectedValue, ref localDelegate, out int newExpectedValue));
            Assert.Equal(newExpectedValue, localDelegate());
        }

        {
            GetNativeTestFunction(out TestDelegate test, out int value);
            Assert.Equal(value, test());
        }

        {
            var returned = GetNativeTestFunctionReturned(out int value);
            Assert.Equal(value, returned());
        }

        {
            CallbackWithExpectedValue cb = new CallbackWithExpectedValue
            {
                expectedValue = expectedValue,
                del           = TestFunction
            };

            Assert.True(ValidateCallbackWithValue(cb));
        }

        {
            CallbackWithExpectedValue cb = new CallbackWithExpectedValue
            {
                expectedValue = expectedValue,
                del           = TestFunction
            };

            Assert.True(ValidateAndUpdateCallbackWithValue(ref cb));
            Assert.Equal(cb.expectedValue, cb.del());
        }

        {
            GetNativeCallbackAndValue(out CallbackWithExpectedValue cb);
            Assert.Equal(cb.expectedValue, cb.del());
        }
    }
Пример #2
0
 public static extern bool GetNativeCallbackAndValue(out CallbackWithExpectedValue val);
Пример #3
0
 public static extern bool ValidateAndUpdateCallbackWithValue(ref CallbackWithExpectedValue val);