public void Upvote_ItemMovedUpInList() { var queue = new VoteableQueue<int>(); var item1 = queue.Enqueue(1); var item2 = queue.Enqueue(2); var item3 = queue.Enqueue(3); queue.Upvote(item3.Id); Assert.Equal(new[] { item1, item3, item2 }, queue.CurrentQueue); }
static void SongQueueSample(ISongPlayer player, ISongProvider songProvider) { var queue = new VoteableQueue<Song>(); queue.ItemAdded += (sender, eventArgs) => { Console.WriteLine("Added song " + eventArgs.Item.Item.Name + " to queue"); if (queue.CurrentQueue.Count() == 1) { VoteableQueueItem<Song> head; if (queue.TryPeek(out head)) { player.Start(head.Item); } } }; player.CurrentSongChanged += (sender, eventArgs) => Console.WriteLine("Current song is " + eventArgs.NewValue.Name); player.CurrentSongCompleted += (sender, eventArgs) => { VoteableQueueItem<Song> head; if (queue.TryDequeue(out head)) { if (queue.TryPeek(out head)) { player.Start(head.Item); } } }; string query; do { Console.WriteLine("Enter query >> "); query = Console.ReadLine(); if (!string.IsNullOrEmpty(query)) { songProvider .GetSongs(query, CancellationToken.None) .ContinueWith(resultTask => { var song = resultTask.Result.FirstOrDefault(); if (song != null) { queue.Enqueue(song); } }); } } while (string.IsNullOrEmpty(query)); }