public async Task ConvertFrom_Test()
        {
            await Task.CompletedTask;

            var typeConverter = new TypeTypeConverter();

            // String (primitive type)
            var type = typeof(string);
            var text = type.FullName;

            Assert.AreEqual(type, typeConverter.ConvertFrom(text));

            text = $"{type.FullName}, {type.Assembly.GetName().Name}";
            Assert.AreEqual(type, typeConverter.ConvertFrom(text));

            text = type.AssemblyQualifiedName;
            Assert.AreEqual(type, typeConverter.ConvertFrom(text));

            // This type. Full name without assembly name will not work.
            type = this.GetType();

            text = $"{type.FullName}, {type.Assembly.GetName().Name}";
            Assert.AreEqual(type, typeConverter.ConvertFrom(text));

            text = type.AssemblyQualifiedName;
            Assert.AreEqual(type, typeConverter.ConvertFrom(text));
        }
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            TypeTypeConverter converter = new TypeTypeConverter();

            value = converter.ConvertFrom(context, CultureInfo.CurrentCulture, value);
            value = base.EditValue(context, provider, value);
            value = converter.ConvertTo(context, CultureInfo.CurrentCulture, value, typeof(string));

            return(value);
        }
        public void ConvertFromIdentifiableStringReturnsTheCorrectType()
        {
            var typeContextMock = new Mock<ITypeContext>();
            var typeRepoMock = new Mock<IXamlTypeRepository>();

            var typeLocator = "type locator";

            var xamlType = new XamlType(typeof (DummyClass), typeRepoMock.Object, new TypeFactoryDummy(), new TypeFeatureProviderDummy());
            typeContextMock.Setup(context => context.GetByQualifiedName(It.Is<string>(s => s.Equals(typeLocator))))
                .Returns(xamlType);

            var contextMock = new Mock<IXamlTypeConverterContext>();
            contextMock.Setup(context => context.TypeRepository).Returns(typeContextMock.Object);

            var sut = new TypeTypeConverter();
            var t = sut.ConvertFrom(contextMock.Object, CultureInfo.CurrentCulture, typeLocator);
            Assert.AreEqual(typeof(DummyClass), t);
        }
        public void ConvertFromIdentifiableStringReturnsTheCorrectType()
        {
            var typeContextMock = new Mock <ITypeContext>();
            var typeRepoMock    = new Mock <IXamlTypeRepository>();

            var typeLocator = "type locator";

            var xamlType = new XamlType(typeof(DummyClass), typeRepoMock.Object, new TypeFactoryDummy(), new TypeFeatureProviderDummy());

            typeContextMock.Setup(context => context.GetByQualifiedName(It.Is <string>(s => s.Equals(typeLocator))))
            .Returns(xamlType);

            var contextMock = new Mock <IXamlTypeConverterContext>();

            contextMock.Setup(context => context.TypeRepository).Returns(typeContextMock.Object);


            var sut = new TypeTypeConverter();
            var t   = sut.ConvertFrom(contextMock.Object, CultureInfo.CurrentCulture, typeLocator);

            Assert.AreEqual(typeof(DummyClass), t);
        }