public void can_bind_properties_to_A()
        {
            var binder = new Binder<A>();
            var pairs = new KeyValuePair<string, string>[]{
                new KeyValuePair<string,string>("AnInteger","2"),
            new KeyValuePair<string,string>("AString","abc")
            };

            var a = binder.Bind(pairs);

            Assert.AreEqual(2, a.AnInteger);
            Assert.AreEqual("abc", a.AString);
        }
        public void can_bind_fields_to_A()
        {
            var binder = new Binder<A>();
            var pairs = new KeyValuePair<string, string>[]{
                new KeyValuePair<string,string>("AnFieldInteger","10")
            };

            var a = binder.Bind(pairs);

            Assert.AreEqual(10, a.AnFieldInteger);
        }
 public void cannot_bind_inexistent_field_to_A()
 {
     var binder = new Binder<A>();
     var pairs = new KeyValuePair<string, string>[]{
         new KeyValuePair<string,string>("AnFieldIntegerInexistent","10")
     };
     try
     {
         var a = binder.Bind(pairs);
     }
     catch (InexistentMemberBinderException ex)
     {
         Assert.AreEqual("AnFieldIntegerInexistent", ex.MemberName);
         throw;
     }
 }
 public void cannot_bind_complex_data_to_A()
 {
     var binder = new Binder<A>();
     var pairs = new KeyValuePair<string, string>[]{
         new KeyValuePair<string,string>("AnList",null)
     };
     try
     {
         var a = binder.Bind(pairs);
     }
     catch (NotPrimitiveMemberBinderException ex)
     {
         Assert.AreEqual(typeof(A).GetProperty("AnList"), ex.MemberInfo);
         throw;
     }
 }