public void TestBlueStarAwardProcessUpdateWithQualityLowerLimit()
        {
            //Arrange
            BlueStarAward award = new BlueStarAward(20, 1);

            //Act
            award.ProcessUpdate();

            //Assert
            Assert.AreEqual(award.ExpiresIn, 19);
            Assert.AreEqual(award.Quality, 0);
            Assert.AreEqual(award.ToString(), "Award Name: Blue Star, Expires In: 19, Quality: 0");
        }
        public void TestBlueStarAwardProcessUpdate()
        {
            //Arrange
            BlueStarAward award = new BlueStarAward(15, 10);

            //Act
            award.ProcessUpdate();

            //Assert
            Assert.AreEqual(award.ExpiresIn, 14);
            Assert.AreEqual(award.Quality, 8);
            Assert.AreEqual(award.ToString(), "Award Name: Blue Star, Expires In: 14, Quality: 8");
        }
        public void Award_BlueStar()
        {
            IAward award = new BlueStarAward(10, TimeSpan.FromDays(1));
            var    algo  = award.UpdateAlgorithm;

            Assert.IsFalse(award.IsExpired);
            Assert.IsTrue(award.IsNotExpired);
            Assert.AreEqual(10, award.Quality);

            award.IncrementDay();
            award = algo.Run(award);
            Assert.AreEqual(8, award.Quality);
            Assert.IsFalse(award.IsExpired);
            Assert.IsTrue(award.IsNotExpired);

            award.IncrementDay();
            award = algo.Run(award);
            Assert.AreEqual(4, award.Quality);
            Assert.IsTrue(award.IsExpired);
            Assert.IsFalse(award.IsNotExpired);
        }