public async Task ConvertAsync_one_converter_success()
        {
            var converter = Mock.Create<IDataConverter>();
            converter.Arrange(c => c.ConvertAsync(Arg.AnyObject, Arg.AnyObject, Arg.IsAny<IDataConversionContext>(), Arg.IsAny<CancellationToken>()))
                .TaskResult(new DataConversionResult {Target = 5});

            var service =
                new DefaultDataConversionService(new IExportFactory<IDataConverter, DataConverterMetadata>[]
                {
                    new TestExportFactory<IDataConverter, DataConverterMetadata>(() => converter,
                        new DataConverterMetadata(typeof(int), typeof(int)))
                });

            var result = await service.ConvertAsync<int, int>(1, 2, new DataConversionContext(), CancellationToken.None);
            Assert.AreEqual(5, result.Target);
        }
        public async Task ConvertAsync_two_converters_success_respects_processing_priority()
        {
            var converter1 = Mock.Create<IDataConverter>();
            converter1.Arrange(c => c.ConvertAsync(Arg.AnyObject, Arg.AnyObject, Arg.IsAny<IDataConversionContext>(), Arg.IsAny<CancellationToken>()))
                .TaskResult(new DataConversionResult { Target = 5 });

            var converter2 = Mock.Create<IDataConverter>();
            converter2.Arrange(c => c.ConvertAsync(Arg.AnyObject, Arg.AnyObject, Arg.IsAny<IDataConversionContext>(), Arg.IsAny<CancellationToken>()))
                .TaskResult(new DataConversionResult { Target = 6 });

            var service =
                new DefaultDataConversionService(new IExportFactory<IDataConverter, DataConverterMetadata>[]
                {
                    new TestExportFactory<IDataConverter, DataConverterMetadata>(() => converter1,
                        new DataConverterMetadata(typeof(int), typeof(int), processingPriority:  (int)Priority.Low)),
                    new TestExportFactory<IDataConverter, DataConverterMetadata>(() => converter2,
                        new DataConverterMetadata(typeof(int), typeof(int), processingPriority: (int)Priority.High))
                });

            var result = await service.ConvertAsync<int, int>(1, 2, new DataConversionContext(), CancellationToken.None);
            Assert.AreEqual(5, result.Target);
        }