public void InvalidBoundSyncedFunc_Invoked_DoesSync() { bool sawSync = false; using (CallbackContext context = new CallbackContext()) using (ActionThread thread = new ActionThread()) { thread.Start(); // Capture the thread's SynchronizationContext and signal this thread when it's captured. SynchronizationContext actionThreadSyncContext = thread.DoGet(() => { return(SynchronizationContext.Current); }); var syncContext = new Util.LoggingSynchronizationContext(actionThreadSyncContext) { OnPost = () => { sawSync = true; }, OnSend = () => { sawSync = true; } }; var action = context.Bind(() => { return(13); }, syncContext, false); context.Reset(); int result = action(); Assert.IsTrue(sawSync, "Context did not use SyncContext for sync"); } }
public void CallbackContext_ResetAfterBindingFunc_IsInvalid() { using (CallbackContext context = new CallbackContext()) { var action = context.Bind(() => { return(13); }); context.Reset(); Assert.IsTrue(context.Invalidated, "Bound action should be invalid"); } }
public void CallbackContext_AfterInvokingInvalidAction_IsInvalid() { using (CallbackContext context = new CallbackContext()) { var action = context.Bind(() => { }); context.Reset(); action(); Assert.IsTrue(context.Invalidated, "Bound action should be invalid"); } }
public void InvalidFunc_Invoked_ReturnsDefault() { using (CallbackContext context = new CallbackContext()) { var action = context.Bind(() => { return(13); }); context.Reset(); int result = action(); Assert.AreEqual(default(int), result, "Invalid func had a non-default return value"); } }
public void InvalidBoundObjectsyncedFunc_Invoked_SynchronizesWithSyncObject() { using (CallbackContext context = new CallbackContext()) { var syncObject = new FakeFuncSynchronizingObject(true); var action = context.Bind(() => { return(13); }, syncObject); context.Reset(); int result = action(); Assert.IsTrue(syncObject.sawInvoke, "Bound action did not run through synchronizing object"); } }
public void InvalidBoundObjectsyncedFunc_Invoked_ReturnsDefault() { using (CallbackContext context = new CallbackContext()) { var syncObject = new FakeFuncSynchronizingObject(true); var action = context.Bind(() => { return(13); }, syncObject); context.Reset(); int result = action(); Assert.AreEqual(0, result, "Invalid func returned non-default value"); } }
public void InvalidAction_Invoked_DoesNotExecute() { bool sawAction = false; using (CallbackContext context = new CallbackContext()) { var action = context.Bind(() => { sawAction = true; }); context.Reset(); action(); Assert.IsFalse(sawAction, "Invalid action did execute"); } }
public void InvalidBoundObjectsyncedFunc_Invoked_DoesNotExecute() { int sawActionThread = Thread.CurrentThread.ManagedThreadId; using (CallbackContext context = new CallbackContext()) { var syncObject = new FakeFuncSynchronizingObject(true); var action = context.Bind(() => { sawActionThread = Thread.CurrentThread.ManagedThreadId; return(13); }, syncObject); context.Reset(); int result = action(); Assert.AreEqual(Thread.CurrentThread.ManagedThreadId, sawActionThread, "Bound action was executed"); } }
public void InvalidBoundSyncedFunc_Invoked_ReturnsDefault() { using (CallbackContext context = new CallbackContext()) using (ActionThread thread = new ActionThread()) { thread.Start(); // Capture the thread's SynchronizationContext and signal this thread when it's captured. SynchronizationContext actionThreadSyncContext = thread.DoGet(() => { return(SynchronizationContext.Current); }); var action = context.Bind(() => { return(13); }, actionThreadSyncContext, false); context.Reset(); int result = action(); Assert.AreEqual(0, result, "Invalid Func returned a non-default value"); } }
public void CallbackContext_Reset_InvalidatesAllActions() { bool sawAction1 = false; bool sawAction2 = false; using (CallbackContext context = new CallbackContext()) { var action1 = context.Bind(() => { sawAction1 = true; }); var action2 = context.Bind(() => { sawAction2 = true; }); context.Reset(); action1(); action2(); Assert.IsFalse(sawAction1, "Invalid action did execute"); Assert.IsFalse(sawAction2, "Invalid action did execute"); } }
public void InvalidBoundSyncedFunc_Invoked_DoesNotExecute() { int sawActionThread = Thread.CurrentThread.ManagedThreadId; using (CallbackContext context = new CallbackContext()) using (ActionThread thread = new ActionThread()) { thread.Start(); // Capture the thread's SynchronizationContext and signal this thread when it's captured. SynchronizationContext actionThreadSyncContext = thread.DoGet(() => { return(SynchronizationContext.Current); }); var action = context.Bind(() => { sawActionThread = Thread.CurrentThread.ManagedThreadId; return(13); }, actionThreadSyncContext, false); context.Reset(); int result = action(); Assert.AreEqual(Thread.CurrentThread.ManagedThreadId, sawActionThread, "Invalid action should not run"); } }
public void InvalidBoundSyncedFunc_Invoked_ReturnsDefault() { using (CallbackContext context = new CallbackContext()) using (ActionThread thread = new ActionThread()) { thread.Start(); // Capture the thread's SynchronizationContext and signal this thread when it's captured. SynchronizationContext actionThreadSyncContext = thread.DoGet(() => { return SynchronizationContext.Current; }); var action = context.Bind(() => { return 13; }, actionThreadSyncContext, false); context.Reset(); int result = action(); Assert.AreEqual(0, result, "Invalid Func returned a non-default value"); } }
public void InvalidBoundSyncedFunc_Invoked_DoesSync() { bool sawSync = false; using (CallbackContext context = new CallbackContext()) using (ActionThread thread = new ActionThread()) { thread.Start(); // Capture the thread's SynchronizationContext and signal this thread when it's captured. SynchronizationContext actionThreadSyncContext = thread.DoGet(() => { return SynchronizationContext.Current; }); var syncContext = new LoggingSynchronizationContext(actionThreadSyncContext) { OnPost = () => { sawSync = true; }, OnSend = () => { sawSync = true; } }; var action = context.Bind(() => { return 13; }, syncContext, false); context.Reset(); int result = action(); Assert.IsTrue(sawSync, "Context did not use SyncContext for sync"); } }
public void InvalidBoundSyncedFunc_Invoked_DoesNotExecute() { int sawActionThread = Thread.CurrentThread.ManagedThreadId; using (CallbackContext context = new CallbackContext()) using (ActionThread thread = new ActionThread()) { thread.Start(); // Capture the thread's SynchronizationContext and signal this thread when it's captured. SynchronizationContext actionThreadSyncContext = thread.DoGet(() => { return SynchronizationContext.Current; }); var action = context.Bind(() => { sawActionThread = Thread.CurrentThread.ManagedThreadId; return 13; }, actionThreadSyncContext, false); context.Reset(); int result = action(); Assert.AreEqual(Thread.CurrentThread.ManagedThreadId, sawActionThread, "Invalid action should not run"); } }
public void InvalidBoundObjectsyncedFunc_Invoked_SynchronizesWithSyncObject() { using (CallbackContext context = new CallbackContext()) { var syncObject = new FakeFuncSynchronizingObject(true); var action = context.Bind(() => { return 13; }, syncObject); context.Reset(); int result = action(); Assert.IsTrue(syncObject.sawInvoke, "Bound action did not run through synchronizing object"); } }
public void InvalidBoundObjectsyncedFunc_Invoked_ReturnsDefault() { using (CallbackContext context = new CallbackContext()) { var syncObject = new FakeFuncSynchronizingObject(true); var action = context.Bind(() => { return 13; }, syncObject); context.Reset(); int result = action(); Assert.AreEqual(0, result, "Invalid func returned non-default value"); } }
public void InvalidBoundObjectsyncedFunc_Invoked_DoesNotExecute() { int sawActionThread = Thread.CurrentThread.ManagedThreadId; using (CallbackContext context = new CallbackContext()) { var syncObject = new FakeFuncSynchronizingObject(true); var action = context.Bind(() => { sawActionThread = Thread.CurrentThread.ManagedThreadId; return 13; }, syncObject); context.Reset(); int result = action(); Assert.AreEqual(Thread.CurrentThread.ManagedThreadId, sawActionThread, "Bound action was executed"); } }
public void CallbackContext_Reset_InvalidatesAllFuncs() { bool sawAction1 = false; bool sawAction2 = false; using (CallbackContext context = new CallbackContext()) { var action1 = context.Bind(() => { sawAction1 = true; return 13; }); var action2 = context.Bind(() => { sawAction2 = true; return 17; }); context.Reset(); int result1 = action1(); int result2 = action2(); Assert.IsFalse(sawAction1, "Invalid action did execute"); Assert.IsFalse(sawAction2, "Invalid action did execute"); } }
public void CallbackContext_ResetAfterBindingFunc_IsInvalid() { using (CallbackContext context = new CallbackContext()) { var action = context.Bind(() => { return 13; }); context.Reset(); Assert.IsTrue(context.Invalidated, "Bound action should be invalid"); } }
public void InvalidFunc_Invoked_DoesNotExecute() { bool sawAction = false; using (CallbackContext context = new CallbackContext()) { var action = context.Bind(() => { sawAction = true; return 13; }); context.Reset(); int result = action(); Assert.IsFalse(sawAction, "Invalid action did execute"); } }
public void InvalidFunc_Invoked_ReturnsDefault() { using (CallbackContext context = new CallbackContext()) { var action = context.Bind(() => { return 13; }); context.Reset(); int result = action(); Assert.AreEqual(default(int), result, "Invalid func had a non-default return value"); } }