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());
        }
Ejemplo n.º 2
0
        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());
        }