Exemple #1
0
        public void RegisterPlayback_IfPlaybackAdviseIsHighlyRatedSongs_SetsPlaybacksSinceHighlyRatedSongsPlaylistToZero()
        {
            // Arrange

            var target = new PlaylistAdviserMemo(playbacksSinceHighlyRatedSongsPlaylist: 3, playbacksSinceFavoriteAdviseGroup: 5);

            // Act

            var newMemo = target.RegisterPlayback(AdvisedPlaylist.ForHighlyRatedSongs(Enumerable.Empty <SongModel>()));

            // Assert

            var expectedMemo = new PlaylistAdviserMemo(playbacksSinceHighlyRatedSongsPlaylist: 0, playbacksSinceFavoriteAdviseGroup: 6);

            newMemo.Should().BeEquivalentTo(expectedMemo);
        }
        private AdvisedPlaylist GetNextAdvisedPlaylist(PlaylistAdviserMemo playbacksMemo, CompositeAdvisedPlaylistQueue playlistQueue)
        {
            if (playbacksMemo.PlaybacksSinceHighlyRatedSongsPlaylist + 1 >= settings.HighlyRatedSongsAdviser.PlaybacksBetweenHighlyRatedSongs &&
                playlistQueue.TryDequeueHighlyRatedSongsAdvise(out var currentAdvise))
            {
                return(currentAdvise);
            }

            if (playbacksMemo.PlaybacksSinceFavoriteAdviseGroup + 1 >= settings.PlaybacksBetweenFavoriteAdviseGroups &&
                playlistQueue.TryDequeueFavoriteAdviseGroupAdvise(out currentAdvise))
            {
                return(currentAdvise);
            }

            return(playlistQueue.TryDequeueRankedAdvise(out currentAdvise) ? currentAdvise : null);
        }
Exemple #3
0
        public void RegisterPlayback_IfPlaybackIsNotSpeciallyTracked_IncrementsAllPlaybacksCounters()
        {
            // Arrange

            var disc = new DiscModel {
                Id = new ItemId("1")
            }
            .AddToFolder(new FolderModel());

            var target = new PlaylistAdviserMemo(playbacksSinceHighlyRatedSongsPlaylist: 3, playbacksSinceFavoriteAdviseGroup: 5);

            // Act

            var newMemo = target.RegisterPlayback(AdvisedPlaylist.ForAdviseSet(disc.ToAdviseSet()));

            // Assert

            var expectedMemo = new PlaylistAdviserMemo(playbacksSinceHighlyRatedSongsPlaylist: 4, playbacksSinceFavoriteAdviseGroup: 6);

            newMemo.Should().BeEquivalentTo(expectedMemo);
        }
Exemple #4
0
        public void RegisterPlayback_IfPlaybackAdviseIsForAdviseSetFromFavoriteAdviseGroup_SetsPlaybacksSinceFavoriteAdviseGroupToZero()
        {
            // Arrange

            var disc = new DiscModel {
                Id = new ItemId("1")
            }
            .AddToFolder(new FolderModel());

            var target = new PlaylistAdviserMemo(playbacksSinceHighlyRatedSongsPlaylist: 3, playbacksSinceFavoriteAdviseGroup: 5);

            // Act

            var newMemo = target.RegisterPlayback(AdvisedPlaylist.ForAdviseSetFromFavoriteAdviseGroup(disc.ToAdviseSet()));

            // Assert

            var expectedMemo = new PlaylistAdviserMemo(playbacksSinceHighlyRatedSongsPlaylist: 4, playbacksSinceFavoriteAdviseGroup: 0);

            newMemo.Should().BeEquivalentTo(expectedMemo);
        }
 public async Task RegisterAdvicePlayback(AdvisedPlaylist advise, CancellationToken cancellationToken)
 {
     Memo = Memo.RegisterPlayback(advise);
     await sessionDataService.SaveData(PlaylistAdviserDataKey, Memo, cancellationToken);
 }