コード例 #1
0
 public ChumonResult(EPuzzleUserInfo userInfo)
 {
     StartTime = EPuzzleTime.Now;
     Chumon時間調整 = TimeSpan.Zero;
     ShomonResults = new List<ShomonResult>();
     UserInfo = userInfo;
 }
コード例 #2
0
 public EPuzzleTutor(EPuzzleUserInfo userInfo, IEnumerable<MondaiDocument> mondaiDocuments, TimeSpan duration, int numberOfQuestionsThatYouHaveToDoToday)
 {
     MondaiDocuments = mondaiDocuments.ToArray();
     _userInfo = userInfo;
     _duration = duration;
     NumberOfQuestionsThatYouHaveToDoToday = numberOfQuestionsThatYouHaveToDoToday;
 }
コード例 #3
0
 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));
 }
コード例 #4
0
        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);
        }
コード例 #5
0
 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;
 }
コード例 #6
0
 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;
 }
コード例 #7
0
        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時間調整);
        }
コード例 #8
0
 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;
 }
コード例 #9
0
 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));
     }
 }
コード例 #10
0
        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);
        }
コード例 #11
0
        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);
        }
コード例 #12
0
        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);
            }
        }
コード例 #13
0
 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));
 }
コード例 #14
0
 // 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;
 }
コード例 #15
0
 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());
 }
コード例 #16
0
 public virtual double? GetLastGrade(EPuzzleUserInfo userInfo)
 {
     throw new NotSupportedException();
 }
コード例 #17
0
 public override bool 復習判定_2(EPuzzleUserInfo userInfo)
 {
     return userInfo.GradeProcessor.復習判定_2(this, userInfo);
 }
コード例 #18
0
 public virtual MondaiResult 最低の結果を取得(EPuzzleUserInfo userInfo, TimeSpan duration)
 {
     throw new NotSupportedException();
 }
コード例 #19
0
 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();
 }
コード例 #20
0
 public string GetGradeString(TimeSpan shoyou, EPuzzleUserInfo userInfo)
 {
     return userInfo.GradeProcessor.GetGradeString(GetGrade(shoyou, GetTimeLimit(userInfo)));
 }
コード例 #21
0
 public virtual bool 復習判定_2(EPuzzleUserInfo userInfo)
 {
     throw new NotSupportedException();
 }
コード例 #22
0
        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));
            }
        }
コード例 #23
0
 public TimeSpan GetTimeLimit(EPuzzleUserInfo userInfo)
 {
     if (null == _timeLimitCache)
     {
     //				_timeLimitCache = 制限時間の計算();
         _timeLimitCache = userInfo.TimeLimit.GetTimeLimit(this);
     }
     return (TimeSpan)_timeLimitCache;
 }
コード例 #24
0
 public string GetNewestGradeString(EPuzzleUserInfo userInfo)
 {
     double? grade = GetLastGrade(userInfo);
     return null == grade ? "-" : userInfo.GradeProcessor.GetGradeString((double)grade);
 }
コード例 #25
0
        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());
                }

            }
        }
コード例 #26
0
 public double GetGrade(TimeSpan shoyou, EPuzzleUserInfo userInfo)
 {
     return GetGrade(shoyou, GetTimeLimit(userInfo));
 }
コード例 #27
0
 public virtual bool IsLocked(EPuzzleUserInfo userInfo)
 {
     throw new NotSupportedException();
 }
コード例 #28
0
 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;
 }
コード例 #29
0
        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);
            }
        }
コード例 #30
0
 public virtual TimeSpan? 復習までの猶予期間を取得(EPuzzleUserInfo userInfo)
 {
     throw new NotSupportedException();
 }