public void Clear_WhenFactoryIsDisposed_ThrowsExpcetion()
        {
            var factory = new StumpResponseFactory(ResponseFactoryBehavior.OrderedInfinite);

            factory.Dispose();

            Assert.Throws <ObjectDisposedException>(() => factory.Clear());
        }
        public void Clear_WhenCalled_RemoveAllItemsInCollection()
        {
            var factory = new StumpResponseFactory(ResponseFactoryBehavior.OrderedInfinite);

            factory.Add(new BasicHttpResponse());

            factory.Clear();

            Assert.AreEqual(0, factory.Count);
        }
        public void Clear_WithTightThread_IsReasonablyWriteSafe()
        {
            var t = new Thread(() =>
            {
                var factory = new StumpResponseFactory(ResponseFactoryBehavior.OrderedInfinite);
                Assert.DoesNotThrow(() => Parallel.For(0, 1000, (i) => factory.Clear()));
            });

            t.Start();
            Assert.IsTrue(t.Join(1000));

            if (t.IsAlive)
            {
                t.Abort();
            }
        }
        public void Clear_WhenCalled_ResetsOrderPosition()
        {
            var factory = new StumpResponseFactory(ResponseFactoryBehavior.OrderedInfinite);

            PopulateFactoryWithMultipleResponses(factory, 3);

            Assert.AreEqual(1, factory.CreateResponse(new MockHttpRequest()).StatusCode);
            Assert.AreEqual(2, factory.CreateResponse(new MockHttpRequest()).StatusCode);

            factory.Clear();

            factory.Add(new BasicHttpResponse
            {
                StatusCode = 4
            });

            Assert.AreEqual(4, factory.CreateResponse(new MockHttpRequest()).StatusCode);
        }