public void CallbackContext_BindingFuncWithDefaultSyncContext_ThrowsInvalidOperationException() { using (CallbackContext context = new CallbackContext()) { var action = context.Bind(() => { return(13); }, new SynchronizationContext()); } }
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_WithBoundFunc_IsNotInvalid() { using (CallbackContext context = new CallbackContext()) { var action = context.Bind(() => { return(13); }); Assert.IsFalse(context.Invalidated, "Bound action should be valid"); } }
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 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_WithInvokedAction_IsNotInvalid() { using (CallbackContext context = new CallbackContext()) { var action = context.Bind(() => { }); action(); Assert.IsFalse(context.Invalidated, "Bound action should be valid"); } }
public void ValidFunc_Invoked_ReturnsValue() { using (CallbackContext context = new CallbackContext()) { var action = context.Bind(() => { return(13); }); int result = action(); Assert.AreEqual(13, result, "Func result not returned"); } }
public void BoundFakesyncedAction_Invoked_DoesNotUseSyncObject() { using (CallbackContext context = new CallbackContext()) { var syncObject = new FakeActionSynchronizingObject(false); var action = context.Bind(() => { }, syncObject); action(); Assert.IsFalse(syncObject.sawInvoke, "Bound action did run through synchronizing object"); } }
public void BoundObjectsyncedAction_Invoked_UsesSyncObject() { using (CallbackContext context = new CallbackContext()) { var syncObject = new FakeActionSynchronizingObject(true); var action = context.Bind(() => { }, syncObject); action(); Assert.IsTrue(syncObject.sawInvoke, "Bound action did not run through synchronizing object"); } }
public void BoundFakesyncedFunc_Invoked_ReturnsValue() { using (CallbackContext context = new CallbackContext()) { var syncObject = new FakeFuncSynchronizingObject(false); var action = context.Bind(() => { return(13); }, syncObject); int result = action(); Assert.AreEqual(13, result, "Bound func did not return result"); } }
public void BoundObjectsyncedFunc_Invoked_UsesSyncObject() { using (CallbackContext context = new CallbackContext()) { var syncObject = new FakeFuncSynchronizingObject(true); var action = context.Bind(() => { return(13); }, syncObject); int result = action(); Assert.IsTrue(syncObject.sawInvoke, "Bound action did not run through synchronizing object"); } }
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 ActionBoundToDefaultSyncContext_Invoked_Executes() { using (CallbackContext context = new CallbackContext()) using (ManualResetEvent evt = new ManualResetEvent(false)) { var action = context.Bind(() => { evt.Set(); }, new SynchronizationContext(), false); action(); bool signalled = evt.WaitOne(100); Assert.IsTrue(signalled, "Action did not run"); } }
public void ValidFunc_Invoked_Executes() { bool sawAction = false; using (CallbackContext context = new CallbackContext()) { var action = context.Bind(() => { sawAction = true; return(13); }); int result = action(); Assert.IsTrue(sawAction, "Bound action did not execute"); } }
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 FuncBoundToDefaultSyncContext_Invoked_Executes() { using (CallbackContext context = new CallbackContext()) using (ManualResetEvent evt = new ManualResetEvent(false)) { var action = context.Bind(() => { evt.Set(); return(13); }, new SynchronizationContext(), false); int result = action(); bool signalled = evt.WaitOne(100); Assert.IsTrue(signalled, "Action did not run"); } }
public void BoundObjectsyncedAction_Invoked_Executes() { bool sawAction = false; using (CallbackContext context = new CallbackContext()) { var syncObject = new FakeActionSynchronizingObject(true); var action = context.Bind(() => { sawAction = true; }, syncObject); action(); Assert.IsTrue(sawAction, "Bound action did not run"); } }
public void BoundObjectsyncedFunc_Invoked_SynchronizesWithSyncObject() { 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); int result = action(); Assert.AreNotEqual(Thread.CurrentThread.ManagedThreadId, sawActionThread, "Bound action was not synchronized"); } }
public void BoundFakesyncedAction_Invoked_DoesNotSynchronizeWithSyncObject() { int sawActionThread = Thread.CurrentThread.ManagedThreadId; using (CallbackContext context = new CallbackContext()) { var syncObject = new FakeActionSynchronizingObject(false); var action = context.Bind(() => { sawActionThread = Thread.CurrentThread.ManagedThreadId; }, syncObject); action(); Assert.AreEqual(Thread.CurrentThread.ManagedThreadId, sawActionThread, "Bound action was not run inline"); } }
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 BoundFakesyncedFunc_Invoked_Executes() { bool sawAction = false; using (CallbackContext context = new CallbackContext()) { var syncObject = new FakeFuncSynchronizingObject(false); var action = context.Bind(() => { sawAction = true; return(13); }, syncObject); int result = action(); Assert.IsTrue(sawAction, "Bound action did not run"); } }
public void Action_InvokedAfterContextDispose_DoesNotExecute() { bool sawAction = false; Action action = null; using (CallbackContext context = new CallbackContext()) { action = context.Bind(() => { sawAction = true; }); } action(); Assert.IsFalse(sawAction, "Invalid action did execute"); }
public void InvalidBoundObjectsyncedAction_Invoked_DoesNotExecute() { int sawActionThread = Thread.CurrentThread.ManagedThreadId; using (CallbackContext context = new CallbackContext()) { var syncObject = new FakeActionSynchronizingObject(true); var action = context.Bind(() => { sawActionThread = Thread.CurrentThread.ManagedThreadId; }, syncObject); context.Reset(); action(); Assert.AreEqual(Thread.CurrentThread.ManagedThreadId, sawActionThread, "Bound action was executed"); } }
public void Func_InvokedAfterContextDispose_ReturnsDefault() { Func <int> action = null; using (CallbackContext context = new CallbackContext()) { action = context.Bind(() => { return(13); }); } int result = action(); Assert.AreEqual(0, result, "Invalid func had a non-default return value"); }
public void Func_InvokedAfterContextDispose_DoesNotExecute() { bool sawAction = false; Func <int> action = null; using (CallbackContext context = new CallbackContext()) { action = context.Bind(() => { sawAction = true; return(13); }); } int result = action(); Assert.IsFalse(sawAction, "Invalid action did execute"); }
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 BoundSyncedFunc_Invoked_ExecutesSynchronized() { int sawActionThread = Thread.CurrentThread.ManagedThreadId; using (CallbackContext context = new CallbackContext()) using (ActionThread thread = new ActionThread()) { thread.Start(); // Capture the thread's SynchronizationContext SynchronizationContext actionThreadSyncContext = thread.DoGet(() => { return(SynchronizationContext.Current); }); var action = context.Bind(() => { sawActionThread = Thread.CurrentThread.ManagedThreadId; return(13); }, actionThreadSyncContext); int result = action(); Assert.AreEqual(thread.ManagedThreadId, sawActionThread, "Bound action was not synchronized"); } }
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 BoundSyncedFunc_Invoked_DecrementsSyncContextOperationCount() { bool sawOperationCompleted = false; using (CallbackContext context = new CallbackContext()) using (ActionThread thread = new ActionThread()) { thread.Start(); // Capture the thread's SynchronizationContext SynchronizationContext actionThreadSyncContext = thread.DoGet(() => { return(SynchronizationContext.Current); }); var syncContext = new Util.LoggingSynchronizationContext(actionThreadSyncContext) { OnOperationCompleted = () => { sawOperationCompleted = true; } }; var action = context.Bind(() => { return(13); }, syncContext, false); int result = action(); Assert.IsFalse(sawOperationCompleted, "Context decremented operation count"); } }
public void BoundSyncedAction_Invoked_UsesSyncContext() { bool sawSync = false; using (CallbackContext context = new CallbackContext()) using (ActionThread thread = new ActionThread()) { thread.Start(); // Capture the thread's SynchronizationContext SynchronizationContext actionThreadSyncContext = thread.DoGet(() => { return(SynchronizationContext.Current); }); var syncContext = new Util.LoggingSynchronizationContext(actionThreadSyncContext) { OnPost = () => { sawSync = true; }, OnSend = () => { sawSync = true; } }; var action = context.Bind(() => { }, syncContext, false); 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_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_BindingFuncWithDefaultSyncContext_ThrowsInvalidOperationException() { using (CallbackContext context = new CallbackContext()) { var action = context.Bind(() => { return 13; }, new SynchronizationContext()); } }
public void BoundFakesyncedFunc_Invoked_DoesNotUseSyncObject() { using (CallbackContext context = new CallbackContext()) { var syncObject = new FakeFuncSynchronizingObject(false); var action = context.Bind(() => { return 13; }, syncObject); int result = action(); Assert.IsFalse(syncObject.sawInvoke, "Bound action did run through synchronizing object"); } }
public void BoundSyncedFunc_Invoked_IncrementsSyncContextOperationCount() { bool sawOperationStarted = false; using (CallbackContext context = new CallbackContext()) using (ActionThread thread = new ActionThread()) { thread.Start(); // Capture the thread's SynchronizationContext SynchronizationContext actionThreadSyncContext = thread.DoGet(() => { return SynchronizationContext.Current; }); var syncContext = new LoggingSynchronizationContext(actionThreadSyncContext) { OnOperationStarted = () => { sawOperationStarted = true; } }; var action = context.Bind(() => { return 13; }, syncContext, false); int result = action(); Assert.IsFalse(sawOperationStarted, "Context incremented operation count"); } }
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 Func_InvokedAfterContextDispose_ReturnsDefault() { Func<int> action = null; using (CallbackContext context = new CallbackContext()) { action = context.Bind(() => { return 13; }); } int result = action(); Assert.AreEqual(0, result, "Invalid func had a non-default return value"); }
public void BoundObjectsyncedFunc_Invoked_Executes() { bool sawAction = false; using (CallbackContext context = new CallbackContext()) { var syncObject = new FakeFuncSynchronizingObject(true); var action = context.Bind(() => { sawAction = true; return 13; }, syncObject); int result = action(); Assert.IsTrue(sawAction, "Bound action did not run"); } }
public void BoundObjectsyncedFunc_Invoked_ReturnsValue() { using (CallbackContext context = new CallbackContext()) { var syncObject = new FakeFuncSynchronizingObject(true); var action = context.Bind(() => { return 13; }, syncObject); int result = action(); Assert.AreEqual(13, result, "Bound func did not return result"); } }
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 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_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 CallbackContext_WithInvokedFunc_IsNotInvalid() { using (CallbackContext context = new CallbackContext()) { var action = context.Bind(() => { return 13; }); int result = action(); Assert.IsFalse(context.Invalidated, "Bound action should be valid"); } }
public void BoundFakesyncedAction_Invoked_Executes() { bool sawAction = false; using (CallbackContext context = new CallbackContext()) { var syncObject = new FakeActionSynchronizingObject(false); var action = context.Bind(() => { sawAction = true; }, syncObject); action(); Assert.IsTrue(sawAction, "Bound action did not run"); } }
public void Func_InvokedAfterContextDispose_DoesNotExecute() { bool sawAction = false; Func<int> action = null; using (CallbackContext context = new CallbackContext()) { action = context.Bind(() => { sawAction = true; return 13; }); } int result = action(); Assert.IsFalse(sawAction, "Invalid action did execute"); }
public void BoundFakesyncedFunc_Invoked_DoesNotSynchronizeWithSyncObject() { int sawActionThread = Thread.CurrentThread.ManagedThreadId; using (CallbackContext context = new CallbackContext()) { var syncObject = new FakeFuncSynchronizingObject(false); var action = context.Bind(() => { sawActionThread = Thread.CurrentThread.ManagedThreadId; return 13; }, syncObject); int result = action(); Assert.AreEqual(Thread.CurrentThread.ManagedThreadId, sawActionThread, "Bound action was not run inline"); } }
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 BoundSyncedFunc_Invoked_ExecutesSynchronized() { int sawActionThread = Thread.CurrentThread.ManagedThreadId; using (CallbackContext context = new CallbackContext()) using (ActionThread thread = new ActionThread()) { thread.Start(); // Capture the thread's SynchronizationContext SynchronizationContext actionThreadSyncContext = thread.DoGet(() => { return SynchronizationContext.Current; }); var action = context.Bind(() => { sawActionThread = Thread.CurrentThread.ManagedThreadId; return 13; }, actionThreadSyncContext); int result = action(); Assert.AreEqual(thread.ManagedThreadId, sawActionThread, "Bound action was not synchronized"); } }
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 BoundSyncedAction_Invoked_UsesSyncContext() { bool sawSync = false; using (CallbackContext context = new CallbackContext()) using (ActionThread thread = new ActionThread()) { thread.Start(); // Capture the thread's SynchronizationContext SynchronizationContext actionThreadSyncContext = thread.DoGet(() => { return SynchronizationContext.Current; }); var syncContext = new LoggingSynchronizationContext(actionThreadSyncContext) { OnPost = () => { sawSync = true; }, OnSend = () => { sawSync = true; } }; var action = context.Bind(() => { }, syncContext, false); action(); Assert.IsTrue(sawSync, "Context did not use SyncContext for sync"); } }
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 BoundObjectsyncedAction_Invoked_SynchronizesWithSyncObject() { int sawActionThread = Thread.CurrentThread.ManagedThreadId; using (CallbackContext context = new CallbackContext()) { var syncObject = new FakeActionSynchronizingObject(true); var action = context.Bind(() => { sawActionThread = Thread.CurrentThread.ManagedThreadId; }, syncObject); action(); Assert.AreNotEqual(Thread.CurrentThread.ManagedThreadId, sawActionThread, "Bound action was not synchronized"); } }
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 ValidAction_Invoked_Executes() { bool sawAction = false; using (CallbackContext context = new CallbackContext()) { var action = context.Bind(() => { sawAction = true; }); action(); Assert.IsTrue(sawAction, "Bound action did not execute"); } }
public void ValidFunc_Invoked_ReturnsValue() { using (CallbackContext context = new CallbackContext()) { var action = context.Bind(() => { return 13; }); int result = action(); Assert.AreEqual(13, result, "Func result not returned"); } }