public void GetSongs_AllSongsFromEveryProviderReturned() { var provider = new AggregateSongProvider(); var provider1 = Substitute.For<ISongProvider>(); var provider2 = Substitute.For<ISongProvider>(); provider.Providers.Add(provider1); provider.Providers.Add(provider2); provider1 .GetSongs(Arg.Any<string>(), Arg.Any<CancellationToken>()) .Returns(x => { return Task<IEnumerable<Song>>.Factory.StartNew(() => new[] { new Song(), new Song() }); }); provider2 .GetSongs(Arg.Any<string>(), Arg.Any<CancellationToken>()) .Returns(x => { return Task<IEnumerable<Song>>.Factory.StartNew(() => new[] { new Song(), new Song() }); }); var result = provider.GetSongs("NOFX", CancellationToken.None).Result; Assert.Equal(4, result.Count()); }
public void TestIt() { var groove = new GroovesharkClientWrapper(); groove.Connect(); var provider = new AggregateSongProvider(); provider.Providers.Add(new GroovesharkSongProvider(new Lazy<IGroovesharkClient>(() => groove))); provider.Providers.Add(new SpotifySongProvider(new DefaultSpotifyImageProvider())); var player = new AggregateSongPlayer(); player.Players.Add(new GroovesharkSongPlayer(new Lazy<IGroovesharkClient>(() => groove))); var song = provider.GetSongs("NOFX", CancellationToken.None).Result.FirstOrDefault(); if (player.CanPlay(song)) { player.Start(song); } }
public void GetSongs_ExceptionBubblesUp() { var provider = new AggregateSongProvider(); var provider1 = Substitute.For<ISongProvider>(); var provider2 = Substitute.For<ISongProvider>(); provider.Providers.Add(provider1); provider.Providers.Add(provider2); provider1 .GetSongs(Arg.Any<string>(), Arg.Any<CancellationToken>()) .Returns(x => { throw new Exception(); }); provider2 .GetSongs(Arg.Any<string>(), Arg.Any<CancellationToken>()) .Returns(x => { return Task<IEnumerable<Song>>.Factory.StartNew(() => new[] { new Song(), new Song() }); }); Assert.Throws<AggregateException>(() => provider.GetSongs("NOFX", CancellationToken.None).Wait()); }