本文整理汇总了C#中TestScheduler.ExecuteAll方法的典型用法代码示例。如果您正苦于以下问题:C# TestScheduler.ExecuteAll方法的具体用法?C# TestScheduler.ExecuteAll怎么用?C# TestScheduler.ExecuteAll使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TestScheduler
的用法示例。
在下文中一共展示了TestScheduler.ExecuteAll方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GreedyJoin3Test
public void GreedyJoin3Test ()
{
var scheduler = new TestScheduler ();
var block =
new JoinBlock<int, int, int> (new GroupingDataflowBlockOptions
{ TaskScheduler = scheduler });
var source1 =
new BufferBlock<int> (new DataflowBlockOptions { TaskScheduler = scheduler });
var source2 =
new BufferBlock<int> (new DataflowBlockOptions { TaskScheduler = scheduler });
var source3 =
new BufferBlock<int> (new DataflowBlockOptions { TaskScheduler = scheduler });
Assert.IsNotNull (source1.LinkTo (block.Target1));
Assert.IsNotNull (source2.LinkTo (block.Target2));
Assert.IsNotNull (source3.LinkTo (block.Target3));
Assert.IsTrue (source1.Post (1));
scheduler.ExecuteAll ();
int i;
Assert.IsFalse (source1.TryReceive (out i));
Assert.IsTrue (source2.Post (11));
Assert.IsTrue (source3.Post (21));
scheduler.ExecuteAll ();
Assert.IsFalse (source2.TryReceive (out i));
Assert.IsFalse (source3.TryReceive (out i));
Tuple<int, int, int> tuple;
Assert.IsTrue (block.TryReceive (out tuple));
Assert.AreEqual (Tuple.Create (1, 11, 21), tuple);
}
示例2: ImmediateTest
public void ImmediateTest()
{
var scheduler = new TestScheduler();
var source = new BufferBlock<int>(new DataflowBlockOptions{TaskScheduler = scheduler});
Assert.IsTrue(source.Post(1));
var task = source.OutputAvailableAsync();
// not necessary in MS.NET
scheduler.ExecuteAll();
Assert.IsTrue(task.IsCompleted);
Assert.IsTrue(task.Result);
}
示例3: AsyncNullTest
public void AsyncNullTest()
{
var scheduler = new TestScheduler ();
var block = new ActionBlock<int> (
i => null,
new ExecutionDataflowBlockOptions { TaskScheduler = scheduler });
Assert.IsTrue (block.Post (1));
scheduler.ExecuteAll ();
Assert.IsFalse (block.Completion.Wait (100));
block.Complete ();
Assert.IsTrue (block.Completion.Wait (100));
}
示例4: NonGreedyMaxNumberOfGroupsTest
public void NonGreedyMaxNumberOfGroupsTest ()
{
var scheduler = new TestScheduler ();
var block = new BatchBlock<int> (2,
new GroupingDataflowBlockOptions
{ MaxNumberOfGroups = 1, Greedy = false, TaskScheduler = scheduler });
ITargetBlock<int> target = block;
var source1 = new TestSourceBlock<int> ();
var source2 = new TestSourceBlock<int> ();
var header1 = new DataflowMessageHeader (1);
source1.AddMessage (header1, 11);
source2.AddMessage (header1, 21);
Assert.AreEqual (DataflowMessageStatus.Postponed,
target.OfferMessage (header1, 11, source1, false));
Assert.AreEqual (DataflowMessageStatus.Postponed,
target.OfferMessage (header1, 21, source2, false));
scheduler.ExecuteAll ();
Assert.IsTrue (source1.WasConsumed (header1));
Assert.IsTrue (source2.WasConsumed (header1));
var header2 = new DataflowMessageHeader (2);
Assert.AreEqual (DataflowMessageStatus.DecliningPermanently,
target.OfferMessage (header2, 21, source1, false));
int[] batch;
Assert.IsTrue (block.TryReceive (out batch));
CollectionAssert.AreEquivalent (new[] { 11, 21 }, batch);
Assert.IsTrue (block.Completion.Wait (1000));
}
示例5: LinkToPredicatePostponed
public void LinkToPredicatePostponed ()
{
var scheduler = new TestScheduler ();
var source = new BufferBlock<int> (
new DataflowBlockOptions { TaskScheduler = scheduler });
var target = new BufferBlock<int> (
new DataflowBlockOptions { BoundedCapacity = 1, TaskScheduler = scheduler });
source.LinkTo (target, i => true);
Assert.IsTrue (target.Post (1));
Assert.IsTrue (source.Post (2));
scheduler.ExecuteAll ();
int item;
Assert.IsTrue (target.TryReceive (out item));
Assert.AreEqual (1, item);
scheduler.ExecuteAll ();
Assert.IsTrue (target.TryReceive (out item));
Assert.AreEqual (2, item);
}
示例6: TryReceiveAllTest
public void TryReceiveAllTest()
{
var scheduler = new TestScheduler();
var block = new BroadcastBlock<int>(null, new DataflowBlockOptions { TaskScheduler = scheduler });
IReceivableSourceBlock<int> source = block;
Assert.IsTrue(block.Post(1));
Assert.IsTrue(block.Post(2));
scheduler.ExecuteAll();
IList<int> items;
Assert.IsTrue(source.TryReceiveAll(out items));
CollectionAssert.AreEqual(new[] { 2 }, items);
}
示例7: NonGreedyBatchWithMoreSourcesTest
public void NonGreedyBatchWithMoreSourcesTest ()
{
var scheduler = new TestScheduler ();
var block = new BatchBlock<int> (2,
new GroupingDataflowBlockOptions
{ Greedy = false, TaskScheduler = scheduler });
var source1 =
new BufferBlock<int> (new DataflowBlockOptions { TaskScheduler = scheduler });
var source2 =
new BufferBlock<int> (new DataflowBlockOptions { TaskScheduler = scheduler });
Assert.IsNotNull (source1.LinkTo (block));
Assert.IsNotNull (source2.LinkTo (block));
Assert.IsTrue (source1.Post (43));
scheduler.ExecuteAll ();
int i;
Assert.IsTrue (source1.TryReceive (out i));
Assert.AreEqual (43, i);
Assert.IsTrue (source1.Post (44));
Assert.IsTrue (source2.Post (45));
scheduler.ExecuteAll ();
int[] batch;
Assert.IsTrue (block.TryReceive (out batch));
CollectionAssert.AreEquivalent (new[] { 44, 45 }, batch);
}
示例8: ReserveChangedTest
public void ReserveChangedTest ()
{
var scheduler = new TestScheduler ();
var broadcast = new BroadcastBlock<int> (null,
new DataflowBlockOptions { TaskScheduler = scheduler });
var target = new TestTargetBlock<int> { Postpone = true };
broadcast.LinkTo (target);
Assert.IsFalse (target.HasPostponed);
Assert.IsTrue (broadcast.Post (1));
scheduler.ExecuteAll ();
Assert.IsTrue (target.HasPostponed);
Assert.IsTrue(broadcast.Post(2));
scheduler.ExecuteAll ();
Assert.IsTrue (target.ReservePostponed ());
int value;
Assert.IsTrue (target.RetryPostponed (out value));
Assert.AreEqual (2, value);
}
示例9: BoundedPostponedTest
public void BoundedPostponedTest ()
{
var scheduler = new TestScheduler ();
var broadcast = new BroadcastBlock<int> (
null,
new DataflowBlockOptions { TaskScheduler = scheduler, BoundedCapacity = 1 });
ITargetBlock<int> target = broadcast;
var source = new TestSourceBlock<int> ();
Assert.IsTrue (broadcast.Post (1));
var header = new DataflowMessageHeader (1);
source.AddMessage (header, 2);
Assert.AreEqual (DataflowMessageStatus.Postponed,
target.OfferMessage (header, 2, source, false));
Assert.IsFalse (source.WasConsumed (header));
scheduler.ExecuteAll ();
Assert.IsTrue (source.WasConsumed (header));
}
示例10: DefaultSchedulerIsDefaultTest
public void DefaultSchedulerIsDefaultTest ()
{
var scheduler = new TestScheduler ();
var factory = new TaskFactory (scheduler);
ActionBlock<int> action = null;
var task = factory.StartNew (() =>
{
Assert.AreEqual (scheduler, TaskScheduler.Current);
action = new ActionBlock<int> (
i => Assert.AreNotEqual (scheduler, TaskScheduler.Current));
Assert.IsTrue (action.Post (1));
action.Complete ();
});
Assert.AreEqual (1, scheduler.ExecuteAll ());
Assert.IsNotNull (action);
Assert.IsTrue (action.Completion.Wait (1000));
Assert.IsTrue (task.Wait (0));
}
示例11: MaxMessagesBroadcastTest
public void MaxMessagesBroadcastTest ()
{
var scheduler = new TestScheduler ();
var source = new BroadcastBlock<int> (
null, new DataflowBlockOptions { TaskScheduler = scheduler });
var target = new BufferBlock<int>(
new DataflowBlockOptions { TaskScheduler = scheduler, BoundedCapacity = 1 });
Assert.IsNotNull (
source.LinkTo (target, new DataflowLinkOptions { MaxMessages = 2 }));
// should be accepted
Assert.IsTrue (source.Post (42));
scheduler.ExecuteAll ();
// should be postponed, but counted into the limit
Assert.IsTrue (source.Post (43));
scheduler.ExecuteAll ();
// shouldn't be even offered for now
Assert.IsTrue (source.Post (44));
scheduler.ExecuteAll ();
int item;
Assert.IsTrue (target.TryReceive (out item));
Assert.AreEqual (42, item);
scheduler.ExecuteAll ();
Assert.IsTrue (target.TryReceive (out item));
Assert.AreEqual (44, item);
}
示例12: LinkToPredicateMaxMessagesTest
public void LinkToPredicateMaxMessagesTest ()
{
var scheduler = new TestScheduler ();
var source = new BufferBlock<int> (
new DataflowBlockOptions { TaskScheduler = scheduler });
var target = new BufferBlock<int> ();
source.LinkTo (target, new DataflowLinkOptions { MaxMessages = 1 },
i => i % 2 == 1);
Assert.IsTrue (source.Post (2));
Assert.IsTrue (source.Post (1));
Assert.IsTrue (source.Post (3));
scheduler.ExecuteAll ();
int item;
Assert.IsFalse (target.TryReceive (out item));
Assert.IsTrue (source.TryReceive (out item));
Assert.AreEqual (2, item);
scheduler.ExecuteAll ();
Assert.IsTrue (target.TryReceive (out item));
Assert.AreEqual (1, item);
scheduler.ExecuteAll ();
Assert.IsFalse (target.TryReceive (out item));
}
示例13: AsyncCancelledTest
public void AsyncCancelledTest ()
{
var scheduler = new TestScheduler ();
var block = new TransformBlock<int, int> (
i =>
{
var tcs = new TaskCompletionSource<int> ();
tcs.SetCanceled ();
return tcs.Task;
}, new ExecutionDataflowBlockOptions { TaskScheduler = scheduler });
Assert.IsTrue (block.Post (1));
scheduler.ExecuteAll ();
Assert.IsFalse (block.Completion.Wait (100));
}
示例14: NonGreedyMaxNumberOfGroupsTest
public void NonGreedyMaxNumberOfGroupsTest ()
{
var scheduler = new TestScheduler ();
var block = new JoinBlock<int, int> (
new GroupingDataflowBlockOptions
{ MaxNumberOfGroups = 1, Greedy = false, TaskScheduler = scheduler });
var source1 = new TestSourceBlock<int> ();
var source2 = new TestSourceBlock<int> ();
var header1 = new DataflowMessageHeader (1);
source1.AddMessage (header1, 11);
source2.AddMessage (header1, 21);
Assert.AreEqual (DataflowMessageStatus.Postponed,
block.Target1.OfferMessage (header1, 11, source1, false));
Assert.AreEqual (DataflowMessageStatus.Postponed,
block.Target2.OfferMessage (header1, 21, source2, false));
scheduler.ExecuteAll ();
Assert.IsTrue (source1.WasConsumed (header1));
Assert.IsTrue (source2.WasConsumed (header1));
var header2 = new DataflowMessageHeader (2);
Assert.AreEqual (DataflowMessageStatus.DecliningPermanently,
block.Target1.OfferMessage (header2, 21, source1, false));
Tuple<int, int> tuple;
Assert.IsTrue (block.TryReceive (out tuple));
Assert.AreEqual (Tuple.Create (11, 21), tuple);
Assert.IsTrue (block.Completion.Wait (1000));
}
示例15: MaxNumberOfGroupsTest
public void MaxNumberOfGroupsTest ()
{
var scheduler = new TestScheduler ();
var block = new JoinBlock<int, int> (
new GroupingDataflowBlockOptions
{ MaxNumberOfGroups = 1, TaskScheduler = scheduler });
Assert.IsTrue (block.Target1.Post (1));
Assert.IsFalse (block.Target1.Post (2));
Assert.IsTrue (block.Target2.Post (3));
Assert.IsFalse (block.Target2.Post (4));
Tuple<int, int> batch;
Assert.IsTrue (block.TryReceive (out batch));
Assert.AreEqual (Tuple.Create (1, 3), batch);
Assert.IsFalse (block.TryReceive (out batch));
scheduler.ExecuteAll ();
Assert.IsTrue (block.Completion.Wait (1000));
}