コード例 #1
0
ファイル: ActorTests.cs プロジェクト: poliset/Kts.ActorsLite
 public ExampleClass()
 {
     _criticalMethod = new MostRecentAsyncActor <CriticalParams>(cp =>
     {
         Console.WriteLine(cp.Key + " = " + cp.Value);
     });
 }
コード例 #2
0
ファイル: ActorTests.cs プロジェクト: poliset/Kts.ActorsLite
        public async Task TestRobustness()
        {
            var rand = new Random(42);
            int lastAction = -1, lastAction2 = 42;
            Action <int, CancellationToken> t = (r, tok) =>
            {
                lastAction = r;
                Task.Delay(rand.Next(100)).Wait();
            };
            var queue = new MostRecentAsyncActor <int>(t);

            for (var i = 0; i < 1000; i++)
            {
                var r = rand.Next();
                lastAction2 = r;

                var task = queue.Push(r);
                if (i == 999)
                {
                    await task;
                }
                else
                {
                    await Task.Delay(rand.Next(150));
                }
            }

            Assert.Equal(lastAction, lastAction2);
        }
コード例 #3
0
ファイル: ActorTests.cs プロジェクト: poliset/Kts.ActorsLite
        public async Task TestMostRecentSubAdd()
        {
            // queue some tasks that take 200ms 100ms apart
            var hits = new bool[10];
            Action <int, CancellationToken> t = (r, tok) =>
            {
                if (!tok.IsCancellationRequested)
                {
                    hits[r] = true;
                    Task.Delay(100).Wait();
                }
            };

            var  queue = new MostRecentAsyncActor <int>(t);
            Task last  = null;

            for (var i = 0; i < hits.Length; i++)
            {
                last = queue.Push(i);
                await Task.Delay(45);
            }
            if (last != null)
            {
                await last;
            }

            Assert.True(hits.Last());
        }
コード例 #4
0
ファイル: ActorTests.cs プロジェクト: poliset/Kts.ActorsLite
        public async Task TestMiddleSkipped()
        {
            var hits = new bool[3];

            Action <int, CancellationToken> t = (i, tok) =>
            {
                hits[i] = true;
                Task.Delay(20).Wait();
            };

            var queue = new MostRecentAsyncActor <int>(t);
            var t1    = queue.Push(0);
            var t2    = queue.Push(1);
            await queue.Push(2);

            Assert.True(t1.IsCompleted);
            Assert.True(t2.IsCompleted);
            // the hitFirst value is arbitrary (based on timing) and not particularly related to the goal
            Assert.False(hits[1]);
            Assert.True(hits[2]);
        }