public void ArgumentReflectorExtensions_Reflect_HandlerDictionaryBuilderNull_ThrowsException()
        {
            var target = new { key = "value" };

            Assert.Throws<ArgumentNullException>(() =>
            {
                target.Reflect((Action<PropertyHandlerDictionaryBuilder>)null);
            });
        }
        public void ArgumentReflectorExtensions_Reflect_HandlerDictionaryBuilder_ExplicitCaseInsensitive_Reversed_DifferingCases_Verify_Handler_Run_PassedPropValue()
        {
            var passedValue = "value";
            var reflectedValue = String.Empty;
            var target = new { key = passedValue };

            target.Reflect(false, prop =>
            {
                prop.Named<string>("KEY", v => reflectedValue = v);
            });

            Assert.Equal(passedValue, reflectedValue);
        }
        public void ArgumentReflectorExtensions_Reflect_HandlerDictionaryBuilder_ExplicitCaseSensitive_DifferingCases_Verify_Handler_Not_Run()
        {
            var passedValue = "value";
            var reflectedValue = String.Empty;
            var target = new { KEY = passedValue };

            target.Reflect(true, prop =>
            {
                prop.Named<string>("key", v => reflectedValue = v);
            });

            Assert.NotEqual(passedValue, reflectedValue);
        }
        public void ArgumentReflectorExtensions_Reflect_Verify_HandlerEffectivelyRun()
        {
            var passedValue = "value";
            var reflectedValue = String.Empty;
            var target = new { key = passedValue };

            target.Reflect(new PropertyHandlerDictionary
            {
                { "key", v => reflectedValue = (string)v }
            });

            Assert.Equal(passedValue, reflectedValue);
        }
        public void ArgumentReflectorExtensions_Reflect_HandlerDictionary_ImplicitCaseInsensitive_DifferingCases_Verify_Handler_Run_PassedPropValue()
        {
            var passedValue = "value";
            var reflectedValue = String.Empty;
            var target = new { KEY = passedValue };

            target.Reflect(new PropertyHandlerDictionary
            {
                { "key", v => reflectedValue = (string)v }
            });

            Assert.Equal(passedValue, reflectedValue);
        }