public void When_CreatePropertyGetter_Delegate_Used_Then_Succeeds()
        {
            // Arrange
            var propertyInfo = typeof(Shape).GetProperty("Edges");
            const int expectedEdges = 7;
            var shape = new Shape() {Edges = expectedEdges};

            // Act
            var sut = (Func<Shape, int>) ReflectionHelpers.CreatePropertyGetter(propertyInfo);
            var res = sut(shape);

            // Assert
            Assert.AreEqual(expectedEdges, res);
        }
        public void When_CreateMemberGetter_For_Field_Delegate_Used_Then_Succeeds()
        {
            // Arrange
            var fieldInfo = typeof(Shape).GetField("Id");
            const int expectedId = 7;
            var shape = new Shape() { Id = expectedId };

            // Act
            var sut = (Func<Shape, int>)ReflectionHelpers.CreateMemberGetter(fieldInfo);
            var res = sut(shape);

            // Assert
            Assert.AreEqual(expectedId, res);
        }
        public void When_CreateWeakMemberSetter_For_Field_Delegate_Used_Then_Suceeds()
        {
            // Arrange
            var fieldInfo = typeof(Shape).GetField("Id");
            var sut = ReflectionHelpers.CreateWeakMemberSetter(fieldInfo);
            const int expectedId = 777;
            var shape = new Shape();

            // Act
            sut(shape, expectedId);

            // Assert
            Assert.AreEqual(expectedId, shape.Id);
        }
        public void When_CreateWeakPropertySetter_Used_Then_Suceeds()
        {
            // Arrange
            var propertyInfo = typeof(Shape).GetProperty("Name");
            var sut = ReflectionHelpers.CreateWeakPropertySetter(propertyInfo);
            const string expectedName = "Cube";
            var shape = new Shape();

            // Act
            sut(shape, expectedName);

            // Assert
            Assert.AreEqual(expectedName, shape.Name);
        }
        public void When_CreateWeakMemberGetter_For_Property_Delegate_Used_Then_Suceeds()
        {
            // Arrange
            var propertyInfo = typeof(Shape).GetProperty("Name");
            var sut = ReflectionHelpers.CreateWeakMemberGetter(propertyInfo);
            const string expectedName = "Cube";
            var shape = new Shape() {Name = expectedName};

            // Act
            var res = sut(shape);

            // Assert
            Assert.AreEqual(expectedName, res);
        }