public void ConcatHandlerReturnsExpectedResult()
        {
            var handler1 = new CloudTableProjectionHandler(typeof(object), (client, message, token) => Task.FromResult(false));
            var handler2 = new CloudTableProjectionHandler(typeof(object), (client, message, token) => Task.FromResult(false));
            var handler3 = new CloudTableProjectionHandler(typeof(object), (client, message, token) => Task.FromResult(false));
            var sut = new CloudTableProjection(new[]
            {
                handler1,
                handler2
            });

            var result = sut.Concat(handler3);

            Assert.That(result.Handlers, Is.EquivalentTo(new[] { handler1, handler2, handler3 }));
        }
        public void ConcatHandlerReturnsExpectedResult()
        {
            var handler1 = new CloudTableProjectionHandler(typeof(object), (client, message, token) => Task.FromResult(false));
            var handler2 = new CloudTableProjectionHandler(typeof(object), (client, message, token) => Task.FromResult(false));
            var handler3 = new CloudTableProjectionHandler(typeof(object), (client, message, token) => Task.FromResult(false));
            var sut      = new CloudTableProjection(new[]
            {
                handler1,
                handler2
            });

            var result = sut.Concat(handler3);

            Assert.That(result.Handlers, Is.EquivalentTo(new[] { handler1, handler2, handler3 }));
        }
        public void ExplicitConversionToCloudTableProjectionHandlerArray()
        {
            var handler1 = new CloudTableProjectionHandler(typeof(object), (client, message, token) => Task.FromResult(false));
            var handler2 = new CloudTableProjectionHandler(typeof(object), (client, message, token) => Task.FromResult(false));

            var handlers = new[]
            {
                handler1,
                handler2
            };

            var sut = new CloudTableProjection(handlers);

            var result = (CloudTableProjectionHandler[])sut;

            Assert.That(result, Is.EquivalentTo(handlers));
        }
        public void HandlersArePreservedAsProperty()
        {
            var handler1 = new CloudTableProjectionHandler(typeof(object), (client, message, token) => Task.FromResult(false));
            var handler2 = new CloudTableProjectionHandler(typeof(object), (client, message, token) => Task.FromResult(false));

            var handlers = new[]
            {
                handler1,
                handler2
            };

            var sut = new CloudTableProjection(handlers);

            var result = sut.Handlers;

            Assert.That(result, Is.EquivalentTo(handlers));
        }
        public void DecoratedProjectionHandlersAreCopiedOnConstruction()
        {
            var handler1 = new CloudTableProjectionHandler(typeof(object), (client, message, token) => Task.FromResult(false));
            var handler2 = new CloudTableProjectionHandler(typeof(object), (client, message, token) => Task.FromResult(false));
            var projection = new CloudTableProjection(new[]
            {
                handler1,
                handler2
            });
            var sut = new CloudTableProjectionBuilder(projection);

            var result = sut.Build();

            Assert.That(result.Handlers, Is.EquivalentTo(new[]
            {
                handler1, handler2
            }));
        }
        public void DecoratedProjectionHandlersAreCopiedOnConstruction()
        {
            var handler1   = new CloudTableProjectionHandler(typeof(object), (client, message, token) => Task.FromResult(false));
            var handler2   = new CloudTableProjectionHandler(typeof(object), (client, message, token) => Task.FromResult(false));
            var projection = new CloudTableProjection(new[]
            {
                handler1,
                handler2
            });
            var sut = new CloudTableProjectionBuilder(projection);

            var result = sut.Build();

            Assert.That(result.Handlers, Is.EquivalentTo(new[]
            {
                handler1, handler2
            }));
        }
        public void ImplicitConversionToCloudTableProjectionHandlerArray()
        {
            var handler1 = new CloudTableProjectionHandler(typeof(object), (client, message, token) => Task.FromResult(false));
            var handler2 = new CloudTableProjectionHandler(typeof(object), (client, message, token) => Task.FromResult(false));

            var handlers = new[]
            {
                handler1,
                handler2
            };

            var sut = new CloudTableProjection(handlers);

            CloudTableProjectionHandler[] result = sut;

            Assert.That(result, Is.EquivalentTo(handlers));
        }
        public void HandlersArePreservedAsProperty()
        {
            var handler1 = new CloudTableProjectionHandler(typeof(object), (client, message, token) => Task.FromResult(false));
            var handler2 = new CloudTableProjectionHandler(typeof(object), (client, message, token) => Task.FromResult(false));

            var handlers = new[]
            {
                handler1,
                handler2
            };

            var sut = new CloudTableProjection(handlers);

            var result = sut.Handlers;

            Assert.That(result, Is.EquivalentTo(handlers));
        }