public void CreateFromTypeWhenParentCanGenerateBothParametersWillReturnCorrectResult()
        {
            // Fixture setup
            var expectedParameterValues = new object[] { 1, 2m };
            var parameterQueue = new Queue<object>(expectedParameterValues);

            var requestedType = typeof(DoubleParameterType<int, decimal>);
            var parameters = requestedType.GetConstructors().Single().GetParameters();

            var container = new DelegatingSpecimenContext();
            container.OnResolve = r =>
            {
                if (parameters.Any(r.Equals))
                {
                    return parameterQueue.Dequeue();
                }
                return null;
            };

            var sut = new MethodInvoker(new ModestConstructorQuery());
            // Exercise system
            var result = sut.Create(requestedType, container);
            // Verify outcome
            var actual = (DoubleParameterType<int, decimal>)result;
            Assert.Equal(expectedParameterValues[0], actual.Parameter1);
            Assert.Equal(expectedParameterValues[1], actual.Parameter2);
            // Teardown
        }
 public void ExecuteNullSpecimenThrows()
 {
     var sut = new DictionaryFiller();
     var dummyContext = new DelegatingSpecimenContext();
     Assert.Throws<ArgumentNullException>(() =>
         sut.Execute(null, dummyContext));
 }
        public static IEnumerable<ITestCase> CreateWithInvalidRequestReturnsNoSpecimen()
        {
            var invalidRequests = new[]
            {
                null,
                new object(),
                string.Empty,
                123,
                typeof(int),
                typeof(object[]),
                typeof(string[][])
            };
            return invalidRequests.Select(r => new TestCase(() =>
            {
                var sut = new MultidimensionalArrayRelay();
                var dummyContext = new DelegatingSpecimenContext();
#pragma warning disable 618
                var expected = new NoSpecimen(r);
#pragma warning restore 618

                var actual = sut.Create(r, dummyContext);

                Assert.Equal(expected, actual);
            }));
        }
        public void CreateWillReturnCorrectResult()
        {
            // Fixture setup
            var expectedSpecimen = new object();

            var param1 = new { ExpectedRequest = typeof(decimal), Specimen = (object)1m };
            var param2 = new { ExpectedRequest = typeof(TimeSpan), Specimen = (object)TimeSpan.FromDays(1) };
            var subRequests = new[] { param1, param2 };

            var container = new DelegatingSpecimenContext();
            container.OnResolve = r => (from x in subRequests
                                        where x.ExpectedRequest.Equals(r)
#pragma warning disable 618
                                        select x.Specimen).DefaultIfEmpty(new NoSpecimen(r)).SingleOrDefault();
#pragma warning restore 618

            Func<decimal, TimeSpan, object> f = (d, ts) => param1.Specimen.Equals(d) && param2.Specimen.Equals(ts) ? expectedSpecimen : new NoSpecimen();
            var sut = new SpecimenFactory<decimal, TimeSpan, object>(f);
            // Exercise system
            var dummyRequest = new object();
            var result = sut.Create(dummyRequest, container);
            // Verify outcome
            Assert.Equal(expectedSpecimen, result);
            // Teardown
        }
        public void CreateWillReturnCorrectResult()
        {
            // Fixture setup
            var expectedSpecimen = new object();

            var param1 = new { ExpectedRequest = typeof(decimal), Specimen = (object)1m };
            var param2 = new { ExpectedRequest = typeof(TimeSpan), Specimen = (object)TimeSpan.FromDays(1) };
            var param3 = new { ExpectedRequest = typeof(string), Specimen = (object)"Anonymous value - with Foo!" };
            var param4 = new { ExpectedRequest = typeof(int), Specimen = (object)7 };
            var subRequests = new[] { param1, param2, param3, param4 };

            var container = new DelegatingSpecimenContext();
            container.OnResolve = r => (from x in subRequests
                                        where x.ExpectedRequest.Equals(r)
                                        select x.Specimen).DefaultIfEmpty(new NoSpecimen(r)).SingleOrDefault();

            Func<decimal, TimeSpan, string, int, object> f = (d, ts, s, i) =>
                param1.Specimen.Equals(d) && param2.Specimen.Equals(ts) && param3.Specimen.Equals(s) && param4.Specimen.Equals(i) ? expectedSpecimen : new NoSpecimen();
            var sut = new SpecimenFactory<decimal, TimeSpan, string, int, object>(f);
            // Exercise system
            var dummyRequest = new object();
            var result = sut.Create(dummyRequest, container);
            // Verify outcome
            Assert.Equal(expectedSpecimen, result);
            // Teardown
        }
 public void CreateWithMailAddressRequestReturnsCorrectResultUsingLocalPartAndDomainNameFromContext()
 {
     // Fixture setup
     var request = typeof(MailAddress);
     var expectedLocalPart = new EmailAddressLocalPart(Guid.NewGuid().ToString());
     var expectedDomainName = new DomainName(Guid.NewGuid().ToString());
     var context = new DelegatingSpecimenContext()
     {
         OnResolve = r =>
        {
            Assert.True(typeof(EmailAddressLocalPart).Equals(r) || typeof(DomainName).Equals(r));
            if (typeof(EmailAddressLocalPart).Equals(r))
            {
                return expectedLocalPart;
            }
            else
            {
                return expectedDomainName;
            }
        }
     };
     var sut = new MailAddressGenerator();
     // Exercise system
     var result = (MailAddress)sut.Create(request, context);
     // Verify outcome
     Assert.Equal(expectedLocalPart.LocalPart, result.User);
     Assert.Equal(expectedDomainName.Domain, result.Host);
     // Teardown
 }
        public void ExecutesEveryChildCommandWithCorrectSpecimen()
        {
            // Fixture setup
            var specimen = new object();
            var dummyContext = new DelegatingSpecimenContext();

            var command1Verified = false;
            var command1 = new DelegatingSpecimenCommand
                {
                    OnExecute = (req, ctx) =>
                        {
                            command1Verified = true;
                            Assert.Same(specimen, req);
                        }
                };

            var command2Verified = false;
            var command2 = new DelegatingSpecimenCommand
                {
                    OnExecute = (req, ctx) =>
                        {
                            command2Verified = true;
                            Assert.Same(specimen, req);
                        }
                };

            var sut = new CompositeSpecimenCommand(command1, command2);
            // Exercise system
            sut.Execute(specimen, dummyContext);
            // Verify outcome
            Assert.True(command1Verified);
            Assert.True(command2Verified);
            // Teardown
        }
 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 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 OmitArrayParameterRequestRelay();

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

            Assert.Equal(expected, actual);
        }
 public void AddManyToNonDictionaryThrows(object specimen)
 {
     // Fixture setup
     var dummyContext = new DelegatingSpecimenContext();
     // Exercise system and verify outcome
     Assert.Throws<ArgumentException>(() =>
         DictionaryFiller.AddMany(specimen, dummyContext));
     // Teardown
 }
 public void ExecuteWithNullSpecimenThrows()
 {
     // Fixture setup
     var sut = new AutoPropertiesCommand<object>();
     var dummyContainer = new DelegatingSpecimenContext();
     // Exercise system and verify outcome
     Assert.Throws<ArgumentNullException>(() => sut.Execute(null, dummyContainer));
     // Teardown
 }
Example #12
0
 public void CreateFromIntPtrRequestThrows()
 {
     // Fixture setup
     var sut = new IntPtrGuard();
     var dummyContext = new DelegatingSpecimenContext();
     // Exercise system and verify outcome
     Assert.Throws<IllegalRequestException>(() =>
         sut.Create(typeof(IntPtr), dummyContext));
     // Teardown
 }
Example #13
0
 public void CreateWithNullRequestThrows()
 {
     // Fixture setup
     var sut = new Omitter();
     // Exercise system and verify outcome
     var dummyContext = new DelegatingSpecimenContext();
     Assert.Throws<ArgumentNullException>(() =>
         sut.Create(null, dummyContext));
     // Teardown
 }
 public void CreateWithCorrectTypeRequestWillReturnCorrectTypeSpecimen()
 {
     // Fixture setup
     var dummyContext = new DelegatingSpecimenContext();
     var sut = new ElementsBuilder<int>(42);
     // Exercise system
     var result = sut.Create(typeof(int), dummyContext);
     // Verify outcome
     Assert.Equal(typeof(int), result.GetType());
     // Teardown
 }
 public void CreateWithNullRequestReturnsCorrectResult()
 {
     // Fixture setup
     var sut = new CharSequenceGenerator();
     // Exercise system
     var dummyContext = new DelegatingSpecimenContext();
     var result = sut.Create(null, dummyContext);
     // Verify outcome
     Assert.Equal(new NoSpecimen(), result);
     // Teardown
 }
 public void CreateWithNonCorrectTypeRequestWillReturnNoSpecimen()
 {
     // Fixture setup
     var dummyContext = new DelegatingSpecimenContext();
     var sut = new ElementsBuilder<int>(42);
     // Exercise system
     var result = sut.Create(typeof(string), dummyContext);
     // Verify outcome
     Assert.True(result is NoSpecimen);
     // Teardown
 }
 public void CreateWithNullRequestWillReturnCorrectResult()
 {
     // Fixture setup
     var sut = new BooleanSwitch();
     // Exercise system
     var dummyContainer = new DelegatingSpecimenContext();
     var result = sut.Create(null, dummyContainer);
     // Verify outcome
     Assert.Equal(new NoSpecimen(), result);
     // Teardown
 }
 public void CreateAnonymousOnContainerReturnsCorrectResult()
 {
     // Fixture setup
     object expectedResult = 1;
     var container = new DelegatingSpecimenContext { OnResolve = r => r.Equals(new SeededRequest(typeof(int), 0)) ? expectedResult : new NoSpecimen(r) };
     // Exercise system
     var result = container.CreateAnonymous<int>();
     // Verify outcome
     Assert.Equal(expectedResult, result);
     // Teardown
 }
 public void CreateWithNullRequestReturnsCorrectResult()
 {
     // Fixture setup
     var sut = new RegularExpressionAttributeRelay();
     // Exercise system
     var dummyContext = new DelegatingSpecimenContext();
     var result = sut.Create(null, dummyContext);
     // Verify outcome
     Assert.Equal(new NoSpecimen(), result);
     // Teardown
 }
 public void CreateThrowsCorrectException()
 {
     // Fixture setup
     var sut = new MutableValueTypeWarningThrower();
     var dummyRequest = new object();
     var dummyContext = new DelegatingSpecimenContext();
     // Exercise system and verify outcome
     Assert.Throws<ObjectCreationException>(() =>
         sut.Create(dummyRequest, dummyContext));
     // Teardown
 }
 public void RequestForEnumTypeReturnsCorrectResult(Type enumType, int requestCount, object expectedResult)
 {
     // Fixture setup
     var sut = new EnumGenerator();
     // Exercise system
     var dummyContext = new DelegatingSpecimenContext();
     var result = Enumerable.Repeat<Func<object>>(() => sut.Create(enumType, dummyContext), requestCount).Select(f => f()).Last();
     // Verify outcome
     Assert.Equal(expectedResult, result);
     // Teardown
 }
 public void CreateWithOneElementCollectionWillReturnThatElement()
 {
     // Fixture setup
     var dummyContext = new DelegatingSpecimenContext();
     var sut = new ElementsBuilder<int>(42);
     // Exercise system
     var result = sut.Create(typeof(int), dummyContext);
     // Verify outcome
     Assert.Equal(42, result);
     // Teardown
 }
 public void CreateWithNonTypeRequestReturnsNoSpecimen(object request)
 {
     // Fixture setup
     var sut = new RandomDateTimeSequenceGenerator();
     // Exercise system
     var dummyContainer = new DelegatingSpecimenContext();
     var result = sut.Create(request, dummyContainer);
     // Verify outcome
     Assert.Equal(new NoSpecimen(request), result);
     // Teardown
 }
Example #24
0
 public void CreateWithNoneArrayRequestReturnsCorrectResult(object request)
 {
     // Fixture setup
     var sut = new ArrayRelay();
     // Exercise system
     var dummyContext = new DelegatingSpecimenContext();
     var result = sut.Create(request, dummyContext);
     // Verify outcome
     var expectedResult = new NoSpecimen(request);
     Assert.Equal(expectedResult, result);
     // Teardown
 }
 public void CreateWithCharRequestReturnsCorrectResult()
 {
     // Fixture setup
     var charRequest = typeof(char);
     var sut = new CharSequenceGenerator();
     // Exercise system
     var dummyContext = new DelegatingSpecimenContext();
     var result = sut.Create(charRequest, dummyContext);
     // Verify outcome
     Assert.Equal('!', result);
     // Teardown
 }
 public void CreateWithUInt16RequestWillReturnCorrectResult()
 {
     // Fixture setup
     var uInt16Request = typeof(ushort);
     var sut = new UInt16SequenceGenerator();
     // Exercise system
     var dummyContainer = new DelegatingSpecimenContext();
     var result = sut.Create(uInt16Request, dummyContainer);
     // Verify outcome
     Assert.Equal((ushort)1, result);
     // Teardown
 }
 public void CreateWithNullRequestReturnsNoSpecimen()
 {
     // Fixture setup
     var seed = DateTime.Now;
     var sut = new StrictlyMonotonicallyIncreasingDateTimeGenerator(seed);
     // Exercise system
     var dummyContainer = new DelegatingSpecimenContext();
     var result = sut.Create(null, dummyContainer);
     // Verify outcome
     Assert.Equal(new NoSpecimen(), result);
     // Teardown
 }
 public void CreateWithNullRequestWillReturnNull()
 {
     // Fixture setup
     var sut = new StringSeedRelay();
     // Exercise system
     var dummyContainer = new DelegatingSpecimenContext();
     var result = sut.Create(null, dummyContainer);
     // Verify outcome
     var expectedResult = new NoSpecimen();
     Assert.Equal(expectedResult, result);
     // Teardown
 }
        public void ThrowsAtRecursionPoint()
        {
            // Fixture setup
            var builder = new DelegatingSpecimenBuilder();
            builder.OnCreate = (r, c) => c.Resolve(r);
            var sut = new ThrowingRecursionGuard(builder);
            var container = new DelegatingSpecimenContext();
            container.OnResolve = r => sut.Create(r, container); // Provoke recursion

            // Exercise system
            Assert.Throws(typeof(ObjectCreationException), () => sut.Create(Guid.NewGuid(), container));
        }
 public void CreateWithInvalidRequestReturnsCorrectResult(object request)
 {
     // Fixture setup
     var sut = new SeededFactory<int>(s => s);
     // Exercise system
     var dummyContainer = new DelegatingSpecimenContext();
     var result = sut.Create(request, dummyContainer);
     // Verify outcome
     var expectedResult = new NoSpecimen(request);
     Assert.Equal(expectedResult, result);
     // Teardown
 }
Example #31
0
        public void CreateFromNonMatchingRequestReturnsCorrectResult(
            object request)
        {
            // Fixture setup
            var from    = typeof(OperatingSystem);
            var dummyTo = typeof(object);
            var sut     = new TypeRelay(from, dummyTo);
            // 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
        }
Example #32
0
        public void CreateFromMatchingRequestReturnsCorrectResult(
            Type from,
            Type to)
        {
            // Fixture setup
            var sut      = new TypeRelay(from, to);
            var expected = new object();
            var context  = new DelegatingSpecimenContext
            {
                OnResolve = r => to.Equals(r) ? expected : new object()
            };
            // Exercise system
            var actual = sut.Create(from, context);

            // Verify outcome
            Assert.Equal(expected, actual);
            // Teardown
        }
        public void ExecuteCorrectlyInvokeDoubleAction()
        {
            // Fixture setup
            var specimen = this.CreateSpecimen();
            var context  = new DelegatingSpecimenContext();

            var verified = false;
            Action <T, ISpecimenContext> mock =
                (s, c) => verified = specimen.Equals(s) && c == context;

            var sut = new ActionSpecimenCommand <T>(mock);

            // Exercise system
            sut.Execute(specimen, context);
            // Verify outcome
            Assert.True(verified, "Action not invoked with expected specimen.");
            // Teardown
        }
        public void CreateReturnsCorrectResult()
        {
            // Fixture setup
            var request        = new object();
            var context        = new DelegatingSpecimenContext();
            var expectedResult = new object();
            var builder        = new DelegatingSpecimenBuilder {
                OnCreate = (r, c) => r == request && c == context ? expectedResult : new NoSpecimen(r)
            };

            var sut = new NoSpecimenOutputGuard(builder);
            // Exercise system
            var result = sut.Create(request, context);

            // Verify outcome
            Assert.Equal(expectedResult, result);
            // Teardown
        }
Example #35
0
        public void CreateWithReturnValueParameterlessDelegateRequestReturnsDelegateReturningValueSpecimen()
        {
            // Fixture setup
            var delegateRequest = typeof(Func <int>);
            var expectedResult  = 3;
            var sut             = new DelegateGenerator();
            // Exercise system
            var dummyContainer = new DelegatingSpecimenContext
            {
                OnResolve = arg => expectedResult
            };
            var result = sut.Create(delegateRequest, dummyContainer);
            // Verify outcome
            var actualResult = ((Func <int>)result).Invoke();

            Assert.Equal(expectedResult, actualResult);
            // Teardown
        }
Example #36
0
        public void ExecuteWillQuerySpecificationWithCorrectFieldInfo()
        {
            // Fixture setup
            var expectedFieldInfo = typeof(FieldHolder <string>).GetField("Field");
            var verified          = false;
            var specMock          = new DelegatingRequestSpecification {
                OnIsSatisfiedBy = r => verified = expectedFieldInfo.Equals(r)
            };
            var sut = new AutoPropertiesCommand <FieldHolder <string> >(specMock);
            // Exercise system
            var specimen       = new FieldHolder <string>();
            var dummyContainer = new DelegatingSpecimenContext();

            sut.Execute(specimen, dummyContainer);
            // Verify outcome
            Assert.True(verified, "Mock verified");
            // Teardown
        }
Example #37
0
        public void CreateReturnsCorrectResultWhenContextReturnsNonEnumerableResult(object response)
        {
            // Fixture setup
            var request = typeof(object[]);
            var context = new DelegatingSpecimenContext {
                OnResolve = r => response
            };
            var sut = new ArrayRelay();
            // Exercise system
            var result = sut.Create(request, context);

            // Verify outcome
#pragma warning disable 618
            var expectedResult = new NoSpecimen(request);
#pragma warning restore 618
            Assert.Equal(expectedResult, result);
            // Teardown
        }
        public void CreateReturnsCorrectResultOnSutWithDoubleAction()
        {
            // Fixture setup
            var expectedResult = 1m;
            var builder        = new DelegatingSpecimenBuilder {
                OnCreate = (r, c) => expectedResult
            };
            Action <decimal, ISpecimenContext> dummyAction = (s, c) => { };
            var sut = new Postprocessor <decimal>(builder, dummyAction);
            // Exercise system
            var dummyRequest   = new object();
            var dummyContainer = new DelegatingSpecimenContext();
            var result         = sut.Create(dummyRequest, dummyContainer);

            // Verify outcome
            Assert.Equal(expectedResult, result);
            // Teardown
        }
Example #39
0
        public void CreateWillNotTrackFilteredRequest()
        {
            // Fixture setup
            object tracked         = null;
            object requestedObject = new object();
            var    sut             = new DelegatingTracingBuilder();

            sut.Filter = new DelegatingRequestSpecification {
                OnIsSatisfiedBy = r => false
            };
            // Exercise system
            var dummyContainer = new DelegatingSpecimenContext();

            sut.Create(requestedObject, dummyContainer);
            // Verify outcome
            Assert.Null(tracked);
            // Teardown
        }
Example #40
0
        public void CreateWillTrackCreatedSpecimen()
        {
            // Fixture setup
            object tracked         = null;
            object createdSpecimen = Guid.NewGuid();
            var    container       = new DelegatingSpecimenContext {
                OnResolve = r => createdSpecimen
            };
            var sut = new DelegatingTracingBuilder();

            // Exercise system
            object res = sut.Create(new object(), container);

            // Verify outcome
            Assert.Equal(res, tracked);

            // Teardown
        }
        public void CreateFromMultipleSeededRequestWithNonTypeRequestReturnsCorrectResult(
            object innerRequest)
        {
            // Fixture setup
            var sut     = new MultipleToEnumerableRelay();
            var request = new MultipleRequest(
                new SeededRequest(
                    innerRequest,
                    new object()));
            // Exercise system
            var dummyContext = new DelegatingSpecimenContext();
            var actual       = sut.Create(request, dummyContext);
            // Verify outcome
            var expected = new NoSpecimen(request);

            Assert.Equal(expected, actual);
            // Teardown
        }
Example #42
0
        public void CreateReturnsCorrectResult()
        {
            // Fixture setup
            var expectedResult = new object();
            var builder        = new DelegatingSpecimenBuilder {
                OnCreate = (r, c) => expectedResult
            };
            var dummyCommand = new DelegatingSpecimenCommand();
            var sut          = new Postprocessor(builder, dummyCommand);
            // Exercise system
            var dummyRequest   = new object();
            var dummyContainer = new DelegatingSpecimenContext();
            var result         = sut.Create(dummyRequest, dummyContainer);

            // Verify outcome
            Assert.Equal(expectedResult, result);
            // Teardown
        }
        public void CreateReturnsCorrectResultWhenBuilderReturnsNoSpecimen()
        {
            // Fixture setup
            var builder = new DelegatingSpecimenBuilder {
                OnCreate = (r, c) => new NoSpecimen()
            };

            Action <int> dummyAction = s => { };
            var          sut         = new Postprocessor <int>(builder, dummyAction);
            // Exercise system
            var dummyRequest   = new object();
            var dummyContainer = new DelegatingSpecimenContext();
            var result         = sut.Create(dummyRequest, dummyContainer);

            // Verify outcome
            Assert.IsAssignableFrom <NoSpecimen>(result);
            // Teardown
        }
Example #44
0
        public void ExecuteWillAssignCorrectPropertyValue()
        {
            // Fixture setup
            var expectedPropertyValue = new object();
            var container             = new DelegatingSpecimenContext {
                OnResolve = r => expectedPropertyValue
            };

            var sut = new AutoPropertiesCommand <PropertyHolder <object> >();

            var specimen = new PropertyHolder <object>();

            // Exercise system
            sut.Execute(specimen, container);
            // Verify outcome
            Assert.Equal(expectedPropertyValue, specimen.Property);
            // Teardown
        }
Example #45
0
        public void SpecimenFormatterIsGivenCorrectTextWriter()
        {
            // Fixture setup
            var expectedWriter = new StringWriter();
            var sut            = new TraceWriter(expectedWriter, new DelegatingTracingBuilder());

            bool verified = false;

            sut.TraceSpecimenFormatter = (tw, r, i) => verified = tw == expectedWriter;
            // Exercise system
            var dummyRequest   = new object();
            var dummyContainer = new DelegatingSpecimenContext();

            sut.Create(dummyRequest, dummyContainer);
            // Verify outcome
            Assert.True(verified);
            // Teardown
        }
Example #46
0
        public void CreateWillPassThroughToDecoratedBuilder()
        {
            // Fixture setup
            object expectedSpecimen = Guid.NewGuid();
            var    decoratedBuilder = new DelegatingSpecimenBuilder {
                OnCreate = (r, c) => r
            };
            var sut = new DelegatingTracingBuilder(decoratedBuilder);

            // Exercise system
            var    dummyContainer = new DelegatingSpecimenContext();
            object result         = sut.Create(expectedSpecimen, dummyContainer);

            // Verify outcome
            Assert.Equal(expectedSpecimen, result);

            // Teardown
        }
Example #47
0
        public void CreateWithCorrectSeedWillReturnCorrectResult()
        {
            // Fixture setup
            var seed           = 7m;
            var seededRequest  = new SeededRequest(typeof(decimal), seed);
            var expectedResult = 3m;

            Func <decimal, decimal> factoryStub = s => s == seed ? expectedResult : 0m;

            var sut = new SeededFactory <decimal>(factoryStub);
            // Exercise system
            var dummyContext = new DelegatingSpecimenContext();
            var result       = sut.Create(seededRequest, dummyContext);

            // Verify outcome
            Assert.Equal(expectedResult, result);
            // Teardown
        }
Example #48
0
        public void ExecuteWillSetCorrectFieldOnSpecimenWhenAnonymousValueIsImplied()
        {
            // Fixture setup
            var expectedValue   = new object();
            var expectedRequest = typeof(FieldHolder <object>).GetField("Field");
            var container       = new DelegatingSpecimenContext {
                OnResolve = r => expectedRequest.Equals(r) ? expectedValue : new NoSpecimen()
            };

            var sut      = new BindingCommand <FieldHolder <object>, object>(ph => ph.Field);
            var specimen = new FieldHolder <object>();

            // Exercise system
            sut.Execute(specimen, container);
            // Verify outcome
            Assert.Equal(expectedValue, specimen.Field);
            // Teardown
        }
        public void CreateFromSeedWhenContainerCanSatisfyWrappedRequestWillReturnCorrectResult()
        {
            // Fixture setup
            var anonymousSeed = new SeededRequest(typeof(object), new object());

            var expectedResult = new object();
            var container      = new DelegatingSpecimenContext {
                OnResolve = r => expectedResult
            };

            var sut = new SeedIgnoringRelay();
            // Exercise system
            var result = sut.Create(anonymousSeed, container);

            // Verify outcome
            Assert.Equal(expectedResult, result);
            // Teardown
        }
        public void DecoratedDisposableResultIsOnlyAddedToDisposablesOnce()
        {
            // Fixture setup
            var disposable = new DisposableSpy();
            var builder    = new DelegatingSpecimenBuilder {
                OnCreate = (r, c) => disposable
            };
            var sut = new DisposableTracker(builder);
            // Exercise system
            var dummyRequest = new object();
            var dummyContext = new DelegatingSpecimenContext();

            sut.Create(dummyRequest, dummyContext);
            sut.Create(dummyRequest, dummyContext);
            // Verify outcome
            Assert.Equal(1, sut.Disposables.Count(d => d == disposable));
            // Teardown
        }
Example #51
0
        public void CreateReturnsCorrectResultWhenSpecificationIsNotSatisfied()
        {
            // Fixture setup
            var spec = new DelegatingRequestSpecification {
                OnIsSatisfiedBy = r => false
            };
            var dummyBuilder = new DelegatingSpecimenBuilder();
            var sut          = new FilteringSpecimenBuilder(dummyBuilder, spec);
            var request      = new object();
            // Exercise system
            var dummyContainer = new DelegatingSpecimenContext();
            var result         = sut.Create(request, dummyContainer);
            // Verify outcome
            var expectedResult = new NoSpecimen(request);

            Assert.Equal(expectedResult, result);
            // Teardown
        }
Example #52
0
        public void ExecuteDoesNotAssignFieldWhenSpecificationIsNotSatisfied()
        {
            // Fixture setup
            var spec = new DelegatingRequestSpecification {
                OnIsSatisfiedBy = r => false
            };
            var sut       = new AutoPropertiesCommand <FieldHolder <object> >(spec);
            var specimen  = new FieldHolder <object>();
            var container = new DelegatingSpecimenContext {
                OnResolve = r => new object()
            };

            // Exercise system
            sut.Execute(specimen, container);
            // Verify outcome
            Assert.Null(specimen.Field);
            // Teardown
        }
Example #53
0
        public void CreateConvertsEnumerableToCorrectGenericType()
        {
            // Fixture setup
            var request         = typeof(IEnumerable <int>);
            var expectedRequest = new MultipleRequest(typeof(int));
            var enumerable      = Enumerable.Range(1, 3).Cast <object>();
            var context         = new DelegatingSpecimenContext {
                OnResolve = r => expectedRequest.Equals(r) ? (object)enumerable : new NoSpecimen(r)
            };

            var sut = new EnumerableRelay();
            // Exercise system
            var result = sut.Create(request, context);
            // Verify outcome
            var e = Assert.IsAssignableFrom <IEnumerable <int> >(result);

            Assert.True(enumerable.Cast <int>().SequenceEqual(e));
            // Teardown
        }
Example #54
0
        public void CreateWithArrayRequestReturnsCorrectResult(Type request, Type itemType)
        {
            // Fixture setup
            var    expectedRequest = new MultipleRequest(itemType);
            object expectedResult  = Array.CreateInstance(itemType, 0);

#pragma warning disable 618
            var context = new DelegatingSpecimenContext {
                OnResolve = r => expectedRequest.Equals(r) ? expectedResult : new NoSpecimen(r)
            };
#pragma warning restore 618

            var sut = new ArrayRelay();
            // Exercise system
            var result = sut.Create(request, context);
            // Verify outcome
            Assert.Equal(expectedResult, result);
            // Teardown
        }
        public void CreateWithListRequestReturnsCorrectResult(Type request, Type itemType)
        {
            // Fixture setup
            var    expectedRequest = typeof(List <>).MakeGenericType(itemType);
            object contextResult   = typeof(List <>).MakeGenericType(itemType).GetConstructor(Type.EmptyTypes).Invoke(new object[0]);

#pragma warning disable 618
            var context = new DelegatingSpecimenContext {
                OnResolve = r => expectedRequest.Equals(r) ? contextResult : new NoSpecimen(r)
            };
#pragma warning restore 618

            var sut = new CollectionRelay();
            // Exercise system
            var result = sut.Create(request, context);
            // Verify outcome
            Assert.Equal(contextResult, result);
            // Teardown
        }
        public void MultipleDecoratedDisposablesAreAddedToDisposables()
        {
            // Fixture setup
            var disposables = Enumerable.Repeat <Func <DisposableSpy> >(() => new DisposableSpy(), 3).Select(f => f()).ToList();
            var q           = new Queue <DisposableSpy>(disposables);
            var builder     = new DelegatingSpecimenBuilder {
                OnCreate = (r, c) => q.Dequeue()
            };

            var sut = new DisposableTracker(builder);
            // Exercise system
            var dummyRequest = new object();
            var dummyContext = new DelegatingSpecimenContext();

            disposables.ForEach(d => sut.Create(dummyRequest, dummyContext));
            // Verify outcome
            Assert.True(disposables.All(ds => sut.Disposables.Any(d => d == ds)));
            // Teardown
        }
        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);

            var expected = new NoSpecimen(parameterInfo);

            Assert.Equal(expected, actual);
        }
        public void CreateWillReturnCorrectResult()
        {
            // Fixture setup
            var expectedSpecimen = new object();
            var stubBuilder      = new TracingBuilder(new DelegatingSpecimenBuilder
            {
                OnCreate = (r, c) => expectedSpecimen
            });

            var sut = new TerminatingWithPathSpecimenBuilder(stubBuilder);
            // Exercise system
            var dummyRequest   = new object();
            var dummyContainer = new DelegatingSpecimenContext();
            var result         = sut.Create(dummyRequest, dummyContainer);

            // Verify outcome
            Assert.Equal(expectedSpecimen, result);
            // Teardown
        }
Example #59
0
        public void CreateReturnsCorrectResultWhenQueryReturnsEmptyConstructors()
        {
            // Fixture setup
            var dummyRequest = typeof(object);
            var query        = new DelegatingMethodQuery {
                OnSelectMethods = t => Enumerable.Empty <IMethod>()
            };
            var sut = new MethodInvoker(query);
            // Exercise system
            var dummyContext = new DelegatingSpecimenContext();
            var result       = sut.Create(dummyRequest, dummyContext);

            // Verify outcome
#pragma warning disable 618
            var expectedResult = new NoSpecimen(dummyRequest);
#pragma warning restore 618
            Assert.Equal(expectedResult, result);
            // Teardown
        }
Example #60
0
        public void SpecificationReceivesCorrectRequest()
        {
            // Fixture setup
            var expectedRequest = new object();
            var verified        = false;
            var specMock        = new DelegatingRequestSpecification {
                OnIsSatisfiedBy = r => verified = expectedRequest == r
            };

            var dummyBuilder = new DelegatingSpecimenBuilder();
            var sut          = new FilteringSpecimenBuilder(dummyBuilder, specMock);
            // Exercise system
            var dummyContainer = new DelegatingSpecimenContext();

            sut.Create(expectedRequest, dummyContainer);
            // Verify outcome
            Assert.True(verified, "Mock verified");
            // Teardown
        }