public void UnhandledTypeConversionExceptionTargetToSource()
        {
            BaseBindingManager dbm = new BaseBindingManager();
            Inventor           st  = new Inventor("Nikola Tesla", new DateTime(1856, 7, 9), "Serbian");

            st.Inventions = new string[] { "Invention One", "Invention Two" };

            dbm.AddBinding("pob", "DOB");

            try
            {
                dbm.BindTargetToSource(st, st, null);
                Assert.Fail("Binding date to custom Place type should throw an exception.");
            }
            catch (TypeMismatchException)
            {}

            // binding state is not remembered with ValidationErrors=null!
            try
            {
                dbm.BindSourceToTarget(st, st, null);
                Assert.Fail("Binding custom Place to date type should throw an exception.");
            }
            catch (TypeMismatchException)
            {}
        }
        public void DirectionTargetToSource()
        {
            BaseBindingManager dbm    = new BaseBindingManager();
            Inventor           source = new Inventor("Nikola Tesla", new DateTime(1856, 7, 9), "Serbian");
            Hashtable          target = new Hashtable();

            dbm.AddBinding("Name", "['name']", BindingDirection.TargetToSource);
            dbm.BindSourceToTarget(source, target, null);
            Assert.IsNull(target["name"]);

            target["name"] = "Mihajlo Pupin";
            dbm.BindTargetToSource(source, target, null);
            Assert.AreEqual("Mihajlo Pupin", source.Name);
        }
 public void SetUp()
 {
     mgr = new BaseBindingManager();
     mgr.AddBinding("['name']", "Name");
     mgr.AddBinding("['dob']", "DOB");
     mgr.AddBinding("['dateofgraduation']", "DateOfGraduation");
     mgr.AddBinding("['inventions']", "Inventions");
     mgr.AddBinding("['cityOfBirth']", "PlaceOfBirth.City");
     mgr.AddBinding("['countryOfBirth']", "PlaceOfBirth.Country");
 }
        public void BindNullValuesWithFormatter()
        {
            Hashtable source;
            Inventor  target;

            target = new Inventor();
            source = new Hashtable();

            // this is legal (dog is nullable)
            BaseBindingManager mgr = new BaseBindingManager();

            mgr.AddBinding("['dateofgraduation']", "DateOfGraduation", new HasTextFilteringFormatter(null, null));

            source["dateofgraduation"] = string.Empty;
            target.DateOfGraduation    = DateTime.Now;
            mgr.BindSourceToTarget(source, target, null);
            Assert.IsNull(target.DateOfGraduation);
        }
        public void HandledTypeConversionExceptionTargetToSource()
        {
            BaseBindingManager dbm    = new BaseBindingManager();
            IValidationErrors  errors = new ValidationErrors();
            Inventor           st     = new Inventor("Nikola Tesla", new DateTime(1856, 7, 9), "Serbian");

            st.Inventions = new string[] { "Invention One", "Invention Two" };

            SimpleExpressionBinding binding = new SimpleExpressionBinding("pob", "DOB");

            binding.SetErrorMessage("error", "errors");
            dbm.AddBinding(binding);

            dbm.BindTargetToSource(st, st, errors);
            Assert.IsFalse(binding.IsValid(errors));
            Assert.IsFalse(errors.IsEmpty);
            Assert.AreEqual(1, errors.GetErrors("errors").Count);

            // make sure that the old value doesn't override current invalid value
            dbm.BindSourceToTarget(st, st, errors);
            Assert.AreEqual(new DateTime(1856, 7, 9), st.DOB);
        }
        public void UnhandledTypeConversionExceptionSourceToTarget()
        {
            BaseBindingManager dbm    = new BaseBindingManager();
            Hashtable          source = new Hashtable();

            source["boolValue"] = false;
            Inventor target = new Inventor("Nikola Tesla", new DateTime(1856, 7, 9), "Serbian");

            dbm.AddBinding("['boolValue']", "DOB");

            try
            {
                dbm.BindSourceToTarget(source, target, null);
                Assert.Fail("Binding boolean to date should throw an exception.");
            }
            catch (TypeMismatchException)
            {}

            // binding state is not remembered with ValidationErrors=null!
            dbm.BindTargetToSource(source, target, null);
            Assert.AreEqual(target.DOB, source["boolValue"]);
        }
        public void BindNullValues()
        {
            Hashtable source;
            Inventor  target;

            target = new Inventor();
            source = new Hashtable();

            // this is legal (dog is nullable)
            BaseBindingManager mgr = new BaseBindingManager();

            mgr.AddBinding("['dateofgraduation']", "DateOfGraduation");

            source["dateofgraduation"] = null;
            target.DateOfGraduation    = DateTime.Now;
            mgr.BindSourceToTarget(source, target, null);
            Assert.IsNull(target.DateOfGraduation);

            source["dateofgraduation"] = DateTime.Now;
            mgr.BindTargetToSource(source, target, null);
            Assert.IsNull(source["dateofgraduation"]);
        }
        public void HandledTypeConversionExceptionSourceToTarget()
        {
            BaseBindingManager dbm    = new BaseBindingManager();
            IValidationErrors  errors = new ValidationErrors();
            Hashtable          source = new Hashtable();

            source["boolValue"] = false;
            Inventor target = new Inventor("Nikola Tesla", new DateTime(1856, 7, 9), "Serbian");

            SimpleExpressionBinding binding = new SimpleExpressionBinding("['boolValue']", "DOB");

            binding.SetErrorMessage("error", "errors");
            dbm.AddBinding(binding);

            dbm.BindSourceToTarget(source, target, errors);
            Assert.IsFalse(binding.IsValid(errors));
            Assert.IsFalse(errors.IsEmpty);
            Assert.AreEqual(1, errors.GetErrors("errors").Count);

            // make sure that the old value doesn't override current invalid value
            dbm.BindTargetToSource(source, target, errors);
            Assert.AreEqual(false, source["boolValue"]);
        }