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); }
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); }
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]); }
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]); }
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"); }
public void GetBuilder_on_non_IXObject_type_throws() { XObjectBuilderRepository repository = new XObjectBuilderRepository(); repository.GetBuilder(typeof(string)); }
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); }
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"); }