public void CreateWithEnumerableParameterReturnsCorrectResult(
            Type argumentType)
        {
            var parameterInfo =
                typeof(SingleParameterType<>)
                    .MakeGenericType(new[] { argumentType })
                    .GetConstructors()
                    .First()
                    .GetParameters()
                    .First();
            var expected = new object();
            var context = new DelegatingSpecimenContext
            {
                OnResolve = r =>
                {
                    Assert.Equal(
                        new SeededRequest(
                            parameterInfo.ParameterType,
                            parameterInfo.Name),
                        r);
                    return expected;
                }
            };
            var sut = new OmitEnumerableParameterRequestRelay();

            var actual = sut.Create(parameterInfo, context);

            Assert.Equal(expected, actual);
        }
 public void CreateReturnsCorrectResultForNonParameterRequest(
     object request)
 {
     var sut = new OmitEnumerableParameterRequestRelay();
     var actual = sut.Create(request, new DelegatingSpecimenContext());
     Assert.Equal(new NoSpecimen(request), actual);
 }
        public void CreateWithNonEnumerableParameterRequestReturnsCorrectResult(
            Type argumentType)
        {
            var parameterInfo =
                typeof(SingleParameterType<>)
                    .MakeGenericType(new[] { argumentType })
                    .GetConstructors()
                    .First()
                    .GetParameters()
                    .First();
            var sut = new OmitEnumerableParameterRequestRelay();

            var dummyContext = new DelegatingSpecimenContext();
            var actual = sut.Create(parameterInfo, dummyContext);

#pragma warning disable 618
            var expected = new NoSpecimen(parameterInfo);
#pragma warning restore 618
            Assert.Equal(expected, actual);
        }
 public void SutIsSpecimenBuilder()
 {
     var sut = new OmitEnumerableParameterRequestRelay();
     Assert.IsAssignableFrom<ISpecimenBuilder>(sut);
 }
 public void CreateWithNullContextThrows()
 {
     var sut = new OmitEnumerableParameterRequestRelay();
     Assert.Throws<ArgumentNullException>(
         () => sut.Create(new object(), null));
 }
        public void CreateReturnsCorrectResultWhenContextReturnsOmitSpecimen(
            Type argumentType)
        {
            var parameterInfo =
                typeof(SingleParameterType<>)
                    .MakeGenericType(new[] { argumentType })
                    .GetConstructors()
                    .First()
                    .GetParameters()
                    .First();
            var context = new DelegatingSpecimenContext
            {
                OnResolve = r => new OmitSpecimen()
            };
            var sut = new OmitEnumerableParameterRequestRelay();

            var actual = sut.Create(parameterInfo, context);

            var expected = Array.CreateInstance(
                argumentType.GetGenericArguments().Single(),
                0);
            Assert.Equal(expected, actual);
        }