public void difficulty_can_not_be_less_than_0()
        {
            var item     = new ReviewItemBuilder().Due().WithDifficultyRating(0).Build();
            var strategy = new SuperMemo2ReviewStrategy();

            var actualDifficulty = strategy.AdjustDifficulty(item, ReviewOutcome.Perfect);

            var expectedDifficulty = new DifficultyRating(0);

            Assert.That(actualDifficulty, Is.EqualTo(expectedDifficulty));
        }
        public void perfect_review_lowers_difficulty()
        {
            var item     = new ReviewItemBuilder().Due().WithDifficultyRating(50).Build();
            var strategy = new SuperMemo2ReviewStrategy();

            var actualDifficulty = strategy.AdjustDifficulty(item, ReviewOutcome.Perfect);

            var expectedDifficulty = new DifficultyRating(41);

            Assert.That(actualDifficulty, Is.EqualTo(expectedDifficulty));
        }
        public void hesitant_review_leaves_difficulty_the_same()
        {
            var item     = new ReviewItemBuilder().Due().WithDifficultyRating(50).Build();
            var strategy = new SuperMemo2ReviewStrategy();

            var actualDifficulty = strategy.AdjustDifficulty(item, ReviewOutcome.Hesitant);

            var expectedDifficulty = new DifficultyRating(50);

            Assert.That(actualDifficulty, Is.EqualTo(expectedDifficulty));
        }