Exemple #1
0
        public void SutIsSpecimenCommand()
        {
            var request = typeof(ConcreteType).GetProperty("Property1");
            var sut     = new BindingCommand <AbstractType, object>(x => x.Property1);

            Assert.IsAssignableFrom <ISpecimenCommand>(sut);
        }
        public void CombineExplictPropertyWithAutoProperties()
        {
            // Fixture setup
            var expectedText = "Fnaah";

            var specifiedCommand = new BindingCommand<DoublePropertyHolder<string, int>, string>(ph => ph.Property1, expectedText);
            var reservedProperty = new InverseRequestSpecification(specifiedCommand);

            var customizedBuilder = new Postprocessor<DoublePropertyHolder<string, int>>(
                new Postprocessor<DoublePropertyHolder<string, int>>(
                    new MethodInvoker(new ModestConstructorQuery()),
                    specifiedCommand),
                new AutoPropertiesCommand<DoublePropertyHolder<string, int>>(reservedProperty),
                new AnyTypeSpecification());

            var builder = new CompositeSpecimenBuilder(
                customizedBuilder,
                Scenario.CreateAutoPropertyBuilder());
            var container = new SpecimenContext(builder);
            // Exercise system
            var result = container.Resolve(typeof(DoublePropertyHolder<string, int>));
            // Verify outcome
            var actual = Assert.IsAssignableFrom<DoublePropertyHolder<string, int>>(result);
            Assert.Equal(expectedText, actual.Property1);
            Assert.Equal(1, actual.Property2);
            // Teardown
        }
Exemple #3
0
        public void CombineExplicitPropertyWithAutoProperties()
        {
            // Arrange
            var expectedText = "Fnaah";

            var specifiedCommand = new BindingCommand <DoublePropertyHolder <string, int>, string>(ph => ph.Property1, expectedText);
            var reservedProperty = new InverseRequestSpecification(specifiedCommand);

            var customizedBuilder = new Postprocessor(
                new Postprocessor(
                    new MethodInvoker(new ModestConstructorQuery()),
                    specifiedCommand),
                new AutoPropertiesCommand(reservedProperty),
                new AnyTypeSpecification());

            var builder = new CompositeSpecimenBuilder(
                customizedBuilder,
                Scenario.CreateAutoPropertyBuilder());
            var container = new SpecimenContext(builder);
            // Act
            var result = container.Resolve(typeof(DoublePropertyHolder <string, int>));
            // Assert
            var actual = Assert.IsAssignableFrom <DoublePropertyHolder <string, int> >(result);

            Assert.Equal(expectedText, actual.Property1);
            Assert.Equal(1, actual.Property2);
        }
Exemple #4
0
        public void ExecuteWithNullContextThrows()
        {
            var    sut           = new BindingCommand <PropertyHolder <string>, string>(ph => ph.Property);
            object dummySpecimen = new PropertyHolder <string>();

            Assert.Throws <ArgumentNullException>(() =>
                                                  sut.Execute(dummySpecimen, null));
        }
Exemple #5
0
        public void ExecuteWithNullSpecimenThrows()
        {
            var sut          = new BindingCommand <PropertyHolder <string>, string>(ph => ph.Property);
            var dummyContext = new DelegatingSpecimenContext();

            Assert.Throws <ArgumentNullException>(() =>
                                                  sut.Execute((object)null, dummyContext));
        }
Exemple #6
0
        public void IsSatisfiedByNullThrows()
        {
            // Fixture setup
            var sut = new BindingCommand <PropertyHolder <object>, object>(ph => ph.Property);

            // Exercise system and verify outcome
            Assert.Throws <ArgumentNullException>(() => sut.IsSatisfiedBy(null));
            // Teardown
        }
Exemple #7
0
        public void SutIsSpecifiedSpecimenCommand()
        {
            // Arrange
            // Act
            var sut = new BindingCommand <FieldHolder <DateTimeOffset>, DateTimeOffset>(fh => fh.Field);

            // Assert
            Assert.IsAssignableFrom <ISpecifiedSpecimenCommand <FieldHolder <DateTimeOffset> > >(sut);
        }
Exemple #8
0
        public void ExecuteWithNullItemWillThrow()
        {
            // Arrange
            var sut = new BindingCommand <PropertyHolder <string>, string>(ph => ph.Property);
            // Act & assert
            var dummyContainer = new DelegatingSpecimenContext();

            Assert.Throws <ArgumentNullException>(() => sut.Execute((object)null, dummyContainer));
        }
        /// <summary>
        /// 绑定
        /// </summary>
        /// <param name="strParam"></param>
        /// <returns></returns>
        private IResponseMessageBase DoBinding(string strParam)
        {
            // 设置当前命令
            this.CurrentMessageContext.CurrentCmdName = dp2CommandUtility.C_Command_Binding;

            if (strParam == "")
            {
                string strMessage = "请输入'读者证条码号'(注:您也可以同时输入'读者证条码号'和'密码',中间以/分隔,例如:R0000001/123)。";
                return(this.CreateTextResponseMessage(strMessage));
            }

            // 得到绑定命令
            BindingCommand bindingCmd    = (BindingCommand)this.CurrentMessageContext.CmdContiner.GetCommand(dp2CommandUtility.C_Command_Binding);
            string         readerBarcode = strParam;
            int            nTempIndex    = strParam.IndexOf('/');

            if (nTempIndex > 0) // 同时输入读者证条码与密码
            {
                bindingCmd.ReaderBarcode = strParam.Substring(0, nTempIndex);
                bindingCmd.Password      = strParam.Substring(nTempIndex + 1);
            }
            else
            {
                // 看看上一次输入过用户名的没有,如果已存在用户名,那么这次输入的就是密码
                if (bindingCmd.ReaderBarcode == "")
                {
                    bindingCmd.ReaderBarcode = strParam;
                    return(this.CreateTextResponseMessage("读输入密码"));
                }
                else
                {
                    bindingCmd.Password = strParam;
                }
            }

            string strReaderBarcode = "";
            string strError         = "";
            long   lRet             = this.CmdService.Binding(bindingCmd.ReaderBarcode,
                                                              bindingCmd.Password,
                                                              this.CurrentMessageContext.UserName, //.WeiXinId
                                                              out strReaderBarcode,
                                                              out strError);

            if (lRet == -1 || lRet == 0)
            {
                return(CreateTextResponseMessage(strError));
            }

            // 把用户名与密码清掉,以便再绑其它账号
            bindingCmd.ReaderBarcode = "";
            bindingCmd.Password      = "";

            // 设到当前读者变量上
            this.CurrentMessageContext.ReaderBarcode = strReaderBarcode;
            return(this.CreateTextResponseMessage("绑定成功!"));
        }
Exemple #10
0
        public void ExecuteWithNullContainerWillThrow()
        {
            // Fixture setup
            var sut = new BindingCommand <PropertyHolder <string>, string>(ph => ph.Property);
            // Exercise system and verify outcome
            var dummySpecimen = new PropertyHolder <string>();

            Assert.Throws <ArgumentNullException>(() => sut.Execute(dummySpecimen, null));
            // Teardown
        }
Exemple #11
0
        public void SutIsSpecifiedSpecimenCommand()
        {
            // Fixture setup
            // Exercise system
            var sut = new BindingCommand <FieldHolder <DateTimeOffset>, DateTimeOffset>(fh => fh.Field);

            // Verify outcome
            Assert.IsAssignableFrom <ISpecifiedSpecimenCommand <FieldHolder <DateTimeOffset> > >(sut);
            // Teardown
        }
Exemple #12
0
        public void IsSatisfiedByNullThrows()
        {
            // Arrange
            var sut = new BindingCommand <PropertyHolder <object>, object>(ph => ph.Property);

            // Act & assert
#pragma warning disable 618
            Assert.Throws <ArgumentNullException>(() => sut.IsSatisfiedBy(null));
#pragma warning restore 618
        }
        public void ExecuteWithNullItemWillThrow()
        {
            // Fixture setup
            var sut = new BindingCommand <PropertyHolder <string>, string>(ph => ph.Property);
            // Exercise system and verify outcome
            var dummyContainer = new DelegatingSpecimenContext();

            Assert.Throws <ArgumentNullException>(() => sut.Execute((object)null, dummyContainer));
            // Teardown
        }
Exemple #14
0
        public void ExecuteWithNullContainerWillThrow()
        {
            // Arrange
            var sut = new BindingCommand <PropertyHolder <string>, string>(ph => ph.Property);
            // Act & assert
            var dummySpecimen = new PropertyHolder <string>();

#pragma warning disable 618
            Assert.Throws <ArgumentNullException>(() => sut.Execute(dummySpecimen, null));
#pragma warning restore 618
        }
Exemple #15
0
        public void ValueCreatorIsCorrect()
        {
            // Arrange
            Func <ISpecimenContext, double> expectedCreator = c => 8;
            var sut = new BindingCommand <PropertyHolder <double>, double>(ph => ph.Property, expectedCreator);
            // Act
            Func <ISpecimenContext, double> result = sut.ValueCreator;

            // Assert
            Assert.Equal(expectedCreator, result);
        }
Exemple #16
0
        public void MemberIsCorrect()
        {
            // Arrange
            var expectedMember = typeof(PropertyHolder <object>).GetProperty("Property");
            var sut            = new BindingCommand <PropertyHolder <object>, object>(ph => ph.Property);
            // Act
            MemberInfo result = sut.Member;

            // Assert
            Assert.Equal(expectedMember, result);
        }
Exemple #17
0
        /// <summary>
        /// Registers that a writable property or field should be assigned a specific value as
        /// part of specimen post-processing.
        /// </summary>
        /// <typeparam name="TProperty">The type of the property of field.</typeparam>
        /// <param name="propertyPicker">
        /// An expression that identifies the property or field that will have
        /// <paramref name="value"/> assigned.
        /// </param>
        /// <param name="value">
        /// The value to assign to the property or field identified by
        /// <paramref name="propertyPicker"/>.
        /// </param>
        /// <returns>
        /// An <see cref="IPostprocessComposer{T}"/> which can be used to further customize the
        /// post-processing of created specimens.
        /// </returns>
        public IPostprocessComposer <T> With <TProperty>(Expression <Func <T, TProperty> > propertyPicker, TProperty value)
        {
            if (propertyPicker == null)
            {
                throw new ArgumentNullException("propertyPicker");
            }

            var postprocessor = new BindingCommand <T, TProperty>(propertyPicker, value);

            return(this.WithPostprocessor(postprocessor));
        }
Exemple #18
0
        public void IsSatisfiedByReturnsFalseForAnonymousRequest()
        {
            // Fixture setup
            var request = new object();
            var sut     = new BindingCommand <PropertyHolder <object>, object>(ph => ph.Property);
            // Exercise system
            bool result = sut.IsSatisfiedBy(request);

            // Verify outcome
            Assert.False(result);
            // Teardown
        }
Exemple #19
0
        public void MemberIsCorrect()
        {
            // Fixture setup
            var expectedMember = typeof(PropertyHolder <object>).GetProperty("Property");
            var sut            = new BindingCommand <PropertyHolder <object>, object>(ph => ph.Property);
            // Exercise system
            MemberInfo result = sut.Member;

            // Verify outcome
            Assert.Equal(expectedMember, result);
            // Teardown
        }
Exemple #20
0
        public void ValueCreatorIsCorrect()
        {
            // Fixture setup
            Func <ISpecimenContext, double> expectedCreator = c => 8;
            var sut = new BindingCommand <PropertyHolder <double>, double>(ph => ph.Property, expectedCreator);
            // Exercise system
            Func <ISpecimenContext, double> result = sut.ValueCreator;

            // Verify outcome
            Assert.Equal(expectedCreator, result);
            // Teardown
        }
Exemple #21
0
        public void IsSatisfiedByReturnsTrueForDerivedProperty()
        {
            // Fixture setup
            var request = typeof(ConcreteType).GetProperty("Property1");
            var sut     = new BindingCommand <AbstractType, object>(x => x.Property1);
            // Exercise system
            var result = sut.IsSatisfiedBy(request);

            // Verify outcome
            Assert.True(result);
            // Teardown
        }
Exemple #22
0
        public void IsSatisfiedByReturnsTrueForIdentifiedProperty()
        {
            // Fixture setup
            var request = typeof(DoublePropertyHolder <object, object>).GetProperty("Property1");
            var sut     = new BindingCommand <DoublePropertyHolder <object, object>, object>(ph => ph.Property1);
            // Exercise system
            bool result = sut.IsSatisfiedBy(request);

            // Verify outcome
            Assert.True(result);
            // Teardown
        }
Exemple #23
0
        public void ExecuteThrowsWhenContainerReturnsIncompatiblePropertyValue()
        {
            var nonInt  = "Anonymous variable";
            var context = new DelegatingSpecimenContext {
                OnResolve = r => nonInt
            };
            var sut = new BindingCommand <PropertyHolder <int>, int>(ph => ph.Property);

            object dummySpecimen = new PropertyHolder <int>();

            Assert.Throws <InvalidOperationException>(() =>
                                                      sut.Execute(dummySpecimen, context));
        }
Exemple #24
0
        public void IsSatisfiedByReturnsTrueForDerivedProperty()
        {
            // Arrange
            var request = typeof(ConcreteType).GetProperty("Property1");
            var sut     = new BindingCommand <AbstractType, object>(x => x.Property1);

            // Act
#pragma warning disable 618
            var result = sut.IsSatisfiedBy(request);
#pragma warning restore 618
            // Assert
            Assert.True(result);
        }
Exemple #25
0
        public void IsSatisfiedByReturnsTrueForIdentifiedProperty()
        {
            // Arrange
            var request = typeof(DoublePropertyHolder <object, object>).GetProperty("Property1");
            var sut     = new BindingCommand <DoublePropertyHolder <object, object>, object>(ph => ph.Property1);

            // Act
#pragma warning disable 618
            bool result = sut.IsSatisfiedBy(request);
#pragma warning restore 618
            // Assert
            Assert.True(result);
        }
Exemple #26
0
        public void IsSatisfiedByReturnsFalseForAnonymousRequest()
        {
            // Arrange
            var request = new object();
            var sut     = new BindingCommand <PropertyHolder <object>, object>(ph => ph.Property);

            // Act
#pragma warning disable 618
            bool result = sut.IsSatisfiedBy(request);
#pragma warning restore 618
            // Assert
            Assert.False(result);
        }
Exemple #27
0
        public void ExecuteSetsCorrectPropertyOnSpecimenWhenCreatorIsSupplied()
        {
            // Arrange
            var expectedValue   = new object();
            var expectedContext = new DelegatingSpecimenContext();

            var sut      = new BindingCommand <PropertyHolder <object>, object>(ph => ph.Property, c => expectedContext == c ? expectedValue : new NoSpecimen());
            var specimen = new PropertyHolder <object>();

            // Act
            sut.Execute((object)specimen, expectedContext);
            // Assert
            Assert.Equal(expectedValue, specimen.Property);
        }
        public void IsSatisfiedByReturnsFalseForOtherProperty()
        {
            // Fixture setup
            var request = typeof(DoublePropertyHolder <object, object>).GetProperty("Property1");
            var sut     = new BindingCommand <DoublePropertyHolder <object, object>, object>(ph => ph.Property2);

            // Exercise system
#pragma warning disable 618
            bool result = sut.IsSatisfiedBy(request);
#pragma warning restore 618
            // Verify outcome
            Assert.False(result);
            // Teardown
        }
Exemple #29
0
        public void ExecuteSetsCorrectPropertyOnSpecimenWhenValueIsSupplied()
        {
            // Arrange
            var expectedValue = new object();

            var sut      = new BindingCommand <PropertyHolder <object>, object>(ph => ph.Property, expectedValue);
            var specimen = new PropertyHolder <object>();
            // Act
            var dummyContext = new DelegatingSpecimenContext();

            sut.Execute((object)specimen, dummyContext);
            // Assert
            Assert.Equal(expectedValue, specimen.Property);
        }
Exemple #30
0
        public void ExecuteWillSetCorrectPropertyOnSpecimenWhenValueIsSupplied()
        {
            // Fixture setup
            var expectedValue = new object();

            var sut      = new BindingCommand <PropertyHolder <object>, object>(ph => ph.Property, expectedValue);
            var specimen = new PropertyHolder <object>();
            // Exercise system
            var dummyContainer = new DelegatingSpecimenContext();

            sut.Execute(specimen, dummyContainer);
            // Verify outcome
            Assert.Equal(expectedValue, specimen.Property);
            // Teardown
        }
Exemple #31
0
        public void ExecuteWillThrowWhenContainerReturnsIncompatiblePropertyValue()
        {
            // Fixture setup
            var nonInt    = "Anonymous variable";
            var container = new DelegatingSpecimenContext {
                OnResolve = r => nonInt
            };

            var sut = new BindingCommand <PropertyHolder <int>, int>(ph => ph.Property);
            // Exercise system and verify outcome
            var dummySpecimen = new PropertyHolder <int>();

            Assert.Throws <InvalidOperationException>(() => sut.Execute(dummySpecimen, container));
            // Teardown
        }
 public void ValueCreatorIsCorrect()
 {
     // Fixture setup
     Func<ISpecimenContext, double> expectedCreator = c => 8;
     var sut = new BindingCommand<PropertyHolder<double>, double>(ph => ph.Property, expectedCreator);
     // Exercise system
     Func<ISpecimenContext, double> result = sut.ValueCreator;
     // Verify outcome
     Assert.Equal(expectedCreator, result);
     // Teardown
 }
 public void ExecuteWithNullContainerWillThrow()
 {
     // Fixture setup
     var sut = new BindingCommand<PropertyHolder<string>, string>(ph => ph.Property);
     // Exercise system and verify outcome
     var dummySpecimen = new PropertyHolder<string>();
     Assert.Throws<ArgumentNullException>(() => sut.Execute(dummySpecimen, null));
     // Teardown
 }
        public void ExecuteWillSetCorrectPropertyOnSpecimenWhenAnonymousValueIsImplied()
        {
            // Fixture setup
            var expectedValue = new object();
            var expectedRequest = typeof(PropertyHolder<object>).GetProperty("Property");
            var container = new DelegatingSpecimenContext { OnResolve = r => expectedRequest.Equals(r) ? expectedValue : new NoSpecimen() };

            var sut = new BindingCommand<PropertyHolder<object>, object>(ph => ph.Property);
            var specimen = new PropertyHolder<object>();
            // Exercise system
            sut.Execute(specimen, container);
            // Verify outcome
            Assert.Equal(expectedValue, specimen.Property);
            // Teardown
        }
        public void ExecuteWillThrowWhenContainerReturnsIncompatiblePropertyValue()
        {
            // Fixture setup
            var nonInt = "Anonymous variable";
            var container = new DelegatingSpecimenContext { OnResolve = r => nonInt };

            var sut = new BindingCommand<PropertyHolder<int>, int>(ph => ph.Property);
            // Exercise system and verify outcome
            var dummySpecimen = new PropertyHolder<int>();
            Assert.Throws<InvalidOperationException>(() => sut.Execute(dummySpecimen, container));
            // Teardown
        }
 public void IsSatisfiedByReturnsTrueForIdentifiedProperty()
 {
     // Fixture setup
     var request = typeof(DoublePropertyHolder<object, object>).GetProperty("Property1");
     var sut = new BindingCommand<DoublePropertyHolder<object, object>, object>(ph => ph.Property1);
     // Exercise system
     bool result = sut.IsSatisfiedBy(request);
     // Verify outcome
     Assert.True(result);
     // Teardown
 }
        public void ExecuteSetsCorrectPropertyOnSpecimenWhenValueIsSupplied()
        {
            // Fixture setup
            var expectedValue = new object();

            var sut = new BindingCommand<PropertyHolder<object>, object>(ph => ph.Property, expectedValue);
            var specimen = new PropertyHolder<object>();
            // Exercise system
            var dummyContext = new DelegatingSpecimenContext();
            sut.Execute((object)specimen, dummyContext);
            // Verify outcome
            Assert.Equal(expectedValue, specimen.Property);
            // Teardown
        }
        public void ExecuteThrowsWhenContainerReturnsIncompatiblePropertyValue()
        {
            var nonInt = "Anonymous variable";
            var context = new DelegatingSpecimenContext { OnResolve = r => nonInt };
            var sut = new BindingCommand<PropertyHolder<int>, int>(ph => ph.Property);

            object dummySpecimen = new PropertyHolder<int>();
            Assert.Throws<InvalidOperationException>(() =>
                sut.Execute(dummySpecimen, context));
        }
 public void IsSatisfiedByNullThrows()
 {
     // Fixture setup
     var sut = new BindingCommand<PropertyHolder<object>, object>(ph => ph.Property);
     // Exercise system and verify outcome
     Assert.Throws<ArgumentNullException>(() => sut.IsSatisfiedBy(null));
     // Teardown
 }
 public void SutIsSpecimenCommand()
 {
     var request = typeof(ConcreteType).GetProperty("Property1");
     var sut = new BindingCommand<AbstractType, object>(x => x.Property1);
     Assert.IsAssignableFrom<ISpecimenCommand>(sut);
 }
 public void IsSatisfiedByReturnsTrueForDerivedProperty()
 {
     // Fixture setup
     var request = typeof(ConcreteType).GetProperty("Property1");
     var sut = new BindingCommand<AbstractType, object>(x => x.Property1);
     // Exercise system
     var result = sut.IsSatisfiedBy(request);
     // Verify outcome
     Assert.True(result);
     // Teardown
 }
 public void MemberIsCorrect()
 {
     // Fixture setup
     var expectedMember = typeof(PropertyHolder<object>).GetProperty("Property");
     var sut = new BindingCommand<PropertyHolder<object>, object>(ph => ph.Property);
     // Exercise system
     MemberInfo result = sut.Member;
     // Verify outcome
     Assert.Equal(expectedMember, result);
     // Teardown
 }
 public void SutIsSpecifiedSpecimenCommand()
 {
     // Fixture setup
     // Exercise system
     var sut = new BindingCommand<FieldHolder<DateTimeOffset>, DateTimeOffset>(fh => fh.Field);
     // Verify outcome
     Assert.IsAssignableFrom<ISpecifiedSpecimenCommand<FieldHolder<DateTimeOffset>>>(sut);
     // Teardown
 }
 public void ExecuteWithNullSpecimenThrows()
 {
     var sut = new BindingCommand<PropertyHolder<string>, string>(ph => ph.Property);
     var dummyContext = new DelegatingSpecimenContext();
     Assert.Throws<ArgumentNullException>(() =>
         sut.Execute((object)null, dummyContext));
 }
 public void IsSatisfiedByReturnsFalseForAnonymousRequest()
 {
     // Fixture setup
     var request = new object();
     var sut = new BindingCommand<PropertyHolder<object>, object>(ph => ph.Property);
     // Exercise system
     bool result = sut.IsSatisfiedBy(request);
     // Verify outcome
     Assert.False(result);
     // Teardown
 }
Exemple #46
0
        public void CreateAndAddProperyValues()
        {
            // Fixture setup
            var ctorInvoker = new MethodInvoker(new ModestConstructorQuery());
            var strCmd = new BindingCommand<DoublePropertyHolder<string, int>, string>(ph => ph.Property1);
            var intCmd = new BindingCommand<DoublePropertyHolder<string, int>, int>(ph => ph.Property2);
            var strPostprocessor = new Postprocessor<DoublePropertyHolder<string, int>>(ctorInvoker, strCmd);
            var intPostprocessor = new Postprocessor<DoublePropertyHolder<string, int>>(strPostprocessor, intCmd);

            var builder = new CompositeSpecimenBuilder(
                new FilteringSpecimenBuilder(intPostprocessor, new ExactTypeSpecification(typeof(DoublePropertyHolder<string, int>))),
                Scenario.CreateAutoPropertyBuilder());
            var container = new SpecimenContext(builder);
            // Exercise system
            var result = container.Resolve(typeof(DoublePropertyHolder<string, int>));
            // Verify outcome
            var actual = Assert.IsAssignableFrom<DoublePropertyHolder<string, int>>(result);
            Assert.False(string.IsNullOrEmpty(actual.Property1), "Property1");
            Assert.Equal(1, actual.Property2);
            // Teardown
        }
 public void ExecuteWithNullContextThrows()
 {
     var sut = new BindingCommand<PropertyHolder<string>, string>(ph => ph.Property);
     object dummySpecimen = new PropertyHolder<string>();
     Assert.Throws<ArgumentNullException>(() =>
         sut.Execute(dummySpecimen, null));
 }
        public void ExecuteWillSetCorrectPropertyOnSpecimenWhenCreatorIsSupplied()
        {
            // Fixture setup
            var expectedValue = new object();
            var expectedContainer = new DelegatingSpecimenContext();

            var sut = new BindingCommand<PropertyHolder<object>, object>(ph => ph.Property, c => expectedContainer == c ? expectedValue : new NoSpecimen());
            var specimen = new PropertyHolder<object>();
            // Exercise system
            sut.Execute(specimen, expectedContainer);
            // Verify outcome
            Assert.Equal(expectedValue, specimen.Property);
            // Teardown
        }
        public void ExecuteSetsCorrectFieldOnSpecimenWhenAnonymousValueIsImplied()
        {
            // Fixture setup
            var expectedValue = new object();
            var expectedRequest = typeof(FieldHolder<object>).GetField("Field");
            var context = 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((object)specimen, context);
            // Verify outcome
            Assert.Equal(expectedValue, specimen.Field);
            // Teardown
        }