public void ListConstructedBy_IEnumerableOfRankedShowConstructor_ShouldHaveValid_PercentileRanks()
        {
            // Arrange
            var shows = new List <RankedShow>();

            shows.Add(new RankedShow
            {
                Name = "show1",
                Rank = 2
            });

            shows.Add(new RankedShow
            {
                Name = "show2",
                Rank = 1
            });

            shows.Add(new RankedShow
            {
                Name = "show3",
                Rank = 3
            });

            // Act
            var showList = new RankedShowList(shows);

            // Assert
            for (var i = 0; i < 3; i++)
            {
                var expected = showList.GetPercentileRankAtIndex(i);
                var actual   = showList[i].PercentileRank;
                Assert.Equal(expected, actual);
            }
        }
        public void GetPercentileRankAtIndexMethod_ShouldCorrectlyCalculate_ThePercentileRankOfEachShow()
        {
            var showList = new RankedShowList();

            var showsInList = 3;

            for (var i = 0; i < showsInList; i++)
            {
                showList.Add(new RankedShow());
            }

            for (var i = 0; i < showsInList; i++)
            {
                Assert.Equal(1 - (1 / ((double)(showsInList + 1))) * (i + 1), showList.GetPercentileRankAtIndex(i));
            }
        }
        public void EachShowsPercentileRank_ShouldMatchValue_FromGetPercentileRankAtIndex()
        {
            var showList = new RankedShowList();

            var showsInList = 3;

            for (var i = 0; i < showsInList; i++)
            {
                showList.Add(new RankedShow());
            }

            for (var i = 0; i < showsInList; i++)
            {
                var expected = showList.GetPercentileRankAtIndex(i);
                var actual   = showList[i].PercentileRank;
                Assert.Equal(expected, actual);
            }
        }
        public void AfterReplaceAll_EachShowsPercentileRank_ShouldMatchValue_FromGetPercentileRankAtIndex()
        {
            // Arrange
            var showList = new RankedShowList();

            var showsInList = 3;

            for (var i = 0; i < showsInList; i++)
            {
                showList.Add(new RankedShow());
            }

            var replacementList = new List <RankedShow>();

            replacementList.Add(new RankedShow
            {
                Name = "show1",
                Rank = 2
            });

            replacementList.Add(new RankedShow
            {
                Name = "show2",
                Rank = 1
            });

            replacementList.Add(new RankedShow
            {
                Name = "show3",
                Rank = 3
            });

            // Act
            showList.ReplaceAll(replacementList);

            // Assert
            for (var i = 0; i < 3; i++)
            {
                var expected = showList.GetPercentileRankAtIndex(i);
                var actual   = showList[i].PercentileRank;
                Assert.Equal(expected, actual);
            }
        }