public void マウスホイールテスト() { using (var test = new EPuzzleTestManager()) { test.AddFile(@"mondai\Mondai3.xml", TestResources.Mondai03); test.AddFile(@"mondai\Mondai2.xml", TestResources.Mondai02); test.AddFile(@"help\HelpDocument.xml", TestResources.HelpDocumentXml); test.Initialize(); var window = test.Window; var userInfo = window.EPuzzleData.CurrentUserInfo; var mondai2 = window.EPuzzleData.MondaiDocuments[0]; var mondai3 = window.EPuzzleData.MondaiDocuments[1]; // CollectionAssert.AreEqual(new [] { "mondaiDocument1", }, EPuzzleTutor.GetMondaiDocumentsFromIds(window.EPuzzleData.MondaiDocuments, new [] { "mondaiDocument1", }).Select(x => x.Id)); CollectionAssert.AreEqual(new [] { "mondaiDocument1", }, GetIds(TestUtility.Inv(typeof(EPuzzleTutor), "GetMondaiDocumentsFromIds", window.EPuzzleData.MondaiDocuments, new [] { "mondaiDocument1", }))); var tutor = new EPuzzleTutor(userInfo, window.EPuzzleData.MondaiDocuments, TimeSpan.FromHours(12d), 30); var tutorState = new TutorState(window, tutor); window.State = tutorState; Assert.IsInstanceOf<TutorState>(window.State); CollectionAssert.AreEqual(new [] { "d1_chumon1", "chumon1", }, window.State.GetAllItems().OfType<ChumonButton>().Select(x => x.Chumon.Id).ToArray()); HelpWithScroll<Chumon> helpWithScroll = (HelpWithScroll<Chumon>)TestUtility.GetValue(tutorState, "_helpWithScroll"); helpWithScroll.NumberOfItemsToBeShown = 1; tutorState.Refresh(); // Assert.AreEqual(0, tutorState.Index); CollectionAssert.AreEqual(new [] { "d1_chumon1", }, window.State.GetAllItems().OfType<ChumonButton>().Select(x => x.Chumon.Id).ToArray()); window.MouseWheel(120); window.MouseWheel(120); window.MouseWheel(120); window.MouseWheel(120); window.MouseWheel(120); window.MouseWheel(120); window.MouseWheel(120); CollectionAssert.AreEqual(new [] { "d1_chumon1", }, window.State.GetAllItems().OfType<ChumonButton>().Select(x => x.Chumon.Id).ToArray()); // delta: -120 window.MouseWheel(-120); window.MouseWheel(-120); window.MouseWheel(-120); window.MouseWheel(-120); window.MouseWheel(-120); window.MouseWheel(-120); // Assert.AreEqual(1, helpWithScroll.Index); CollectionAssert.AreEqual(new [] { "chumon1", }, window.State.GetAllItems().OfType<ChumonButton>().Select(x => x.Chumon.Id).ToArray()); // delta: -120 window.MouseWheel(-120); window.MouseWheel(-120); window.MouseWheel(-120); window.MouseWheel(-120); window.MouseWheel(-120); window.MouseWheel(-120); // Assert.AreEqual(1, tutorState.Index); CollectionAssert.AreEqual(new [] { "chumon1", }, window.State.GetAllItems().OfType<ChumonButton>().Select(x => x.Chumon.Id).ToArray()); // delta: 120 x 2 window.MouseWheel(120); window.MouseWheel(120); window.MouseWheel(120); window.MouseWheel(120); window.MouseWheel(120); window.MouseWheel(120); window.MouseWheel(120); window.MouseWheel(120); window.MouseWheel(120); window.MouseWheel(120); // Assert.AreEqual(0, tutorState.Index); CollectionAssert.AreEqual(new [] { "d1_chumon1", }, window.State.GetAllItems().OfType<ChumonButton>().Select(x => x.Chumon.Id).ToArray()); } }
public void Test0() { using (var test = new EPuzzleTestManager()) { test.AddFile(@"mondai\Mondai3.xml", TestResources.Mondai03); test.AddFile(@"mondai\Mondai2.xml", TestResources.Mondai02); test.AddFile(@"help\HelpDocument.xml", TestResources.HelpDocumentXml); test.AddFile(@"help\help0.png", fileName => new Bitmap(100, 100).Save(fileName, System.Drawing.Imaging.ImageFormat.Png)); test.Initialize(); var window = test.Window; var userInfo = window.EPuzzleData.CurrentUserInfo; var mondai2 = window.EPuzzleData.MondaiDocuments[0]; var mondai3 = window.EPuzzleData.MondaiDocuments[1]; // CollectionAssert.AreEqual(new [] { "mondaiDocument1", }, EPuzzleTutor.GetMondaiDocumentsFromIds(window.EPuzzleData.MondaiDocuments, new [] { "mondaiDocument1", }).Select(x => x.Id)); CollectionAssert.AreEqual(new [] { "mondaiDocument1", }, GetIds(TestUtility.Inv(typeof(EPuzzleTutor), "GetMondaiDocumentsFromIds", window.EPuzzleData.MondaiDocuments, new [] { "mondaiDocument1", }))); var tutor = new EPuzzleTutor(userInfo, window.EPuzzleData.MondaiDocuments, TimeSpan.FromHours(12d), 30); var tutorState = new TutorState(window, tutor); window.State = tutorState; Assert.IsInstanceOf<TutorState>(window.State); { var chumonButtons = window.State.GetAllItems().OfType<ChumonButton>(); CollectionAssert.AreEqual(new [] { "d1_chumon1", "chumon1", }, chumonButtons.Select(x => x.Chumon.Id).ToArray()); window.State.CurrentItem = chumonButtons.ElementAt(0); Assert.IsInstanceOf<ChumonButton>(window.State.CurrentItem); Assert.AreEqual("d1_chumon1", ((ChumonButton)window.State.CurrentItem).Chumon.Id); // CurrentItemは先頭のChumon Assert.NotNull(window.State.CurrentItem); Assert.AreEqual("d1_chumon1", ((ChumonButton)window.State.CurrentItem).Chumon.Id); var kirokuBox = (KirokuBox2)TestUtility.GetValue(tutorState, "_kirokuBox"); Assert.AreEqual("d1_chumon1", kirokuBox.Chumon.Id); } { var upButton = window.State.GetAllItems().Where(x => "upButton" == x.Name).FirstOrDefault(); Assert.Null(upButton); var downButton = window.State.GetAllItems().Where(x => "downButton" == x.Name).FirstOrDefault(); Assert.Null(downButton); } /* { var orderByGradeStringsButton = window.State.GetAllItems().First(x => "orderByGradeStringsButton" == x.Name); Assert.False(tutorState.OrderByGradeStrings); Assert.AreEqual("復習猶予期間順", orderByGradeStringsButton.Text); window.State.CurrentItem = orderByGradeStringsButton; window.State.OnAction0(); } { var orderByGradeStringsButton = window.State.GetAllItems().First(x => "orderByGradeStringsButton" == x.Name); Assert.True(tutorState.OrderByGradeStrings); Assert.AreEqual("最新の成績順", orderByGradeStringsButton.Text); } { var orderByGradeStringsButton = window.State.GetAllItems().First(x => "orderByGradeStringsButton" == x.Name); window.State.CurrentItem = orderByGradeStringsButton; window.State.OnAction0(); } Assert.False(tutorState.OrderByGradeStrings); */ // Chumon開始 { var chumonButtons = window.State.GetAllItems().OfType<ChumonButton>(); window.State.CurrentItem = chumonButtons.First(); Assert.IsInstanceOf<ChumonButton>(window.State.CurrentItem); } window.State.OnAction0(); Assert.IsInstanceOf<ClickDeKaishiState>(window.State); window.State.OnAction0(); Assert.IsInstanceOf<ShomonState>(window.State); Assert.AreSame(tutorState, window.WindowStateWhichHasStartedChumon); window.State.CurrentItem = window.State.GetAllItems().Where(x => x is WordCard && "This is" == x.Text).First(); window.State.OnAction0(); window.State.CurrentItem = window.State.GetAllItems().Where(x => x is WordCard && "a notebook" == x.Text).First(); window.State.OnAction0(); window.State.CurrentItem = window.State.GetAllItems().Where(x => x is WordCard && "." == x.Text).First(); window.State.OnAction0(); EPuzzleTime.Now += TimeSpan.FromSeconds(1d); window.State.Tick(); window.State.Tick(); Assert.IsInstanceOf<FadeoutState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(1d); window.Tick(); Assert.IsInstanceOf<FadeinState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(1d); window.Tick(); Assert.IsInstanceOf<ShomonState>(window.State); window.State.CurrentItem = window.State.GetAllItems().Where(x => x is WordCard && "This" == x.Text).First(); window.State.OnAction0(); window.State.CurrentItem = window.State.GetAllItems().Where(x => x is WordCard && "is" == x.Text).First(); window.State.OnAction0(); window.State.CurrentItem = window.State.GetAllItems().Where(x => x is WordCard && "a" == x.Text).First(); window.State.OnAction0(); window.State.CurrentItem = window.State.GetAllItems().Where(x => x is WordCard && "ball" == x.Text).First(); window.State.OnAction0(); EPuzzleTime.Now += TimeSpan.FromSeconds(10d); window.State.CurrentItem = window.State.GetAllItems().Where(x => x is WordCard && "." == x.Text).First(); window.State.OnAction0(); EPuzzleTime.Now += TimeSpan.FromSeconds(1d); window.State.Tick(); window.State.Tick(); Assert.IsInstanceOf<FadeoutState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(1d); window.Tick(); Assert.IsInstanceOf<FadeinState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(1d); window.Tick(); Assert.IsInstanceOf<ChumonResultState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.State.OnAction0(); window.Tick(); // EPuzzleTime.Now += TimeSpan.FromDays(1d); Assert.IsInstanceOf<FadeoutState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(1d); window.Tick(); Assert.IsInstanceOf<FadeinState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(1d); window.Tick(); Assert.IsInstanceOf<TutorState>(window.State); Assert.AreSame(tutorState, window.State); { var chumonButtons = window.State.GetAllItems().OfType<ChumonButton>(); Assert.AreEqual("B", chumonButtons.First(x => "d1_chumon1" == x.Chumon.Id).Chumon.GetNewestGradeString(userInfo)); Assert.AreEqual("-", chumonButtons.First(x => "d1_chumon2" == x.Chumon.Id).Chumon.GetNewestGradeString(userInfo)); Assert.AreEqual("-", chumonButtons.First(x => "chumon1" == x.Chumon.Id).Chumon.GetNewestGradeString(userInfo)); } HelpWithScroll<Chumon> helpWithScroll = (HelpWithScroll<Chumon>)TestUtility.GetValue(tutorState, "_helpWithScroll"); { Assert.AreEqual(0, helpWithScroll.NumberOfUpperItems); Assert.AreEqual(-15, helpWithScroll.NumberOfLowerItems); var chumonButtons = window.State.GetAllItems().OfType<ChumonButton>(); CollectionAssert.AreEqual(new [] { "d1_chumon2", "chumon1", "d1_chumon1", }, chumonButtons.Select(x => x.Chumon.Id).ToArray()); Assert.NotNull(window.State.CurrentItem); Assert.AreEqual("d1_chumon1", ((ChumonButton)window.State.CurrentItem).Chumon.Id); } Assert.Throws<ArgumentOutOfRangeException>(() => { helpWithScroll.NumberOfItemsToBeShown = 0; }); helpWithScroll.NumberOfItemsToBeShown = 2; tutorState.Refresh(); { Assert.AreEqual(0, helpWithScroll.NumberOfUpperItems); Assert.AreEqual(1, helpWithScroll.NumberOfLowerItems); var chumonButtons = window.State.GetAllItems().OfType<ChumonButton>(); CollectionAssert.AreEqual(new [] { "d1_chumon2", "chumon1", }, chumonButtons.Select(x => x.Chumon.Id).ToArray()); } { var upButton = window.State.GetAllItems().Where(x => "upButton" == x.Name).FirstOrDefault(); Assert.Null(upButton); var downButton = window.State.GetAllItems().Where(x => "downButton" == x.Name).FirstOrDefault(); Assert.NotNull(downButton); window.State.CurrentItem = downButton; window.State.OnAction0(); } { Assert.AreEqual(1, helpWithScroll.NumberOfUpperItems); Assert.AreEqual(0, helpWithScroll.NumberOfLowerItems); var chumonButtons = window.State.GetAllItems().OfType<ChumonButton>(); CollectionAssert.AreEqual(new [] { "chumon1", "d1_chumon1", }, chumonButtons.Select(x => x.Chumon.Id).ToArray()); } { var upButton = window.State.GetAllItems().Where(x => "upButton" == x.Name).FirstOrDefault(); Assert.NotNull(upButton); var downButton = window.State.GetAllItems().Where(x => "downButton" == x.Name).FirstOrDefault(); Assert.Null(downButton); window.State.CurrentItem = upButton; window.State.OnAction0(); } { Assert.AreEqual(0, helpWithScroll.NumberOfUpperItems); Assert.AreEqual(1, helpWithScroll.NumberOfLowerItems); var chumonButtons = window.State.GetAllItems().OfType<ChumonButton>(); CollectionAssert.AreEqual(new [] { "d1_chumon2", "chumon1", }, chumonButtons.Select(x => x.Chumon.Id).ToArray()); } { var upButton = window.State.GetAllItems().Where(x => "upButton" == x.Name).FirstOrDefault(); Assert.Null(upButton); var downButton = window.State.GetAllItems().Where(x => "downButton" == x.Name).FirstOrDefault(); Assert.NotNull(downButton); } /* Assert.Throws<ArgumentOutOfRangeException>(() => { helpWithScroll.Index = 0; helpWithScroll.Index--; }); Assert.Throws<ArgumentOutOfRangeException>(() => { helpWithScroll.Index = 1; helpWithScroll.Index++; });*/ helpWithScroll.ScrollUp(100); // helpWithScroll.Index = 0; tutorState.Refresh(); { var upButton = window.State.GetAllItems().Where(x => "upButton" == x.Name).FirstOrDefault(); Assert.Null(upButton); var downButton = window.State.GetAllItems().Where(x => "downButton" == x.Name).FirstOrDefault(); Assert.NotNull(downButton); } // Ctrl + Down window.State.OnActionDown(); { { var upButton = window.State.GetAllItems().Where(x => "upButton" == x.Name).FirstOrDefault(); Assert.NotNull(upButton); var downButton = window.State.GetAllItems().Where(x => "downButton" == x.Name).FirstOrDefault(); Assert.Null(downButton); } var chumonButtons = window.State.GetAllItems().OfType<ChumonButton>(); CollectionAssert.AreEqual(new [] { "chumon1", "d1_chumon1", }, chumonButtons.Select(x => x.Chumon.Id).ToArray()); } window.State.OnActionDown(); window.State.OnActionDown(); window.State.OnActionDown(); // Ctrl + Up window.State.OnActionUp(); { var chumonButtons = window.State.GetAllItems().OfType<ChumonButton>(); CollectionAssert.AreEqual(new [] { "d1_chumon2", "chumon1", }, chumonButtons.Select(x => x.Chumon.Id).ToArray()); } window.State.OnActionUp(); window.State.OnActionUp(); window.State.OnActionUp(); helpWithScroll.NumberOfItemsToBeShown = 3; tutorState.Refresh(); { var chumonButtons = window.State.GetAllItems().OfType<ChumonButton>(); CollectionAssert.AreEqual(new [] { "d1_chumon2", "chumon1", "d1_chumon1", }, chumonButtons.Select(x => x.Chumon.Id).ToArray()); CollectionAssert.AreEqual(new [] { "-", "-", "B", }, chumonButtons.Select(x => x.Chumon.GetGradeString(userInfo))); } /* Assert.False(tutorState.OrderByGradeStrings); { var orderByGradeStringsButton = window.State.GetAllItems().First(x => "orderByGradeStringsButton" == x.Name); window.State.CurrentItem = orderByGradeStringsButton; window.State.OnAction0(); Assert.True(tutorState.OrderByGradeStrings); orderByGradeStringsButton = window.State.GetAllItems().First(x => "orderByGradeStringsButton" == x.Name); Assert.AreEqual("最新の成績順", orderByGradeStringsButton.Text); } { var orderByGradeStringsButton = window.State.GetAllItems().First(x => "orderByGradeStringsButton" == x.Name); window.State.CurrentItem = orderByGradeStringsButton; window.State.OnAction0(); Assert.False(tutorState.OrderByGradeStrings); orderByGradeStringsButton = window.State.GetAllItems().First(x => "orderByGradeStringsButton" == x.Name); Assert.AreEqual("復習猶予期間順", orderByGradeStringsButton.Text); } { var orderByGradeStringsButton = window.State.GetAllItems().First(x => "orderByGradeStringsButton" == x.Name); window.State.CurrentItem = orderByGradeStringsButton; window.State.OnAction0(); Assert.True(tutorState.OrderByGradeStrings); orderByGradeStringsButton = window.State.GetAllItems().First(x => "orderByGradeStringsButton" == x.Name); Assert.AreEqual("最新の成績順", orderByGradeStringsButton.Text); }*/ { var button = window.State.GetAllItems().FirstOrDefault(x => "byGradeButton" == x.Name); Assert.NotNull(button); Assert.AreEqual("成績順", button.Text); Assert.True(button.IsClickable); Assert.True(button.IsVisible); // 成績順ボタンを押下 window.State.CurrentItem = button; window.State.OnAction0(); } { var chumonButtons = window.State.GetAllItems().OfType<ChumonButton>(); CollectionAssert.AreEqual(new [] { "d1_chumon1", "d1_chumon2", "chumon1", }, chumonButtons.Select(x => x.Chumon.Id).ToArray()); CollectionAssert.AreEqual(new [] { "B", "-", "-", }, chumonButtons.Select(x => x.Chumon.GetGradeString(userInfo))); } // helpWithScroll.NumberOfItemsToBeShown = 1; TestUtility.GetValue(window.State, "_gradeScrollHelper").NumberOfItemsToBeShown = 1; tutorState.Refresh(); window.State.OnActionUp(); window.State.OnActionUp(); window.State.OnActionUp(); { var chumonButtons = window.State.GetAllItems().OfType<ChumonButton>(); CollectionAssert.AreEqual(new [] { "d1_chumon1", }, chumonButtons.Select(x => x.Chumon.Id).ToArray()); } { var downButton = window.State.GetAllItems().Where(x => "downButton" == x.Name).FirstOrDefault(); Assert.NotNull(downButton); window.State.CurrentItem = downButton; window.State.OnAction0(); } { var chumonButtons = window.State.GetAllItems().OfType<ChumonButton>(); CollectionAssert.AreEqual(new [] { "d1_chumon2", }, chumonButtons.Select(x => x.Chumon.Id).ToArray()); var downButton = window.State.GetAllItems().Where(x => "downButton" == x.Name).FirstOrDefault(); Assert.NotNull(downButton); Assert.AreSame(downButton, window.State.CurrentItem); } } }
public void ChumonButton記憶() { using (var test = new EPuzzleTestManager()) { test.AddFile(@"mondai\Mondai3.xml", TestResources.Mondai03); test.AddFile(@"mondai\Mondai2.xml", TestResources.Mondai02); test.AddFile(@"help\HelpDocument.xml", TestResources.HelpDocumentXml); test.AddFile(@"help\help0.png", fileName => new Bitmap(100, 100).Save(fileName, System.Drawing.Imaging.ImageFormat.Png)); test.Initialize(); var window = test.Window; var userInfo = window.EPuzzleData.CurrentUserInfo; var mondai2 = window.EPuzzleData.MondaiDocuments[0]; var mondai3 = window.EPuzzleData.MondaiDocuments[1]; var t0 = new DateTime(2013, 9, 5, 0, 0, 0); // UTC EPuzzleTime.Now = t0; // CollectionAssert.AreEqual(new [] { "mondaiDocument1", }, EPuzzleTutor.GetMondaiDocumentsFromIds(window.EPuzzleData.MondaiDocuments, new [] { "mondaiDocument1", }).Select(x => x.Id)); CollectionAssert.AreEqual(new [] { "mondaiDocument1", }, GetIds(TestUtility.Inv(typeof(EPuzzleTutor), "GetMondaiDocumentsFromIds", window.EPuzzleData.MondaiDocuments, new [] { "mondaiDocument1", }))); var tutor = new EPuzzleTutor(userInfo, window.EPuzzleData.MondaiDocuments, TimeSpan.FromHours(12d), 30); var tutorState = new TutorState(window, tutor); window.State = tutorState; Assert.IsInstanceOf<TutorState>(window.State); { var chumonButtons = window.State.GetAllItems().OfType<ChumonButton>(); CollectionAssert.AreEqual(new [] { "d1_chumon1", "chumon1", }, chumonButtons.Select(x => x.Chumon.Id).ToArray()); window.State.CurrentItem = chumonButtons.ElementAt(0); Assert.IsInstanceOf<ChumonButton>(window.State.CurrentItem); Assert.AreEqual("d1_chumon1", ((ChumonButton)window.State.CurrentItem).Chumon.Id); // CurrentItemは先頭のChumon Assert.NotNull(window.State.CurrentItem); Assert.AreEqual("d1_chumon1", ((ChumonButton)window.State.CurrentItem).Chumon.Id); var kirokuBox = (KirokuBox2)TestUtility.GetValue(tutorState, "_kirokuBox"); Assert.NotNull(kirokuBox); Assert.NotNull(kirokuBox.Chumon); Assert.AreEqual("d1_chumon1", kirokuBox.Chumon.Id); } { var upButton = window.State.GetAllItems().Where(x => "upButton" == x.Name).FirstOrDefault(); Assert.Null(upButton); var downButton = window.State.GetAllItems().Where(x => "downButton" == x.Name).FirstOrDefault(); Assert.Null(downButton); } /* { var orderByGradeStringsButton = window.State.GetAllItems().First(x => "orderByGradeStringsButton" == x.Name); window.State.CurrentItem = orderByGradeStringsButton; window.State.OnAction0(); }*/ // Chumon開始 userInfo.MondaiResults.AddNew("d1_chumon1", t0 - TimeSpan.FromDays(2d), TimeSpan.FromSeconds(1d)); tutorState.Refresh(); { var chumonButtons = window.State.GetAllItems().OfType<ChumonButton>(); CollectionAssert.AreEqual(new [] { "d1_chumon2", "chumon1", "d1_chumon1", }, chumonButtons.Select(x => x.Chumon.Id).ToArray()); } { var chumonButtons = window.State.GetAllItems().OfType<ChumonButton>(); window.State.CurrentItem = chumonButtons.Skip(2).First(); Assert.IsInstanceOf<ChumonButton>(window.State.CurrentItem); Assert.AreEqual("d1_chumon1", ((ChumonButton)window.State.CurrentItem).Chumon.Id); } var currentItemInfo = window.State.SaveCurrentItem(); Assert.IsInstanceOf<ChumonButton>(currentItemInfo.Item); Assert.AreEqual("d1_chumon1", currentItemInfo.Item.Name); window.State.OnAction0(); Assert.IsInstanceOf<ClickDeKaishiState>(window.State); window.State.OnAction3(); Assert.IsInstanceOf<TutorState>(window.State); { var chumonButtons = window.State.GetAllItems().OfType<ChumonButton>(); CollectionAssert.AreEqual(new [] { "d1_chumon2", "chumon1", "d1_chumon1", }, chumonButtons.Select(x => x.Chumon.Id).ToArray()); CollectionAssert.AreEqual(new [] { "d1_chumon2", "chumon1", "d1_chumon1", }, chumonButtons.Select(x => x.Name)); } Assert.IsInstanceOf<ChumonButton>(window.State.CurrentItem); Assert.AreEqual("d1_chumon1", ((ChumonButton)window.State.CurrentItem).Chumon.Id); } }
public void 試験順ボタンのテスト() { using (var test = new EPuzzleTestManager()) { test.AddFile(@"mondai\mondai.xml", @"<?xml version=""1.0"" encoding=""utf-8""?> <mondai-document id=""doc1"" title=""DocumentB""> <daimon id=""d1"" title=""基礎I""> <chumon id=""c1"" title=""This is a pen.""> <shomon id=""s1""> <mondaibun>[英訳] これはボールです。</mondaibun> <seikai>This is a ball.</seikai> <word>This is</word> <word>a ball.</word> </shomon> </chumon> <chumon id=""c2"" title=""This is a pen.""> <shomon id=""s2""> <mondaibun>[英訳] これはボールです。</mondaibun> <seikai>This is a ball.</seikai> <word>This is</word> <word>a ball.</word> </shomon> </chumon> <chumon id=""c3"" title=""This is a pen.""> <shomon id=""s3""> <mondaibun>[英訳] これはボールです。</mondaibun> <seikai>This is a ball.</seikai> <word>This is</word> <word>a ball.</word> </shomon> </chumon> </daimon> </mondai-document>"); test.Initialize(); var window = test.Window; var userInfo = window.EPuzzleData.CurrentUserInfo; var mondaiDocuments = window.EPuzzleData.MondaiDocuments; var mondaiDocument = mondaiDocuments.First(); userInfo.UseNewMethodThatGetsChumonsThatYouHaveDoneToday = true; userInfo.DoesNotShowChumonsYouHaveNeverDone = false; userInfo.TimeToChangeDay = new TimeSpan(3, 0, 0); userInfo.HideChumonsYouHaveGotGradeAToday = false; userInfo.Difficulty = Difficulty.Normal; userInfo.GradeProcessor = new TestGradeProcessor(); Assert.IsInstanceOf<GradeProcessorB>(userInfo.GradeProcessor); // 期間における復習猶予期間の最大値を書き換える ((GradeProcessorB)userInfo.GradeProcessor).期間における復習猶予期間の最大値 = new [] { new Pair<TimeSpan, TimeSpan>(TimeSpan.FromHours(12d), TimeSpan.FromHours(12d)), }; var tutor = new EPuzzleTutor(userInfo, window.EPuzzleData.MondaiDocuments, TimeSpan.FromHours(12d), 30); var tutorState = new TutorState(window, tutor); var t0 = new DateTime(2013, 9, 5, 0, 0, 0); // UTC var t1 = t0 + TimeSpan.FromMinutes(10d); var t2 = t1 + TimeSpan.FromMinutes(10d); EPuzzleTime.Now = t2 + TimeSpan.FromDays(1d); window.State = tutorState; Assert.IsInstanceOf<TutorState>(window.State); { var chumonButtons = window.State.GetAllItems().OfType<ChumonButton>(); CollectionAssert.AreEqual(new [] { "c1", }, chumonButtons.Select(x => x.Chumon.Id).ToArray()); } // byDateYouDidThemButton // byGracePriodButton // byGradeButton userInfo.MondaiResults.AddNew("c1", t2, TimeSpan.FromSeconds(1d)); userInfo.MondaiResults.AddNew("c2", t1, TimeSpan.FromSeconds(1.1d)); userInfo.MondaiResults.AddNew("c3", t0, TimeSpan.FromSeconds(1.2d)); var c1 = (Chumon)mondaiDocument.GetItem("c1"); var c2 = (Chumon)mondaiDocument.GetItem("c2"); var c3 = (Chumon)mondaiDocument.GetItem("c3"); tutorState.Refresh(); Assert.AreEqual(TutorStateSortType.GracePriod, TestUtility.GetValue(tutorState, "_sortType")); Assert.AreEqual(TimeSpan.FromDays(2d), c1.復習までの猶予期間を取得(userInfo)); Assert.AreEqual(TimeSpan.FromDays(1d), c2.復習までの猶予期間を取得(userInfo)); Assert.AreEqual(TimeSpan.FromDays(3d), c3.復習までの猶予期間を取得(userInfo)); { var chumonButtons = window.State.GetAllItems().OfType<ChumonButton>(); CollectionAssert.AreEqual(new [] { "c2", "c1", "c3", }, chumonButtons.Select(x => x.Chumon.Id).ToArray()); } { var button = window.State.GetAllItems().FirstOrDefault(x => "byGracePriodButton" == x.Name); Assert.NotNull(button); Assert.AreEqual("猶予順", button.Text); Assert.False(button.IsClickable); Assert.True(button.IsVisible); } { var button = window.State.GetAllItems().FirstOrDefault(x => "byDateYouDidThemButton" == x.Name); Assert.NotNull(button); Assert.AreEqual("試験順", button.Text); Assert.True(button.IsClickable); Assert.True(button.IsVisible); } { var button = window.State.GetAllItems().FirstOrDefault(x => "byGradeButton" == x.Name); Assert.NotNull(button); Assert.AreEqual("成績順", button.Text); Assert.True(button.IsClickable); Assert.True(button.IsVisible); // 成績順ボタンを押下 window.State.CurrentItem = button; window.State.OnAction0(); } Assert.AreEqual(TutorStateSortType.Grade, TestUtility.GetValue(tutorState, "_sortType")); { var chumonButtons = window.State.GetAllItems().OfType<ChumonButton>(); CollectionAssert.AreEqual(new [] { "c3", "c2", "c1", }, chumonButtons.Select(x => x.Chumon.Id).ToArray()); } { var button = window.State.GetAllItems().FirstOrDefault(x => "byGracePriodButton" == x.Name); Assert.NotNull(button); Assert.AreEqual("猶予順", button.Text); Assert.True(button.IsClickable); Assert.True(button.IsVisible); } { var button = window.State.GetAllItems().FirstOrDefault(x => "byGradeButton" == x.Name); Assert.NotNull(button); Assert.AreEqual("成績順", button.Text); Assert.False(button.IsClickable); Assert.True(button.IsVisible); } { var button = window.State.GetAllItems().FirstOrDefault(x => "byDateYouDidThemButton" == x.Name); Assert.NotNull(button); Assert.AreEqual("試験順", button.Text); Assert.True(button.IsClickable); Assert.True(button.IsVisible); // 試験順ボタンを押下 window.State.CurrentItem = button; window.State.OnAction0(); } { var chumonButtons = window.State.GetAllItems().OfType<ChumonButton>(); CollectionAssert.AreEqual(new [] { "c1", "c2", "c3", }, chumonButtons.Select(x => x.Chumon.Id).ToArray()); } Assert.AreEqual(TutorStateSortType.DateYouDidThem, TestUtility.GetValue(tutorState, "_sortType")); { var button = window.State.GetAllItems().FirstOrDefault(x => "byGradeButton" == x.Name); Assert.NotNull(button); Assert.AreEqual("成績順", button.Text); Assert.True(button.IsClickable); Assert.True(button.IsVisible); } { var button = window.State.GetAllItems().FirstOrDefault(x => "byDateYouDidThemButton" == x.Name); Assert.NotNull(button); Assert.AreEqual("試験順", button.Text); Assert.False(button.IsClickable); Assert.True(button.IsVisible); } { var button = window.State.GetAllItems().FirstOrDefault(x => "byGracePriodButton" == x.Name); Assert.NotNull(button); Assert.AreEqual("猶予順", button.Text); Assert.True(button.IsClickable); Assert.True(button.IsVisible); // 復習猶予期間順ボタンを押下 window.State.CurrentItem = button; window.State.OnAction0(); } Assert.AreEqual(TutorStateSortType.GracePriod, TestUtility.GetValue(tutorState, "_sortType")); { var chumonButtons = window.State.GetAllItems().OfType<ChumonButton>(); CollectionAssert.AreEqual(new [] { "c2", "c1", "c3", }, chumonButtons.Select(x => x.Chumon.Id).ToArray()); } { var button = window.State.GetAllItems().FirstOrDefault(x => "byGracePriodButton" == x.Name); Assert.NotNull(button); Assert.AreEqual("猶予順", button.Text); Assert.False(button.IsClickable); Assert.True(button.IsVisible); } { var button = window.State.GetAllItems().FirstOrDefault(x => "byDateYouDidThemButton" == x.Name); Assert.NotNull(button); Assert.AreEqual("試験順", button.Text); Assert.True(button.IsClickable); Assert.True(button.IsVisible); } { var button = window.State.GetAllItems().FirstOrDefault(x => "byGradeButton" == x.Name); Assert.NotNull(button); Assert.AreEqual("成績順", button.Text); Assert.True(button.IsClickable); Assert.True(button.IsVisible); } // 各ボタンで、並び順が保存されているかどうかテストする。 { var scrollHelper = TestUtility.GetValue(tutorState, "_helpWithScroll"); scrollHelper.NumberOfItemsToBeShown = 2; tutorState.Refresh(); Assert.AreEqual(0, TestUtility.GetValue(scrollHelper, "_index")); } Assert.AreEqual(TutorStateSortType.GracePriod, TestUtility.GetValue(tutorState, "_sortType")); { var chumonButtons = window.State.GetAllItems().OfType<ChumonButton>(); CollectionAssert.AreEqual(new [] { "c2", "c1", }, chumonButtons.Select(x => x.Chumon.Id).ToArray()); } { var button = window.State.GetAllItems().FirstOrDefault(x => "byGradeButton" == x.Name); Assert.NotNull(button); Assert.AreEqual("成績順", button.Text); Assert.True(button.IsClickable); Assert.True(button.IsVisible); // 成績順ボタンを押下 window.State.CurrentItem = button; window.State.OnAction0(); } // 成績順ボタン Assert.AreEqual(TutorStateSortType.Grade, TestUtility.GetValue(tutorState, "_sortType")); { var scrollHelper = TestUtility.GetValue(tutorState, "_helpWithScroll"); scrollHelper.NumberOfItemsToBeShown = 2; tutorState.Refresh(); Assert.AreEqual(0, TestUtility.GetValue(scrollHelper, "_index")); } { var downButton = window.State.GetAllItems().FirstOrDefault(x => "downButton" == x.Name); // 下スクロールボタンを押下 window.State.CurrentItem = downButton; window.State.OnAction0(); } { var chumonButtons = window.State.GetAllItems().OfType<ChumonButton>(); CollectionAssert.AreEqual(new [] { "c2", "c1", }, chumonButtons.Select(x => x.Chumon.Id).ToArray()); } { var scrollHelper = TestUtility.GetValue(tutorState, "_helpWithScroll"); scrollHelper.NumberOfItemsToBeShown = 2; tutorState.Refresh(); Assert.AreSame(scrollHelper, TestUtility.GetValue(tutorState, "_gradeScrollHelper")); Assert.AreEqual(TutorStateSortType.Grade, TestUtility.GetValue(tutorState, "_sortType")); Assert.AreEqual(1, TestUtility.GetValue(scrollHelper, "_index")); } { var button = window.State.GetAllItems().FirstOrDefault(x => "byGracePriodButton" == x.Name); Assert.NotNull(button); Assert.AreEqual("猶予順", button.Text); Assert.True(button.IsClickable); Assert.True(button.IsVisible); // 復習猶予期間順ボタンを押下 window.State.CurrentItem = button; window.State.OnAction0(); } // 復習猶予期間順ボタン Assert.AreEqual(TutorStateSortType.GracePriod, TestUtility.GetValue(tutorState, "_sortType")); { var scrollHelper = TestUtility.GetValue(tutorState, "_helpWithScroll"); scrollHelper.NumberOfItemsToBeShown = 2; tutorState.Refresh(); // 成績順ボタンを押下時に下スクロールしても、このボタンでスクロール位置が保存されているかどうか確認 Assert.AreEqual(0, TestUtility.GetValue(scrollHelper, "_index")); } } }