예제 #1
0
        public void When_getting_properties_of_unknown_instance_and_property_type()
        {
            var instance = new Person();

            instance.Name.ShouldBeNull();

            instance.Name = "Foo";

            instance.Name.ShouldBe("Foo");

            PropertyInfo nameProp;

            typeof(Person).TryGetInstanceProperty("Name", out nameProp).ShouldBeTrue();

            var nameGetter = AccessorBuilder.BuildGetter(nameProp);

            nameGetter(instance).ShouldBe("Foo");

            instance.Name.ShouldBe("Foo");

            instance.GetJob().ShouldBeNull();

            PropertyInfo jobProp;

            typeof(Person).TryGetInstanceProperty("Job", out jobProp).ShouldBeTrue();
            var jobSetter = AccessorBuilder.BuildSetter(jobProp, true);

            jobSetter(instance, "Baz");
            instance.GetJob().ShouldBe("Baz");

            var jobGetter = AccessorBuilder.BuildGetter(jobProp, true);

            jobGetter(instance).ShouldBe("Baz");
        }
예제 #2
0
        public void When_getting_properties_of_known_instance_but_unknown_property_type()
        {
            var instance = new Person();

            instance.Name.ShouldBeNull();

            instance.Name = "Foo";

            instance.Name.ShouldBe("Foo");

            var nameGetter = AccessorBuilder.BuildGetter <Person>("Name");

            nameGetter(instance).ShouldBe("Foo");

            instance.Name.ShouldBe("Foo");

            instance.GetJob().ShouldBeNull();

            var jobSetter = AccessorBuilder.BuildSetter <Person>("Job", true);

            jobSetter(instance, "Baz");
            instance.GetJob().ShouldBe("Baz");

            var jobGetter = AccessorBuilder.BuildGetter <Person>("Job", true);

            jobGetter(instance).ShouldBe("Baz");
        }
예제 #3
0
        public void When_checking_invalid_input()
        {
            string       nullStr      = null;
            PropertyInfo nullPropInfo = null;

            Should.Throw <ArgumentException>(() => AccessorBuilder.BuildSetter <Person, string>(nullStr))
            .Message.ShouldBe("String must not be null, empty or whitespace.");

            Should.Throw <ArgumentException>(() => AccessorBuilder.BuildSetter <Person, string>(nullPropInfo))
            .Message.ShouldBe("Value cannot be null.\r\nParameter name: propertyInfo");

            Should.Throw <ArgumentException>(() => AccessorBuilder.BuildGetter <Person, string>(nullStr))
            .Message.ShouldBe("String must not be null, empty or whitespace.");

            Should.Throw <ArgumentException>(() => AccessorBuilder.BuildGetter <Person, string>(nullPropInfo))
            .Message.ShouldBe("Value cannot be null.\r\nParameter name: propertyInfo");

            Should.Throw <ArgumentException>(() => AccessorBuilder.BuildSetter <Person>(nullStr))
            .Message.ShouldBe("String must not be null, empty or whitespace.");

            Should.Throw <ArgumentException>(() => AccessorBuilder.BuildSetter <Person>(nullPropInfo))
            .Message.ShouldBe("Value cannot be null.\r\nParameter name: propertyInfo");

            Should.Throw <ArgumentException>(() => AccessorBuilder.BuildGetter <Person>(nullStr))
            .Message.ShouldBe("String must not be null, empty or whitespace.");

            Should.Throw <ArgumentException>(() => AccessorBuilder.BuildGetter <Person>(nullPropInfo))
            .Message.ShouldBe("Value cannot be null.\r\nParameter name: propertyInfo");

            Should.Throw <ArgumentException>(() => AccessorBuilder.BuildSetter(nullPropInfo))
            .Message.ShouldBe("Value cannot be null.\r\nParameter name: propertyInfo");

            Should.Throw <ArgumentException>(() => AccessorBuilder.BuildGetter(nullPropInfo))
            .Message.ShouldBe("Value cannot be null.\r\nParameter name: propertyInfo");
        }
예제 #4
0
        public void When_getting_setters_class()
        {
            var nameSetterOne = AccessorBuilder.BuildSetter <Person, string>("Name");
            var nameSetterTwo = AccessorBuilder.BuildSetter <Person, string>("Name");

            nameSetterOne.ShouldNotBeSameAs(nameSetterTwo);

            var jobSetter = AccessorBuilder.BuildSetter <Person, string>("Job", true);

            jobSetter.ShouldNotBe(nameSetterOne);
            jobSetter.ShouldNotBe(nameSetterTwo);
        }
예제 #5
0
        public void When_setting_properties_of_known_instance_and_property_type_class()
        {
            var instance = new Person();

            instance.Name.ShouldBeNull();

            var nameSetter = AccessorBuilder.BuildSetter <Person, string>("Name");

            nameSetter(instance, "A");
            instance.Name.ShouldBe("A");

            var jobSetter = AccessorBuilder.BuildSetter <Person, string>("Job", true);

            jobSetter(instance, "job");
            instance.GetJob().ShouldBe("job");
        }