示例#1
0
        public void BackgroundHttpRequester_StopAsync_Stops_Current_Active_Request()
        {
            var cancelled = false;
            var mre       = new ManualResetEventSlim();

            Func <Uri, CancellationToken, bool> processor = (u, c) =>
            {
                try
                {
                    mre.Wait(c);
                }
                catch (AggregateException)
                {
                }
                catch (OperationCanceledException)
                {
                }
                mre.Set();
                cancelled = c.IsCancellationRequested;
                return(true);
            };

            var requester = new BackgroundHttpFuncRequester(processor);

            requester.Add(TestHelpers.CreateRequestList(1)[0]);
            requester.Start(TimeSpan.FromMilliseconds(10));

            Assert.IsFalse(cancelled);
            requester.StopAsync().Wait(3000);

            Assert.IsTrue(mre.Wait(3000));
            Assert.IsTrue(cancelled);
        }
示例#2
0
        public void BackgroundHttpRequester_Start_Uses_Previous_List()
        {
            var expectedList = TestHelpers.CreateRequestList(4);
            var actualList   = new List <Uri>();
            Func <Uri, CancellationToken, bool> processor = (u, c) => { actualList.Add(u); return(true); };

            var requester = new BackgroundHttpFuncRequester(processor);

            requester.Start(TimeSpan.FromMilliseconds(10), expectedList);

            TestHelpers.WaitForQueueToEmpty(requester);
            Assert.AreEqual(expectedList.Count, actualList.Count);
            CollectionAssert.AreEqual(expectedList, actualList);
        }
示例#3
0
        public void BackgroundHttpRequester_StopAsync_Stops_Requesting()
        {
            var actualList = new List <Uri>();
            Func <Uri, CancellationToken, bool> processor = (u, c) => { actualList.Add(u); return(true); };

            var requester = new BackgroundHttpFuncRequester(processor);

            requester.Start(TimeSpan.FromMilliseconds(10));
            requester.StopAsync().Wait();
            foreach (var uri in TestHelpers.CreateRequestList(3))
            {
                requester.Add(uri);
            }

            Assert.AreEqual(0, actualList.Count);
            Assert.AreEqual(3, requester.QueueCount);
        }