Пример #1
0
        public void CouldCompleteObserverBenchmark()
        {
            var count      = 10000000;
            var map        = new SortedMap <int, int>(count);
            var subscriber = new SumValuesObserver(true);

            map.Subscribe(subscriber);
            var expectedSum = 0;
            var sw          = new Stopwatch();

            sw.Start();
            for (int i = 0; i < count; i++)
            {
                map.Add(i, i);
                expectedSum += i;
            }

            Assert.IsFalse(subscriber.IsCompleted);
            map.Complete();
            Assert.IsTrue(subscriber.Completed.Result);
            sw.Stop();
            Console.WriteLine($"Elapsed: {sw.ElapsedMilliseconds}");
            Console.WriteLine($"MOps: {(count * 0.001) / sw.ElapsedMilliseconds}");

            Assert.AreEqual(expectedSum, subscriber.Sum);
            Assert.IsTrue(subscriber.IsCompleted);
        }
Пример #2
0
        public void CouldCompleteObserver(IMutableSeries <int, int> map)
        {
            var subscriber = new SumValuesObserver();
            var series     = map as Series <int, int>;
            var cursor     = (series + series).GetCursor();

            cursor.Source.Subscribe(subscriber);
            var expectedSum = 0;

            for (int i = 0; i < 10; i++)
            {
                map.Add(i, i);
                expectedSum += i;
            }

            Assert.IsFalse(subscriber.IsCompleted);
            map.Complete();
            Thread.Sleep(100);
            Assert.IsTrue(subscriber.IsCompleted);
            Thread.Sleep(1000);
            Assert.AreEqual(expectedSum * 2, subscriber.Sum);
        }