public void RegisterConverterChangesExisitongConverter()
        {
            var target = new CustomConverterFactory();

            Func<object, object> converter1 = x => null;
            Func<object, object> converter2 = x => new object();

            target.RegisterConverter(typeof(CustomConverterFactoryTests), converter1);

            // act here
            target.RegisterConverter(typeof(CustomConverterFactoryTests), converter2);

            var result = target.GetConverter(typeof(CustomConverterFactoryTests));

            Assert.AreSame(converter2, result);
        }
        public void RegisterConverterThrowsArgumentNullExceptionIfTheConverterIsNull()
        {
            var target = new CustomConverterFactory();

            var exception = Assert.Catch<ArgumentNullException>(() => target.RegisterConverter(typeof(CustomConverterFactoryTests), null));

            Assert.AreEqual("converter", exception.ParamName);
        }
        public void RegisterConverterThrowsArgumentNullExceptionIfTheTypeIsNull()
        {
            var target = new CustomConverterFactory();

            Func<object, object> converter = x => null;

            var exception = Assert.Catch<ArgumentNullException>(() => target.RegisterConverter(null, converter));

            Assert.AreEqual("type", exception.ParamName);
        }
        public void RegisterConverterAddsNewConverter()
        {
            var target = new CustomConverterFactory();

            Func<object, object> converter = x => null;

            target.RegisterConverter(typeof(CustomConverterFactoryTests), converter);

            var result = target.GetConverter(typeof(CustomConverterFactoryTests));

            Assert.AreSame(converter, result);
        }
        public void RemoveConverterRemovesExistingConverter()
        {
            var target = new CustomConverterFactory();

            Func<object, object> converter = x => null;

            target.RegisterConverter(typeof(CustomConverterFactoryTests), converter);

            var result1 = target.RemoveConverter(typeof (CustomConverterFactoryTests));

            var result2 = target.GetConverter(typeof(CustomConverterFactoryTests));

            Assert.IsNotNull(result1);
            Assert.AreSame(converter, result1);

            Assert.IsNull(result2);
        }