public void Activate_SetsPropertyValue()
        {
            // Arrange
            var instance  = new TestClass();
            var typeInfo  = instance.GetType().GetTypeInfo();
            var property  = typeInfo.GetDeclaredProperty("IntProperty");
            var activator = new PropertyActivator <int>(property, valueAccessor: (val) => val + 1);

            // Act
            activator.Activate(instance, 123);

            // Assert
            Assert.Equal(124, instance.IntProperty);
        }
        public void Activate_InvokesValueAccessorWithExpectedValue()
        {
            // Arrange
            var instance    = new TestClass();
            var typeInfo    = instance.GetType().GetTypeInfo();
            var property    = typeInfo.GetDeclaredProperty("IntProperty");
            var invokedWith = -1;
            var activator   = new PropertyActivator <int>(
                property,
                valueAccessor: (val) =>
            {
                invokedWith = val;
                return(val);
            });

            // Act
            activator.Activate(instance, 123);

            // Assert
            Assert.Equal(123, invokedWith);
        }