public void Reflex_SetPropertyValue_object_null_str_object_throw_ex()
        {
            // Prepara
            ClasePruebaPropiedadesKeys objeto = null;

            try
            {
                // Ejecuta
                Reflex.SetPropertyValue(objeto, "FieldInt", 111);
                Assert.Fail();
            }
            catch (ArgumentException ex)
            {
                // Comprueba
                Assert.AreEqual("Error en argumento objeto. objeto nulo.", ex.Message);
            }
        }
        public void Reflex_GetPropertyValue_object_str_ret_object()
        {
            // Prepara
            DateTime ahora = DateTime.Now;
            ClasePruebaPropiedadesKeys objeto = new ClasePruebaPropiedadesKeys
            {
                FieldBool = true,
                FieldDT   = ahora,
                FieldInt  = 100,
                FieldStr  = "Test"
            };

            // Ejecuta
            int value = (int)Reflex.GetPropertyValue(objeto, "FieldInt");

            // Comprueba
            Assert.AreEqual(100, value);
        }
        public void Reflex_SetPropertyValue_object_str_object_ret_void()
        {
            // Prepara
            DateTime ahora = DateTime.Now;
            ClasePruebaPropiedadesKeys objeto = new ClasePruebaPropiedadesKeys
            {
                FieldBool = true,
                FieldDT   = ahora,
                FieldInt  = 100,
                FieldStr  = "Test"
            };

            // Ejecuta
            Reflex.SetPropertyValue(objeto, "FieldInt", 111);

            // Comprueba
            Assert.AreEqual(111, objeto.FieldInt);
            Assert.AreEqual(true, objeto.FieldBool);
            Assert.AreEqual(ahora, objeto.FieldDT);
            Assert.AreEqual("Test", objeto.FieldStr);
        }
        public void Reflex_SetPropertyValue_object_str_objetoNoTinePropiedad_object_throw_ex()
        {
            // Prepara
            DateTime ahora = DateTime.Now;
            ClasePruebaPropiedadesKeys objeto = new ClasePruebaPropiedadesKeys
            {
                FieldBool = true,
                FieldDT   = ahora,
                FieldInt  = 100,
                FieldStr  = "Test"
            };

            try
            {
                // Ejecuta
                Reflex.SetPropertyValue(objeto, "PropertyNoExist", 111);
                Assert.Fail();
            }
            catch (ArgumentException ex)
            {
                // Comprueba
                Assert.AreEqual("Error en argumento propertyName. objeto no tiene propiedad 'PropertyNoExist'.", ex.Message);
            }
        }
        public void Reflex_GetPropertyValue_object_str_null_throw_ex()
        {
            // Prepara
            DateTime ahora = DateTime.Now;
            ClasePruebaPropiedadesKeys objeto = new ClasePruebaPropiedadesKeys
            {
                FieldBool = true,
                FieldDT   = ahora,
                FieldInt  = 100,
                FieldStr  = "Test"
            };

            try
            {
                // Ejecuta
                object value = Reflex.GetPropertyValue(objeto, "");
                Assert.Fail();
            }
            catch (ArgumentException ex)
            {
                // Comprueba
                Assert.AreEqual("Error en argumento propertyName. propertyName nulo o vacio.", ex.Message);
            }
        }
        public void Reflex_GetPropertyTypeName_object_str_ret_str()
        {
            // Prepara
            DateTime ahora = DateTime.Now;
            ClasePruebaPropiedadesKeys objeto = new ClasePruebaPropiedadesKeys
            {
                FieldBool = true,
                FieldDT   = ahora,
                FieldInt  = 100,
                FieldStr  = "Test"
            };

            // Ejecuta
            string tipoBool = Reflex.GetPropertyTypeName(objeto, "FieldBool");
            string tipoDT   = Reflex.GetPropertyTypeName(objeto, "FieldDT");
            string tipoInt  = Reflex.GetPropertyTypeName(objeto, "FieldInt");
            string tipoStr  = Reflex.GetPropertyTypeName(objeto, "FieldStr");

            // Comprueba
            Assert.AreEqual("Boolean", tipoBool);
            Assert.AreEqual("DateTime", tipoDT);
            Assert.AreEqual("Int32", tipoInt);
            Assert.AreEqual("String", tipoStr);
        }