Skip to content

Reflection Interaction Provider - CachePoints Bug #1

@rdkhatch

Description

@rdkhatch

Bug in CachePoints. Failing unit test below.

[TestClass]
public class ReflectionInteractionProvider
{
    private class Person
    {
        public int Number { get; set; }
        public string Name { get; set; }

        public override string ToString()
        {
            return "{0}.{1}".FormatString(Name, Number);
        }
    }

    [TestMethod]
    public void Should_get_and_set_property()
    {
        IDynamicInteractionProvider provider = new ReflectionInteractionProvider<Person>();

        var Camp = new Person() { Number = 5, Name = "Camp" };

        // Get
        var value = provider.PerformPropertyGet<int>(Camp, "Number");
        Assert.AreEqual(Camp.Number, value);

        // Set
        value = 20;
        provider.PerformPropertySet<int>(value, Camp, "Number");
        Assert.AreEqual(Camp.Number, value);
    }

    [TestMethod] // TEST FAILS
    public void CachePoints_ON_should_not_remember_previous_objects()
    {
        bool cachePointsOn = true;
        AssertCache(cachePointsOn);
    }

    [TestMethod]
    public void CachePoints_OFF_should_not_remember_previous_objects()
    {
        bool cachePointsOn = false;
        AssertCache(cachePointsOn);
    }

    private void AssertCache(bool cachePointsOn)
    {
        IDynamicInteractionProvider provider = new ReflectionInteractionProvider<Person>() { CachePoints = cachePointsOn };

        var Camp = new Person() { Number = 0, Name = "Camp" };
        var Brody = new Person() { Number = 0, Name = "Brody" };

        // First Set
        provider.PerformPropertySet<int>(1, Camp, "Number");
        Assert.AreEqual(Camp.Number, 1);

        // Second, Cached Set
        provider.PerformPropertySet<int>(2, Brody, "Number");
        Assert.AreEqual(Camp.Number, 1);
        Assert.AreEqual(Brody.Number, 2);
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions