public void DontRemoveOnetimeReceiversThatReturnFalse() { Task tk0 = new Task(()=>{}); Task tk1 = new Task(()=>{}); EvalTask rv0 = new EvalTask (true, tk0); VoidDispatcherQueue dq0 = new VoidDispatcherQueue (); rv0.TaskQueue = dq0; EvalTask rv1 = new EvalTask (false, tk1); VoidDispatcherQueue dq1 = new VoidDispatcherQueue (); rv1.TaskQueue = dq1; Port<int> port = new Port<int> (); IPortReceive ipr = port; ipr.RegisterReceiver (rv0); Assert.AreEqual (1, ipr.GetReceivers ().Length, "#1"); port.Post (10); Assert.AreEqual (1, dq0.queuedTasks, "#2"); Assert.AreEqual (0, ipr.GetReceivers ().Length, "#3"); ipr.RegisterReceiver (rv1); Assert.AreEqual (1, ipr.GetReceivers ().Length, "#4"); port.Post (10); Assert.AreEqual (1, dq1.queuedTasks, "#5"); Assert.AreEqual (1, ipr.GetReceivers ().Length, "#6"); }
public void CleanedUpReceiverReturnsTask() { var p = new Port<int> (); IPortReceive ipr = p; VoidDispatcherQueue dq = new VoidDispatcherQueue (); ReceiverTask rt = new EvalTask (true, new NullTask ()); rt.State = ReceiverTaskState.CleanedUp; rt.TaskQueue = dq; ipr.RegisterReceiver (rt); Assert.AreEqual (1, ipr.GetReceivers ().Length, "#1"); p.Post (10); Assert.AreEqual (1, dq.queuedTasks, "#2"); Assert.AreEqual (0, ipr.GetReceivers ().Length, "#3"); }
public void ReceiveWithElementOnThePort() { Port<int> port = new Port<int> (); IPortReceive portRec = port; port.Post (10); var receiver = port.Receive (); var dq = new VoidDispatcherQueue (); receiver.TaskQueue = dq; Assert.IsNull (receiver.Arbiter, "#1"); Assert.AreEqual (ReceiverTaskState.Onetime, receiver.State, "#2"); Assert.IsNull (receiver.Execute (), "#3"); Assert.AreEqual (ReceiverTaskState.Onetime, receiver.State, "#4"); IPortReceive rec = port; Assert.AreEqual (1, rec.GetReceivers ().Length, "#5"); }
public void TestTrivialReceiver() { Port<int> port = new Port<int> (); var receiver = port.Receive (); var dq = new VoidDispatcherQueue (); receiver.TaskQueue = dq; Assert.IsNull (receiver.Arbiter, "#1"); Assert.AreEqual (ReceiverTaskState.Onetime, receiver.State, "#2"); Assert.IsNull (receiver.Execute (), "#3"); Assert.AreEqual (ReceiverTaskState.Onetime, receiver.State, "#4"); IPortReceive rec = port; Assert.AreEqual (1, rec.GetReceivers ().Length, "#5"); ITask res = null; Assert.IsFalse (receiver.Evaluate (new PortElement<int>(10), ref res), "#6"); Assert.IsNotNull (res, "#7"); Assert.IsNull (res.Execute (), "#8"); Assert.AreEqual (ReceiverTaskState.CleanedUp, receiver.State, "#9"); Assert.AreEqual (0, rec.GetReceivers ().Length, "#10"); }
public void ScheduleAllTaskReturnedByEvaluate() { Task tk0 = new Task(()=>{}); Task tk1 = new Task(()=>{}); EvalTask rv0 = new EvalTask (false, tk0); VoidDispatcherQueue dq0 = new VoidDispatcherQueue (); rv0.TaskQueue = dq0; EvalTask rv1 = new EvalTask (false, tk1); VoidDispatcherQueue dq1 = new VoidDispatcherQueue (); rv1.TaskQueue = dq1; Port<int> port = new Port<int> (); IPortReceive ipr = port; ipr.RegisterReceiver (rv0); ipr.RegisterReceiver (rv1); port.Post (10); Assert.AreEqual (1, dq0.queuedTasks, "#1"); Assert.AreEqual (1, dq1.queuedTasks, "#2"); Assert.AreEqual (2, ipr.GetReceivers ().Length, "#3"); }