Ejemplo n.º 1
0
        public void Shuffle_TraverseWhole_SequenceIsTheSameAsContentProperty()
        {
            //arrange
            ISongQueue queue   = new SongQueue();
            var        initial = TestData(113);

            queue.Set(initial);
            queue.Shuffle = true;
            var          traversed = new List <Song>();
            IList <Song> content;

            //act
            content = queue.Content.ToList();
            while (queue.HasNext)
            {
                traversed.Add(queue.Next);
            }

            //assert
            //also check if the first original is the first on the list
            content.Should().Equal(traversed);
            content.Should().NotEqual(initial);
            content.Count.Should().Be(initial.Count);
            content.Count.Should().Be(traversed.Count);
            content
            .OrderBy(x => x.Id)
            .Should()
            .Equal(initial);
            traversed
            .OrderBy(x => x.Id)
            .Should()
            .Equal(initial);
            traversed[0].Should().Be(initial.First());
            content[0].Should().Be(initial.First());
        }
Ejemplo n.º 2
0
        public void ShuffleInTheMiddle_WholeQueueIsRandom()
        {
            ISongQueue queue   = new SongQueue();
            var        initial = TestData(26);

            queue.Set(initial);

            //act
            var actual = new List <Song>();

            for (var i = 0; i < 4; i++)
            {
                _ = queue.Next;
            }

            queue.Shuffle = true;
            while (queue.HasNext)
            {
                actual.Add(queue.Next);
            }

            //assert
            Assert.Equal(actual.Count, initial.Count);
            actual
            .Should()
            .NotEqual(initial);
            actual.OrderBy(x => x.Id)
            .Should()
            .Equal(initial);
        }
Ejemplo n.º 3
0
        public void Clear_ShouldBeEmpty()
        {
            ISongQueue queue = new SongQueue();

            queue.Set(second);

            queue.Clear();

            Assert.Empty(queue.Content.ToArray());
        }
Ejemplo n.º 4
0
        public void ToArray_ShouldEqual()
        {
            ISongQueue queue = new SongQueue();

            queue.Set(first);
            Song[] actual   = queue.Content.ToArray();
            Song[] expected = first.ToArray();

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 5
0
        public void Insert_InsertingAnElement_ShouldEqual()
        {
            //prepare

            ISongQueue queue = new SongQueue();
            Song       song  = new Song
            {
                Id   = 30,
                Name = "For Whom the Bell Tolls"
            };
            //list 3
            List <Song> list = new List <Song>
            {
                new Song
                {
                    Id   = 11,
                    Name = "Kitty Later"
                },
                new Song
                {
                    Id   = 12,
                    Name = "Ashtray Heart"
                },
                song,
                new Song
                {
                    Id   = 13,
                    Name = "Battle for the Sun"
                },
                new Song
                {
                    Id   = 14,
                    Name = "For What It's worth"
                },
                new Song
                {
                    Id   = 15,
                    Name = "Devil in the Details"
                }
            };



            //act
            queue.Set(third);
            _ = queue.Next; //doing it two times, because for the first time "next" takes the first of the queue
            _ = queue.Next;
            queue.Insert(song);

            Song[] expected = list.ToArray();
            Song[] actual   = queue.Content.ToArray();
            //asserting

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 6
0
        public void Previous_FewTimes_ShouldReturnPrevious()
        {
            ISongQueue queue = new SongQueue();

            queue.Set(first);

            Song expected1 = new Song
            {
                Id   = 1,
                Name = "Sweet Home Alabama"
            };

            Song expected2 = new Song
            {
                Id   = 3,
                Name = "Loud Like Love"
            };

            Song expected3 = new Song
            {
                Id   = 2,
                Name = "Processed Beats"
            };

            _ = queue.Next;
            _ = queue.Next;

            Song actual1 = queue.Previous;

            _ = queue.Next;
            _ = queue.Next;
            _ = queue.Next;
            _ = queue.Next;
            _ = queue.Previous;

            Song actual2 = queue.Previous;
            Song actual3 = queue.Previous;

            Assert.Equal(expected1, actual1);
            Assert.Equal(expected2, actual2);
            Assert.Equal(expected3, actual3);
        }
Ejemplo n.º 7
0
        public void ShuffleInTheMiddle_HasNoPrevious_FirstElementIsWhereShuffleStarted()
        {
            ISongQueue queue   = new SongQueue();
            var        initial = TestData(10);

            queue.Set(initial);

            //act
            _ = queue.Next;
            _ = queue.Next;
            var expected = queue.Next;

            queue.Shuffle = true;

            //asset
            Assert.False(queue.HasPrevious);
            Assert.True(queue.HasNext);
            //started shuffle on third index so it should be the first
            queue.Content[0].Should().Be(expected);
        }
Ejemplo n.º 8
0
        public void ShuffleFromStart_OrderShouldBeRandom()
        {
            ISongQueue queue   = new SongQueue();
            var        initial = TestData(18);

            queue.Set(initial);

            //act
            var traversed = new List <Song>();

            queue.Shuffle = true;
            while (queue.HasNext)
            {
                traversed.Add(queue.Next);
            }

            //assert
            traversed.Count.Should().Be(initial.Count);
            traversed.Should().NotEqual(initial);
            traversed.OrderBy(x => x.Id).Should().Equal(initial);
        }
Ejemplo n.º 9
0
        public void Current_ShouldReturnCurrentElement()
        {
            ISongQueue queue = new SongQueue();

            queue.Set(third);

            Song expected1 = new Song
            {
                Id   = 11,
                Name = "Kitty Later"
            };

            Song expected2 = new Song
            {
                Id   = 14,
                Name = "For What It's worth"
            };

            Song expected3 = new Song
            {
                Id   = 12,
                Name = "Ashtray Heart"
            };

            _ = queue.Next;
            _ = queue.Next;
            Song actual1 = queue.Previous;

            _ = queue.Next;
            _ = queue.Next;
            Song actual2 = queue.Next;

            _ = queue.Previous;
            Song actual3 = queue.Previous;

            Assert.Equal(expected1, actual1);
            Assert.Equal(expected2, actual2);
            Assert.Equal(expected3, actual3);
        }
Ejemplo n.º 10
0
        public void Add_AddToEnd_ShouldEqual()
        {
            ISongQueue queue = new SongQueue();

            queue.Set(second);

            Song song = new Song
            {
                Id   = 11,
                Name = "Kitty Later"
            };

            List <Song> list = second.ToList();

            list.Add(song);
            queue.Add(song);

            Song[] expected = list.ToArray();
            Song[] actual   = queue.Content.ToArray();

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 11
0
        public void Next_FewTimes_ShouldReturnNext()
        {
            ISongQueue queue = new SongQueue();

            queue.Set(second);

            Song actual1   = queue.Next;
            Song expected1 = new Song
            {
                Id   = 6,
                Name = "Hold on to Me"
            };

            Song actual2   = queue.Next;
            Song expected2 = new Song
            {
                Id   = 7,
                Name = "Rob the Bank"
            };

            Assert.Equal(expected1, actual1);
            Assert.Equal(expected2, actual2);
        }
Ejemplo n.º 12
0
        public void TurnShuffleOn_ThenOff_CurrentSongIsTheSameAsTheOneThatShuffleWasTurnedOffOn()
        {
            //arrange
            ISongQueue queue   = new SongQueue();
            var        initial = TestData(1200);

            queue.Set(initial);
            queue.Shuffle = true;

            //act
            for (int i = 0; i < 16; i++) //skip 16 in total and take the 17th
            {
                _ = queue.Next;
            }
            var expeted = queue.Next;

            queue.Shuffle = false;

            //assert
            queue.Content[queue.CurrentIndex].Should().Be(expeted);
            queue.Content.Count.Should().Be(initial.Count);
            queue.Content.Should().Equal(initial);
        }
Ejemplo n.º 13
0
        public void Jump_RemoveAllToEndAndInsertRange_ShouldEqual()
        {
            ISongQueue queue = new SongQueue();

            queue.Set(first);

            var expected = new[]
            {
                first[0],
                first[1],
                second[0],
                second[1],
                second[2],
                second[3],
                second[4],
            };

            _ = queue.Next;
            _ = queue.Next;
            queue.Replace(second);

            Song[] actual = queue.Content.ToArray();
            actual.Should().Equal(expected);
        }
Ejemplo n.º 14
0
        public void Insert_InsertRange_ShouldEqual()
        {
            //prepare

            ISongQueue  queue        = new SongQueue();
            List <Song> toBeInserted = new List <Song>
            {
                new Song
                {
                    Id   = 31,
                    Name = "Getting Even"
                },
                new Song
                {
                    Id   = 32,
                    Name = "Rituals"
                }
            };

            List <Song> list = new List <Song>
            {
                new Song
                {
                    Id   = 6,
                    Name = "Hold on to Me"
                },
                new Song
                {
                    Id   = 7,
                    Name = "Rob the Bank"
                },
                new Song
                {
                    Id   = 8,
                    Name = "A Million Little Places"
                },

                toBeInserted[0],
                toBeInserted[1],

                new Song
                {
                    Id   = 9,
                    Name = "Exit Wounds"
                },
                new Song
                {
                    Id   = 10,
                    Name = "Purify"
                }
            };

            queue.Set(second);

            //act

            _ = queue.Next;
            _ = queue.Next;
            _ = queue.Next;

            queue.Insert(toBeInserted);

            //assert

            Song[] expected = list.ToArray();
            Song[] actual   = queue.Content.ToArray();

            Assert.Equal(expected, actual);
        }