public void VerifyAddingSameCallbackReturnsSameWrapper() { JET_CALLBACK callback = CreateCallback(); var callbackWrappers = new CallbackWrappers(); var wrapper = callbackWrappers.Add(callback); Assert.AreEqual(wrapper, callbackWrappers.Add(callback)); }
public void VerifyAddingCallbackReturnsWrapper() { JET_CALLBACK callback = CreateCallback(); var callbackWrappers = new CallbackWrappers(); var wrapper = callbackWrappers.Add(callback); Assert.IsNotNull(callbackWrappers.Add(callback)); }
/// <summary> /// Create a new wrapped callback. /// </summary> /// <param name="callbackWrappers">The CallbackWrappers to add the callback to.</param> private static void CreateCallbackWrapper(CallbackWrappers callbackWrappers) { callbackWrappers.Add(CreateCallback()); }
public void VerifyWrapperIsCollectedWhenCallbackIsCollected() { JET_CALLBACK callback = CreateCallback(); var callbackRef = new WeakReference(callback); var callbackWrappers = new CallbackWrappers(); var wrapperRef = new WeakReference(callbackWrappers.Add(callback)); callback = null; RunFullGarbageCollection(); callbackWrappers.Collect(); RunFullGarbageCollection(); Assert.IsFalse(callbackRef.IsAlive); Assert.IsFalse(wrapperRef.IsAlive); // Avoid premature collection of this objects GC.KeepAlive(callbackWrappers); }
public void VerifyNativeCallbackIsNotGarbageCollected() { JET_CALLBACK callback = CreateCallback(); var callbackWrappers = new CallbackWrappers(); JetCallbackWrapper wrapper = callbackWrappers.Add(callback); WeakReference weakRef = new WeakReference(wrapper.NativeCallback); RunFullGarbageCollection(); Assert.IsTrue(weakRef.IsAlive); GC.KeepAlive(wrapper); }