public ChumonResult(EPuzzleUserInfo userInfo) { StartTime = EPuzzleTime.Now; Chumon時間調整 = TimeSpan.Zero; ShomonResults = new List<ShomonResult>(); UserInfo = userInfo; }
public EPuzzleTutor(EPuzzleUserInfo userInfo, IEnumerable<MondaiDocument> mondaiDocuments, TimeSpan duration, int numberOfQuestionsThatYouHaveToDoToday) { MondaiDocuments = mondaiDocuments.ToArray(); _userInfo = userInfo; _duration = duration; NumberOfQuestionsThatYouHaveToDoToday = numberOfQuestionsThatYouHaveToDoToday; }
public override double? GetBestGrade(EPuzzleUserInfo userInfo) { if (null == userInfo) throw new ArgumentNullException(); var mondaiResult = userInfo.MondaiResults.GetBest(Id); if (null == mondaiResult) return null; return GetGrade(mondaiResult.所要時間, GetTimeLimit(userInfo)); }
public void DefaultValuesTest() { var userInfo = new EPuzzleUserInfo(); Assert.AreNotEqual(default(Guid), userInfo.UserId); Assert.AreEqual("User's Name", userInfo.UserName); Assert.AreEqual(Difficulty.Normal, userInfo.Difficulty); Assert.AreEqual(20, userInfo.NumberOfQuestionsThatYouHaveToDoToday); Assert.False(userInfo.IgnoreDifficultyWhenGettingMondaiResults); Assert.AreEqual(1.0f, userInfo.TimeLimit.TimeLimitTweak); Assert.AreEqual(6.0f, userInfo.HoursToIgnoreMondaisThatYouHaveDone); // Assert.AreEqual(TimeSpan.FromHours(6f), userInfo.GradeProcessor.Nodes.Last().Duration); Assert.AreEqual(new TimeSpan(3, 0, 0), userInfo.TimeToChangeDay); Assert.False(userInfo.UseNewMethodThatGetsChumonsThatYouHaveDoneToday); Assert.False(userInfo.DoesNotShowChumonsYouHaveNeverDone); Assert.False(userInfo.TreatChumonsThatWillExpireTodayAsOnesThatHaveAlreadyExpired); Assert.False(userInfo.HideChumonsYouHaveGotGradeAToday); // Assert.AreEqual("名称未設定", userInfo.UserName); // Assert.False(userInfo.LastDaimonInfos.Any()); Assert.False(userInfo.MondaiResults.Any()); Assert.AreEqual(24, userInfo.KeyBindings.Count()); CollectionAssert.AreEquivalent(new [] { new KeyBinding(Command.Action0, Keys.Return, false, false, false), new KeyBinding(Command.Action1, Keys.Back, false, false, false), new KeyBinding(Command.Action2, Keys.Tab, false, false, false), new KeyBinding(Command.Action3, Keys.Escape, false, false, false), new KeyBinding(Command.Action4, Keys.OemOpenBrackets, false, false, false), new KeyBinding(Command.Action5, Keys.F2, false, false, false), new KeyBinding(Command.Action6, Keys.F3, false, false, false), new KeyBinding(Command.Action7, Keys.F4, false, false, false), new KeyBinding(Command.Action8, Keys.F5, false, false, false), new KeyBinding(Command.Action9, Keys.F6, false, false, false), new KeyBinding(Command.Action10, Keys.F7, false, false, false), new KeyBinding(Command.Action11, Keys.F8, false, false, false), new KeyBinding(Command.ActionLeft, Keys.Left, false, true, false), new KeyBinding(Command.ActionRight, Keys.Right, false, true, false), new KeyBinding(Command.ActionUp, Keys.Up, false, true, false), new KeyBinding(Command.ActionDown, Keys.Down, false, true, false), new KeyBinding(Command.MoveLeft, Keys.Left, false, false, false), new KeyBinding(Command.MoveRight, Keys.Right, false, false, false), new KeyBinding(Command.MoveUp, Keys.Up, false, false, false), new KeyBinding(Command.MoveDown, Keys.Down, false, false, false), new KeyBinding(Command.MoveLeft, Keys.NumPad4, false, false, false), new KeyBinding(Command.MoveRight, Keys.NumPad6, false, false, false), new KeyBinding(Command.MoveUp, Keys.NumPad8, false, false, false), new KeyBinding(Command.MoveDown, Keys.NumPad2, false, false, false), }, userInfo.KeyBindings); Assert.AreEqual(Fish.eigotest.Command.Action0, userInfo.GetKeyBindings(Keys.Return).First().Command); Assert.AreEqual(Fish.eigotest.Command.Action1, userInfo.GetKeyBindings(Keys.Back).First().Command); }
public ChumonButton(EPuzzleUserInfo userInfo, Chumon chumon, bool longName = false) { var mondaiResult = userInfo.MondaiResults.GetBest(chumon.Id); var shoyou = null == mondaiResult ? TimeSpan.Zero : mondaiResult.所要時間; _userInfo = userInfo; Chumon = chumon; Text = longName ? Chumon.LongName : Chumon.Name; Name = chumon.Id; }
public override bool IsLocked(EPuzzleUserInfo userInfo) { if (null == PreviousItem) return false; var xx = ((IEnumerable<EigoTestMondai>)PreviousItem.Items).Reverse().SkipWhile(x => x.IsOptional).First(); if (xx.合格判定(userInfo)) { return false; } return true; }
public void Test0() { var t0 = new DateTime(2013, 7, 18, 0, 0, 0); // UTC EPuzzleTime.Now = t0; var userInfo = new EPuzzleUserInfo(); var chumonResult = new ChumonResult(userInfo); Assert.AreEqual(t0, chumonResult.StartTime); Assert.AreEqual(TimeSpan.Zero, chumonResult.Chumon時間調整); }
public override bool IsLocked(EPuzzleUserInfo userInfo) { if (null == PreviousItem) return false; if (PreviousItem.合格判定(userInfo)) { return false; } else if (PreviousItem.IsOptional && !PreviousItem.IsLocked(userInfo)) { return false; } return true; }
public void XElementToShomonTest() { using (var tempFile = new TempFile(TestResources.Mondai03)) { var xdocument = XDocument.Load(tempFile.Name); var shomonElement = xdocument.Descendants("shomon").Where(x => "4-1-1" == x.Attribute("id").Value).Single(); var shomon = (Shomon)shomonElement; var userInfo = new EPuzzleUserInfo(); userInfo.TimeLimit.TimeLimitTweak = 1d; CollectionAssert.AreEqual(new [] { "Feb", "ru", "ar", "y" }, shomon.MondaiWords.Select(x => x.Text)); // Assert.AreEqual(TimeSpan.FromSeconds(4d), TestUtility.Inv(shomon, "制限時間の計算")); Assert.AreEqual(TimeSpan.FromSeconds(4d), shomon.GetTimeLimit(userInfo)); } }
public DaimonButtonBox(Daimon[] daimons, int daimonIndex, EPuzzleUserInfo userInfo) { if (null == userInfo) throw new ArgumentNullException("userInfo"); BorderLine = true; Daimons = daimons; DaimonIndex = daimonIndex; _userInfo = userInfo; var daimonButtons = Daimons.Select(x => { return new DaimonButton(x) { FukushuFlag = x.復習判定_2(userInfo), Floating = DrawingObjectFloating.Left, }; }); foreach (var daimonButton in daimonButtons) { Items.Add(daimonButton); } SetDaimonButtonValue(new SizeF(30, 30), 10f, 10f, 10f); }
public void MondaiResultsThatAreReturnedFromGetItemsMethodDependOnDifficultyProperty() { var t0 = new DateTime(2013, 10, 2, 0, 0, 0); // UTC var t1 = t0 + TimeSpan.FromDays(2d); EPuzzleTime.Now = t1; var userInfo = new EPuzzleUserInfo(); userInfo.Difficulty = Difficulty.Hard; Assert.AreEqual(Difficulty.Hard, userInfo.Difficulty); var mondaiResult0 = new MondaiResult("id50", t0, TimeSpan.FromSeconds(8d), Difficulty.Normal); var mondaiResult1 = new MondaiResult("id50", t1, TimeSpan.FromSeconds(8d), Difficulty.Hard); userInfo.MondaiResults.Add(mondaiResult0); userInfo.MondaiResults.Add(mondaiResult1); CollectionAssert.AreEqual(new [] { mondaiResult1, }, userInfo.MondaiResults.GetItems("id50")); var mondaiResult2 = userInfo.CreateMondaiResult("id50", t1, TimeSpan.FromSeconds(8d)); Assert.AreEqual(Difficulty.Hard, mondaiResult2.Difficulty); }
public void GetItemsThatHaveBeenDoneWithinTest() { var t0 = new DateTime(2013, 10, 2, 0, 0, 0); // UTC var t1 = t0 + TimeSpan.FromDays(2d); EPuzzleTime.Now = t1; var userInfo = new EPuzzleUserInfo(); Assert.AreEqual(Difficulty.Normal, userInfo.Difficulty); var mondaiResult0 = new MondaiResult("id50", t0, TimeSpan.FromSeconds(8d), userInfo.Difficulty); var mondaiResult1 = new MondaiResult("id60", t1, TimeSpan.FromSeconds(8d), userInfo.Difficulty); var mondaiResult2 = new MondaiResult("id70", t1, TimeSpan.FromSeconds(8d), Difficulty.Hard); userInfo.MondaiResults.Add(mondaiResult0); userInfo.MondaiResults.Add(mondaiResult1); userInfo.MondaiResults.Add(mondaiResult2); { // var mondaiResults = userInfo.MondaiResults.GetItemsThatHaveBeenDoneWithin(TimeSpan.FromHours(24d)); var mondaiResults = (IEnumerable<MondaiResult>)TestUtility.Invoke(userInfo, "GetMondaiResultsThatYouHaveDoneWithin", TimeSpan.FromHours(24d)); Assert.AreEqual(1, mondaiResults.Count()); Assert.AreSame(mondaiResult1, mondaiResults.Single()); } { // var mondaiResults = userInfo.MondaiResults.GetItemsThatHaveBeenDoneWithin(TimeSpan.FromDays(3d)); var mondaiResults = (IEnumerable<MondaiResult>)TestUtility.Invoke(userInfo, "GetMondaiResultsThatYouHaveDoneWithin", TimeSpan.FromDays(3d)); Assert.AreEqual(2, mondaiResults.Count()); CollectionAssert.AreEquivalent(new [] { mondaiResult0, mondaiResult1, }, mondaiResults); } }
public double GetGrade(MondaiResult mondaiResult, EPuzzleUserInfo userInfo) { if (null == mondaiResult) throw new ArgumentNullException(); if (Id != mondaiResult.MondaiId) throw new ArgumentException("Ids are not equal."); return GetGrade(mondaiResult.所要時間, GetTimeLimit(userInfo)); }
// Static members public static string GetString(MondaiResult mondaiResult, Chumon chumon, EPuzzleUserInfo userInfo) { var text = string.Format ( @"({0}日前) {1} {2:00}:{3:00} ({4})", (int)Math.Round((EPuzzleTime.Now - mondaiResult.EndTime).TotalDays), mondaiResult.EndTime.ToString("yyyy/MM/dd(ddd) HH:mm"), (int)mondaiResult.所要時間.TotalMinutes, (int)mondaiResult.所要時間.Seconds, chumon.GetGradeString(mondaiResult.所要時間, userInfo) ); return text; }
public void GetItemsTest() { var userInfo = new EPuzzleUserInfo(); userInfo.MondaiResults.AddNew("id0", DateTime.MinValue, TimeSpan.FromSeconds(8d)); userInfo.MondaiResults.AddNew("id0", DateTime.MinValue, TimeSpan.FromSeconds(9d)); userInfo.MondaiResults.AddNew("id0", DateTime.MinValue, TimeSpan.FromSeconds(1d)); userInfo.MondaiResults.AddNew("id1", DateTime.MinValue, TimeSpan.FromSeconds(1d)); CollectionAssert.AreEquivalent(new [] { TimeSpan.FromSeconds(1d), TimeSpan.FromSeconds(8d), TimeSpan.FromSeconds(9d), }, userInfo.MondaiResults.GetItems("id0").Select(x => x.所要時間).ToArray()); }
public virtual double? GetLastGrade(EPuzzleUserInfo userInfo) { throw new NotSupportedException(); }
public override bool 復習判定_2(EPuzzleUserInfo userInfo) { return userInfo.GradeProcessor.復習判定_2(this, userInfo); }
public virtual MondaiResult 最低の結果を取得(EPuzzleUserInfo userInfo, TimeSpan duration) { throw new NotSupportedException(); }
public override double? GetLastGrade(EPuzzleUserInfo userInfo) { var results = Items.OfType<Chumon>().Select(chumon => chumon.GetLastGrade(userInfo)).ToArray(); if (results.Any(x => null == x)) return null; return results.Where(x => null != x).Cast<double>().Max(); }
public string GetGradeString(TimeSpan shoyou, EPuzzleUserInfo userInfo) { return userInfo.GradeProcessor.GetGradeString(GetGrade(shoyou, GetTimeLimit(userInfo))); }
public virtual bool 復習判定_2(EPuzzleUserInfo userInfo) { throw new NotSupportedException(); }
public void 囮項目テスト() { var text = @" document { id = document1 title = documentD daimon { id = id1 title = ""daimonTitle"" chumon { id = chumon2-2 title = ""chumonTitle"" shomon { id = shomon1 mon { Are these cameras? } sei { No, they aren't. } sei { Yes, they are. } otori { Yes, we are. } } } } } "; using (var tempFile = new TempFile(text)) { var element = EmpDocument.Load(tempFile.Name); var mondaiDocument = element.MondaiDocument; var userInfo = new EPuzzleUserInfo(); Assert.AreEqual("document1", mondaiDocument.Id); var daimon = mondaiDocument.Items[0]; Assert.AreEqual(@"""daimonTitle""", daimon.Name); Assert.IsNotEmpty(daimon.Id); var chumon = (Chumon)daimon.Items[0]; Assert.AreEqual(@"""chumonTitle""", chumon.Name); Assert.IsNotEmpty(chumon.Id); var shomon = (Shomon)chumon.Items[0]; Assert.AreEqual("shomon1", shomon.Id); Assert.AreEqual("Are these cameras?", shomon.Mondaibun); CollectionAssert.AreEqual(new [] { "No, they aren't.", "Yes, they are." }, shomon.CorrectAnswers.Select(x => x.Text)); CollectionAssert.AreEquivalent(new [] { "No", ",", "they", "aren't", "Yes", "are", ".", "we", }, shomon.MondaiWords.Select(x => x.Text).ToArray()); Assert.AreEqual(TimeSpan.FromSeconds(6d), chumon.GetTimeLimit(userInfo)); } }
public TimeSpan GetTimeLimit(EPuzzleUserInfo userInfo) { if (null == _timeLimitCache) { // _timeLimitCache = 制限時間の計算(); _timeLimitCache = userInfo.TimeLimit.GetTimeLimit(this); } return (TimeSpan)_timeLimitCache; }
public string GetNewestGradeString(EPuzzleUserInfo userInfo) { double? grade = GetLastGrade(userInfo); return null == grade ? "-" : userInfo.GradeProcessor.GetGradeString((double)grade); }
public void LoadingTest() { var text = @"version = 1.1 document { id = document1 title = Document Title 1 daimon { id = daimon1 title = ""Daimon Title 1"" chumon { id = chumon1 title = ""Chumon Title 1"" shomon { id = shomon1 question = Are these cameras? correct = No, they aren't. words = Yes, words = they are. } } chumon { id = chumon2 title = ""Chumon Title 2"" shomon { id = shomon2 q = Are these cameras? c = No, they aren't. w = Yes, w = they are. } } } daimon { id = daimon2 title = ""Daimon Title 2"" chumon { id = chumon3 title = ""Chumon Title 3"" shomon { id = shomon3 q = Are these cameras? c = No, they aren't. w = Yes, w = they are. } } } }"; using (var tempFile = new TempFile(text)) { var accessor = new EmpDocumentAccessor1_1(); var mondaiDocument = accessor.Load(tempFile.Name); var userInfo = new EPuzzleUserInfo(); Assert.AreEqual("document1", mondaiDocument.Id); var daimon = mondaiDocument.Items[0]; Assert.AreEqual(@"""Daimon Title 1""", daimon.Name); Assert.IsNotEmpty(daimon.Id); { var chumon = (Chumon)daimon.Items[0]; Assert.AreEqual(@"""Chumon Title 1""", chumon.Name); Assert.IsNotEmpty(chumon.Id); Assert.AreEqual(1, chumon.Items.Count()); var shomon = (Shomon)chumon.Items[0]; Assert.AreEqual("shomon1", shomon.Id); Assert.AreEqual("Are these cameras?", shomon.Mondaibun); Assert.AreEqual("No, they aren't.", shomon.CorrectAnswers.First().Text); CollectionAssert.AreEquivalent(new [] { "No", ",", "they", "aren't", ".", "Yes,", "they are." }, shomon.MondaiWords.Select(x => x.Text).ToArray()); Assert.AreEqual(TimeSpan.FromSeconds(6d), chumon.GetTimeLimit(userInfo)); } { var daimon2 = (Daimon)mondaiDocument.Items[1]; Assert.AreEqual("daimon2", daimon2.Id); var chumon2 = (Chumon)daimon2.Items[0]; Assert.AreEqual("chumon3", chumon2.Id); var shomon = (Shomon)chumon2.Items[0]; Assert.AreEqual("shomon3", shomon.Id); Assert.AreEqual("Are these cameras?", shomon.Mondaibun); Assert.AreEqual("No, they aren't.", shomon.CorrectAnswers.First().Text); CollectionAssert.AreEquivalent(new [] { "No", ",", "they", "aren't", ".", "Yes,", "they are." }, shomon.MondaiWords.Select(x => x.Text).ToArray()); } } }
public double GetGrade(TimeSpan shoyou, EPuzzleUserInfo userInfo) { return GetGrade(shoyou, GetTimeLimit(userInfo)); }
public virtual bool IsLocked(EPuzzleUserInfo userInfo) { throw new NotSupportedException(); }
public string GetLastAndBestString(EPuzzleUserInfo userInfo) { var last = GetLastGrade(userInfo); if (null == last) return "-"; var best = GetBestGrade(userInfo); var lastStr = userInfo.GradeProcessor.GetGradeString((double)last); var bestStr = userInfo.GradeProcessor.GetGradeString((double)best); return lastStr == bestStr ? lastStr : lastStr + ":" + bestStr; }
public void GetMondaiDocumentTest() { var text = @" document { id = document1 title = documentA daimon { id = daimon1 title = ""daimonTitle"" chumon { id = chumon1 title = ""chumonTitle"" shomon { id = shomon1 mon { Are these cameras? } sei { No, they aren't. } word { Yes, } word { they are. } } } chumon { id = id2 title = ""chumonTitle"" shomon { id = shomon2 mon { Are these cameras? } sei { No, they aren't. } word { Yes, } word { they are. } } } } daimon { id = id1 title = ""daimonTitle"" chumon { id = chumon2-2 title = ""chumonTitle"" shomon { id = shomon3 mon { Are these cameras? } sei { No, they aren't. } word { Yes, } word { they are. } } } } } "; using (var tempFile = new TempFile(text)) { var emp = EmpDocument.Load(tempFile.Name); var mondaiDocument = emp.MondaiDocument; var userInfo = new EPuzzleUserInfo(); Assert.AreEqual("document1", mondaiDocument.Id); var daimon = mondaiDocument.Items[0]; Assert.AreEqual(@"""daimonTitle""", daimon.Name); Assert.IsNotEmpty(daimon.Id); var chumon = (Chumon)daimon.Items[0]; Assert.AreEqual(@"""chumonTitle""", chumon.Name); Assert.IsNotEmpty(chumon.Id); Assert.AreEqual(1, chumon.Items.Count()); var shomon = (Shomon)chumon.Items[0]; Assert.AreEqual("shomon1", shomon.Id); Assert.AreEqual("Are these cameras?", shomon.Mondaibun); Assert.AreEqual("No, they aren't.", shomon.CorrectAnswers.First().Text); CollectionAssert.AreEquivalent(new [] { "No", ",", "they", "aren't", ".", "Yes,", "they are." }, shomon.MondaiWords.Select(x => x.Text).ToArray()); Assert.AreEqual(TimeSpan.FromSeconds(6d), chumon.GetTimeLimit(userInfo)); var daimon2 = (Daimon)mondaiDocument.Items[1]; Assert.AreEqual("id1", daimon2.Id); var chumon2 = (Chumon)daimon.Items[1]; Assert.AreEqual("id2", chumon2.Id); } }
public virtual TimeSpan? 復習までの猶予期間を取得(EPuzzleUserInfo userInfo) { throw new NotSupportedException(); }