public void CreateFromMultipleRequestReturnsCorrectResult(
            Type itemType,
            int arrayLength)
        {
            // Fixture setup
            var sut     = new MultipleToEnumerableRelay();
            var context = new DelegatingSpecimenContext
            {
                OnResolve = r =>
                {
                    Assert.Equal(
                        typeof(IEnumerable <>).MakeGenericType(itemType),
                        r);
                    return(Array.CreateInstance((Type)itemType, arrayLength));
                }
            };
            // Exercise system
            var request = new MultipleRequest(itemType);
            var actual  = sut.Create(request, context);

            // Verify outcome
            Assert.IsAssignableFrom(
                typeof(IEnumerable <>).MakeGenericType(itemType),
                actual);
            var enumerable =
                Assert.IsAssignableFrom <System.Collections.IEnumerable>(actual);

            Assert.Equal(arrayLength, enumerable.Cast <object>().Count());
            // Teardown
        }
        public void CreateFromMultipleSeededRequestReturnsCorrectResult(
            Type itemType,
            object seed,
            int arrayLength)
        {
            // Arrange
            var sut     = new MultipleToEnumerableRelay();
            var context = new DelegatingSpecimenContext
            {
                OnResolve = r =>
                {
                    Assert.Equal(
                        typeof(IEnumerable <>).MakeGenericType(itemType),
                        r);
                    return(Array.CreateInstance((Type)itemType, arrayLength));
                }
            };
            // Act
            var request = new MultipleRequest(new SeededRequest(itemType, seed));
            var actual  = sut.Create(request, context);

            // Assert
            Assert.IsAssignableFrom(
                typeof(IEnumerable <>).MakeGenericType(itemType),
                actual);
            var enumerable =
                Assert.IsAssignableFrom <System.Collections.IEnumerable>(actual);

            Assert.Equal(arrayLength, enumerable.Cast <object>().Count());
        }
        public void CreateWithNullContextThrows()
        {
            // Arrange
            var sut = new MultipleToEnumerableRelay();
            // Act & assert
            var dummyRequest = new object();

            Assert.Throws <ArgumentNullException>(
                () => sut.Create(dummyRequest, null));
        }
        public void CreateWithNullContextThrows()
        {
            // Fixture setup
            var sut = new MultipleToEnumerableRelay();
            // Exercise system and verify outcome
            var dummyRequest = new object();

            Assert.Throws <ArgumentNullException>(
                () => sut.Create(dummyRequest, null));
            // Teardown
        }
        public void CreateFromNonMultipleRequestReturnsCorrectResult(
            object request)
        {
            // Arrange
            var sut = new MultipleToEnumerableRelay();
            // Act
            var dummyContext = new DelegatingSpecimenContext();
            var actual       = sut.Create(request, dummyContext);
            // Assert
            var expected = new NoSpecimen();

            Assert.Equal(expected, actual);
        }
        public void CreateFromNonMultipleRequestReturnsCorrectResult(
            object request)
        {
            // Fixture setup
            var sut = new MultipleToEnumerableRelay();
            // Exercise system
            var dummyContext = new DelegatingSpecimenContext();
            var actual       = sut.Create(request, dummyContext);
            // Verify outcome
            var expected = new NoSpecimen(request);

            Assert.Equal(expected, actual);
            // Teardown
        }
        public void CreateFromMultipleSeededRequestWithNonTypeRequestReturnsCorrectResult(
            object innerRequest)
        {
            // Arrange
            var sut     = new MultipleToEnumerableRelay();
            var request = new MultipleRequest(
                new SeededRequest(
                    innerRequest,
                    new object()));
            // Act
            var dummyContext = new DelegatingSpecimenContext();
            var actual       = sut.Create(request, dummyContext);
            // Assert
            var expected = new NoSpecimen();

            Assert.Equal(expected, actual);
        }
        public void CreateFromMultipleRequestWithNonTypeRequestReturnsCorrectResult(
            object innerRequest)
        {
            // Fixture setup
            var sut     = new MultipleToEnumerableRelay();
            var request = new MultipleRequest(innerRequest);
            // Exercise system
            var dummyContext = new DelegatingSpecimenContext();
            var actual       = sut.Create(request, dummyContext);

            // Verify outcome
#pragma warning disable 618
            var expected = new NoSpecimen(request);
#pragma warning restore 618
            Assert.Equal(expected, actual);
            // Teardown
        }
        public void SutIsSpecimenBuilder()
        {
            var sut = new MultipleToEnumerableRelay();

            Assert.IsAssignableFrom <ISpecimenBuilder>(sut);
        }