public KnowledgeLicense Update(KnowledgeLicense knowledgeLicense, KnowledgeQualitys knowledgeQuality) { if (IsEasyButEarlyToRepeat(knowledgeLicense, knowledgeQuality)) { knowledgeQuality = KnowledgeQualitys.StillRemember; } return(knowledgeGaranter[knowledgeQuality].Grant(knowledgeLicense)); }
public static KnowledgeLicense GetLicense(this UserWordPair userWordPair) { var knowledgeLicense = new KnowledgeLicense { Period = userWordPair.LearningPeriod, RepeatTime = userWordPair.TimeGap }; return(knowledgeLicense); }
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); }
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); }
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); }
/// <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); }
public override KnowledgeLicense Grant(KnowledgeLicense knowledgeLicense) { knowledgeLicense.Period += 1; return(base.Grant(knowledgeLicense)); }
public override KnowledgeLicense Grant(KnowledgeLicense knowledgeLicense) { return(base.Grant(knowledgeLicense)); }
public virtual KnowledgeLicense Grant(KnowledgeLicense knowledgeLicense) { int days = Ebbinghaus(knowledgeLicense.Period); knowledgeLicense.RepeatTime = DateTime.UtcNow.AddDays(days); return knowledgeLicense; }
public override KnowledgeLicense Grant(KnowledgeLicense knowledgeLicense) { knowledgeLicense.Period = Convert.ToInt16(Math.Truncate(0.2 * knowledgeLicense.Period)); return(base.Grant(knowledgeLicense)); }
public static UserWordPair SetLicense(this UserWordPair userWordPair, KnowledgeLicense knowledgeLicense) { userWordPair.LearningPeriod = knowledgeLicense.Period; userWordPair.TimeGap = knowledgeLicense.RepeatTime; return(userWordPair); }
private bool IsNotGrantingTime(KnowledgeLicense knowledgeLicense) { return(knowledgeLicense.RepeatTime > DateTime.UtcNow.AddDays(DAYS_GRANTING_TIMESPAN)); }
private bool IsEasyButEarlyToRepeat(KnowledgeLicense knowledgeLicense, KnowledgeQualitys knowledgeQuality) { return(knowledgeQuality.Equals(KnowledgeQualitys.EasyToRemember) && IsNotGrantingTime(knowledgeLicense)); }