Example #1
0
 public KnowledgeLicense Update(KnowledgeLicense knowledgeLicense, KnowledgeQualitys knowledgeQuality)
 {
     if (IsEasyButEarlyToRepeat(knowledgeLicense, knowledgeQuality))
     {
         knowledgeQuality = KnowledgeQualitys.StillRemember;
     }
     return(knowledgeGaranter[knowledgeQuality].Grant(knowledgeLicense));
 }
Example #2
0
        public static KnowledgeLicense GetLicense(this UserWordPair userWordPair)
        {
            var knowledgeLicense = new KnowledgeLicense
            {
                Period     = userWordPair.LearningPeriod,
                RepeatTime = userWordPair.TimeGap
            };

            return(knowledgeLicense);
        }
Example #3
0
        public void StillRememberBehavior()
        {
            // prep
            var licenseManager   = new KnowledgeLicenseCalculator();
            var knowledgeLicense = new KnowledgeLicense
            {
                Period     = 1,
                RepeatTime = DateTime.Now
            };
            var knowledgeQuality = KnowledgeQualitys.StillRemember;
            var expectedPeriod   = 1;
            // act
            KnowledgeLicense UpdatedKnowledgeLicense = licenseManager.Update(knowledgeLicense, knowledgeQuality);

            // assert
            Assert.Equal(expectedPeriod, UpdatedKnowledgeLicense.Period);
        }
Example #4
0
        public void EasyToRememberButEarlyRepeatGranting()
        {
            // prep
            var licenseManager   = new KnowledgeLicenseCalculator();
            var knowledgeLicense = new KnowledgeLicense
            {
                Period     = 0,
                RepeatTime = DateTime.MaxValue
            };
            var knowledgeQuality = KnowledgeQualitys.EasyToRemember;
            var expectedPeriod   = 0;
            // act
            KnowledgeLicense UpdatedKnowledgeLicense = licenseManager.Update(knowledgeLicense, knowledgeQuality);

            // assert
            Assert.Equal(expectedPeriod, UpdatedKnowledgeLicense.Period);
        }
Example #5
0
        public void EasyToRememberBehavior()
        {
            // prep
            var licenseManager   = new KnowledgeLicenseCalculator();
            var knowledgeLicense = new KnowledgeLicense();
            var knowledgeQuality = KnowledgeQualitys.EasyToRemember;
            var expectedPeriod   = 1;
            // act
            KnowledgeLicense UpdatedKnowledgeLicense = licenseManager.Update(knowledgeLicense, knowledgeQuality);
            bool             expectedTimeLarger      = UpdatedKnowledgeLicense.RepeatTime > DateTime.UtcNow;

            // assert
            Assert.Equal(UpdatedKnowledgeLicense.Period, knowledgeLicense.Period);
            Assert.Equal(UpdatedKnowledgeLicense.RepeatTime, knowledgeLicense.RepeatTime);
            Assert.Equal(expectedPeriod, UpdatedKnowledgeLicense.Period);
            Assert.True(expectedTimeLarger);
        }
Example #6
0
        /// <summary>
        ///     This method for updating <see cref="UserWordPair" />'s learning period and time to learning
        ///     using PairKnowledges from IKnowledgeQualifier.
        /// </summary>
        /// <param name="userWordPairs"></param>
        /// <param name="PairKnowledges"></param>
        /// <returns></returns>
        private IEnumerable <UserWordPair> UpdateLicenseInformation(IEnumerable <UserWordPair> userWordPairs,
                                                                    Dictionary <int, KnowledgeQualitys> PairKnowledges)
        {
            // for every word pair in user dictionary
            foreach (UserWordPair userWordPair in userWordPairs)
            {
                // get quality from qualifier
                KnowledgeQualitys quality = PairKnowledges[userWordPair.WordPairId];

                // get wordpair license
                KnowledgeLicense knowledgeLicense = userWordPair.GetLicense();

                // update license by license and quality
                knowledgeLicense = knowledgeLicenseCalculator.Update(knowledgeLicense, quality);

                // set license in pair strucure
                userWordPair.SetLicense(knowledgeLicense);
            }

            return(userWordPairs);
        }
Example #7
0
 public override KnowledgeLicense Grant(KnowledgeLicense knowledgeLicense)
 {
     knowledgeLicense.Period += 1;
     return(base.Grant(knowledgeLicense));
 }
Example #8
0
 public override KnowledgeLicense Grant(KnowledgeLicense knowledgeLicense)
 {
     return(base.Grant(knowledgeLicense));
 }
Example #9
0
 public virtual KnowledgeLicense Grant(KnowledgeLicense knowledgeLicense)
 {
     int days = Ebbinghaus(knowledgeLicense.Period);
     knowledgeLicense.RepeatTime = DateTime.UtcNow.AddDays(days);
     return knowledgeLicense;
 }
Example #10
0
 public override KnowledgeLicense Grant(KnowledgeLicense knowledgeLicense)
 {
     knowledgeLicense.Period = Convert.ToInt16(Math.Truncate(0.2 * knowledgeLicense.Period));
     return(base.Grant(knowledgeLicense));
 }
Example #11
0
 public static UserWordPair SetLicense(this UserWordPair userWordPair, KnowledgeLicense knowledgeLicense)
 {
     userWordPair.LearningPeriod = knowledgeLicense.Period;
     userWordPair.TimeGap        = knowledgeLicense.RepeatTime;
     return(userWordPair);
 }
Example #12
0
 private bool IsNotGrantingTime(KnowledgeLicense knowledgeLicense)
 {
     return(knowledgeLicense.RepeatTime > DateTime.UtcNow.AddDays(DAYS_GRANTING_TIMESPAN));
 }
Example #13
0
 private bool IsEasyButEarlyToRepeat(KnowledgeLicense knowledgeLicense, KnowledgeQualitys knowledgeQuality)
 {
     return(knowledgeQuality.Equals(KnowledgeQualitys.EasyToRemember) && IsNotGrantingTime(knowledgeLicense));
 }