public async void TestNext(NextCommandType type) { var playList = _defaultPlayList.DeepClone(); string reportType = GetReportTypeStringByNextCommandType(type); var serverConnectionMock = new Mock<IServerConnection>(); serverConnectionMock.Setup(s => s.Get(It.Is<Uri>(u => u.AbsolutePath.EndsWith("playlist") && (u.GetQueries().Contains(new KeyValuePair<string, string>("type", "n")) || u.GetQueries().Contains(new KeyValuePair<string, string>("type", reportType))) && !u.GetQueries().ContainsKey("start")), It.IsAny<Action<HttpWebRequest>>())).Returns(() => Task.FromResult(playList.ToString())).Callback( () => { if (type == NextCommandType.CurrentSongEnded) { playList["song"] = new JArray(); } else { var first = playList["song"][0]; first.Remove(); playList["song"].Last.AddAfterSelf(first); } }).Verifiable(); var session = new Session(serverConnectionMock.Object); var player = new Player(session); await player.ChangeChannel(new Channel(0)); var originalSong = player.CurrentSong; for (var i = 0; i < 5; ++i) { await player.Next(type); var newSong = player.CurrentSong; Assert.AreNotEqual(newSong, originalSong); originalSong = newSong; } serverConnectionMock.Verify(); }
public async void TestNoAvailableSongs_Next(NextCommandType type) { var emptyPlayList = _defaultPlayList.DeepClone(); emptyPlayList["song"] = new JArray(); var serverConnectionMock = new Mock<IServerConnection>(); serverConnectionMock.Setup(s => s.Get(It.Is<Uri>(u => u.AbsolutePath.EndsWith("playlist") && u.GetQueries().Contains(new KeyValuePair<string, string>("type", "n"))), It.IsAny<Action<HttpWebRequest>>())).ReturnsAsync(Resource.PlayList).Verifiable(); serverConnectionMock.Setup(s => s.Get(It.Is<Uri>(u => u.AbsolutePath.EndsWith("playlist") && u.GetQueries().Contains(new KeyValuePair<string, string>("type", GetReportTypeStringByNextCommandType(type)))), It.IsAny<Action<HttpWebRequest>>())).ReturnsAsync(emptyPlayList.ToString()).Verifiable(); var player = new Player(new Session(serverConnectionMock.Object)); await player.ChangeChannel(new Channel(0)); await AssertEx.ThrowsAsync<NoAvailableSongsException>(async () => await player.Next(type)); serverConnectionMock.Verify(); }
public async void TestChannelNotSelectedException() { var serverConnectionMock = new Mock<IServerConnection>(); var session = new Session(serverConnectionMock.Object); var player = new Player(session); await AssertEx.ThrowsAsync<ChannelNotSelectedException>(async () => await player.Next(NextCommandType.SkipCurrentSong)); }
public async void TestSongNotSelectedException() { var playList = _defaultPlayList.DeepClone(); var emptyPlayList = _defaultPlayList.DeepClone(); emptyPlayList["song"] = new JArray(); var serverConnectionMock = new Mock<IServerConnection>(); serverConnectionMock.Setup(s => s.Get(It.Is<Uri>(u => u.AbsolutePath.EndsWith("playlist") && u.GetQueries().Contains(new KeyValuePair<string, string>("type", "n"))), It.IsAny<Action<HttpWebRequest>>())).ReturnsAsync(playList.ToString()).Verifiable(); serverConnectionMock.Setup(s => s.Get(It.Is<Uri>(u => u.AbsolutePath.EndsWith("playlist") && u.GetQueries().Contains(new KeyValuePair<string, string>("type", "p"))), It.IsAny<Action<HttpWebRequest>>())).ReturnsAsync(playList.ToString()).Verifiable(); serverConnectionMock.Setup(s => s.Get(It.Is<Uri>(u => u.AbsolutePath.EndsWith("playlist") && u.GetQueries().Contains(new KeyValuePair<string, string>("type", "s"))), It.IsAny<Action<HttpWebRequest>>())).ReturnsAsync(emptyPlayList.ToString()).Verifiable(); var session = new Session(serverConnectionMock.Object); var player = new Player(session); await player.ChangeChannel(new Channel(0)); await AssertEx.ThrowsAsync<NoAvailableSongsException>(async () => await player.Next(NextCommandType.SkipCurrentSong)); Assert.IsNotNull(player.CurrentChannel); Assert.IsNull(player.CurrentSong); await AssertEx.ThrowsAsync<SongNotSelectedException>(async () => await player.SetRedHeart(true)); }
public async void TestSongEnded() { var playList = _defaultPlayList.DeepClone(); var emptyPlayList = _defaultPlayList.DeepClone(); emptyPlayList["song"] = new JArray(); var serverConnectionMock = new Mock<IServerConnection>(); serverConnectionMock.Setup(s => s.Get(It.Is<Uri>(u => u.AbsolutePath.EndsWith("playlist") && u.GetQueries().Contains(new KeyValuePair<string, string>("type", "n"))), It.IsAny<Action<HttpWebRequest>>())).ReturnsAsync(playList.ToString()).Verifiable(); serverConnectionMock.Setup(s => s.Get(It.Is<Uri>(u => u.AbsolutePath.EndsWith("playlist") && u.GetQueries().Contains(new KeyValuePair<string, string>("type", "p"))), It.IsAny<Action<HttpWebRequest>>())).ReturnsAsync(playList.ToString()).Verifiable(); serverConnectionMock.Setup(s => s.Get(It.Is<Uri>(u => u.AbsolutePath.EndsWith("playlist") && u.GetQueries().Contains(new KeyValuePair<string, string>("type", "e"))), It.IsAny<Action<HttpWebRequest>>())).ReturnsAsync(emptyPlayList.ToString()).Verifiable(); var session = new Session(serverConnectionMock.Object); var player = new Player(session); await player.ChangeChannel(new Channel(0)); var songCount = playList["song"].Count(); for (var i = 0; i < songCount*2; ++i) { await player.Next(NextCommandType.CurrentSongEnded); } serverConnectionMock.Verify(); }