示例#1
0
 public void Repository_returns_same_builder_instance_on_multiple_calls()
 {
     XObjectBuilderRepository repository = new XObjectBuilderRepository();
     XObjectBuilder<ITestXObject> b1 = repository.GetBuilder<ITestXObject>();
     XObjectBuilder<ITestXObject> b2 = repository.GetBuilder<ITestXObject>();
     Assert.AreSame(b1, b2);
 }
示例#2
0
 public void Generic_and_non_generic_GetBuilder_return_same_instance()
 {
     XObjectBuilderRepository repository = new XObjectBuilderRepository();
     XObjectBuilder<ITestXObject> b1 = repository.GetBuilder<ITestXObject>();
     object b2 = repository.GetBuilder(typeof(ITestXObject));
     Assert.AreSame(b1, b2);
 }
示例#3
0
 public void Registering_docBuilder_adds_to_internal_collection()
 {
     TestDocBuilder t = new TestDocBuilder();
     XObjectBuilderRepository repository = new XObjectBuilderRepository();
     repository.RegisterDocBuilder(t);
     List<IXPathDocBuilder> builders = new List<IXPathDocBuilder>(repository.DocBuilders);
     Assert.AreEqual(1, builders.Count);
     Assert.AreSame(t, builders[0]);
 }
示例#4
0
 public void Registering_converter_adds_to_internal_collection()
 {
     TestConverter t = new TestConverter();
     XObjectBuilderRepository repository = new XObjectBuilderRepository();
     repository.RegisterConverter(t);
     List<IXObjectTypeConverter> converters = new List<IXObjectTypeConverter>(repository.TypeConverters);
     Assert.AreEqual(1, converters.Count);
     Assert.AreSame(t, converters[0]);
 }
示例#5
0
 public void Lack_of_setter_throws_when_XObjectBuilder_is_created()
 {
     try {
         IXObjectBuilderRepository r = new XObjectBuilderRepository();
         r.GetBuilder<IBadSetter>();
     } catch(XObjectContractException e) {
         Assert.AreEqual("Accessor 'CustomTypeWithoutSetter' must have a setter type converter", e.Message);
         return;
     }
     Assert.Fail("didn't get the expected contract exception");
 }
示例#6
0
 public void GetBuilder_on_non_IXObject_type_throws()
 {
     XObjectBuilderRepository repository = new XObjectBuilderRepository();
     repository.GetBuilder(typeof(string));
 }
示例#7
0
 public void Custom_converter_from_repository_gets_attached_to_accessor_of_handled_type()
 {
     XObjectBuilderRepository repository = new XObjectBuilderRepository();
     repository.RegisterConverter(new CustomIntConverter());
     CustomIntConverter.ConvertCalled = 0;
     IUsesConverterFromRepository x = repository.GetBuilder<IUsesConverterFromRepository>().New();
     Assert.AreEqual(0, x.Foo);
     Assert.AreEqual(1, CustomIntConverter.ConvertCalled);
 }
示例#8
0
 public void Missing_getter_throws_when_XObjectBuilder_is_created()
 {
     try {
         IXObjectBuilderRepository r = new XObjectBuilderRepository();
         r.GetBuilder<IBadGetter>();
     } catch(XObjectContractException e) {
         Assert.AreEqual("Accessor 'NoGetter' must have a getter", e.Message);
         return;
     }
     Assert.Fail("didn't get the expected contract exception");
 }