public static void TransferSong_Test(ISongDownloadTarget downloadTarget)
 {
     Directory.CreateDirectory(@"TestSourceSongs");
     Directory.CreateDirectory(@"TestSourceSongs\5381-4803 Moon Pluck");
     var sourceSong = new SongDownload() { Hash = "asdf", LocalDirectory = new DirectoryInfo(@"TestSourceSongs\5381-4803 Moon Pluck") };
     var cancelSource = new CancellationTokenSource();
     var transferTask = downloadTarget.TransferSong(sourceSong, true, cancelSource.Token);
     var result = transferTask.Result;
     Assert.IsTrue(result);
 }
        public static void TransferSong_Cancelled(ISongDownloadTarget downloadTarget)
        {
            Directory.CreateDirectory(@"TestSourceSongs");
            Directory.CreateDirectory(@"TestSourceSongs\5381-4803 Moon Pluck");
            var sourceSong = new SongDownload() { Hash = "asdf", LocalDirectory = new DirectoryInfo(@"TestSourceSongs\5381-4803 Moon Pluck") };
            var cancelSource = new CancellationTokenSource();
            var transferTask = downloadTarget.TransferSong(sourceSong, true, cancelSource.Token);
            cancelSource.Cancel();
            try
            {
                var result = transferTask.Result;
            } catch(AggregateException ex)
            {
                Assert.IsTrue(ex.InnerExceptions.First().GetType() == typeof(TaskCanceledException));
            }
            

        }