public void DrawingObjectの位置交換() { var window = new EPuzzleWindow(); var state = new WindowState(window); window.State = state; var container0 = new DrawingObjectContainer() { Position = DrawingObjectPosition.Relative, MarginLeft = 1f, MarginTop = 10f, Height = 100, }; state.Items.Add(container0); var container1 = new DrawingObjectContainer() { Position = DrawingObjectPosition.Relative, MarginLeft = 1f, MarginTop = 10f, Height = 100, }; state.Items.Add(container1); var a = new EigoTestLabelItem() { Position = DrawingObjectPosition.Absolute, Width = 10, Height = 100, Name = "a", }; container0.Items.Add(a); var b = new EigoTestLabelItem() { Position = DrawingObjectPosition.Absolute, Left = 0, Top = 0, Width = 20, Height = 100, Name = "b", }; container1.Items.Add(b); var c = new EigoTestLabelItem() { Position = DrawingObjectPosition.Absolute, Left = 21, Top = 0, Width = 10, Height = 100, Name = "c", }; container1.Items.Add(c); // container0 Assert.AreEqual(1, container0.BorderLeft); Assert.AreEqual(10, container0.BorderTop); Assert.AreEqual(100, container0.Height); CollectionAssert.AreEqual(new [] { a, }, container0.Items); // container1 Assert.AreEqual(1, container1.BorderLeft); Assert.AreEqual(120, container1.BorderTop); Assert.AreEqual(100, container1.Height); CollectionAssert.AreEqual(new [] { b, c, }, container1.Items); // a Assert.AreEqual("a", a.Name); Assert.AreEqual(1, a.OuterLeft); Assert.AreEqual(10, a.OuterTop); Assert.AreEqual(11, a.OuterRight); Assert.AreEqual(110, a.OuterBottom); // b Assert.AreEqual("b", b.Name); Assert.AreEqual(1, b.OuterLeft); Assert.AreEqual(120, b.OuterTop); Assert.AreEqual(21, b.OuterRight); Assert.AreEqual(220, b.OuterBottom); // c Assert.AreEqual("c", c.Name); Assert.AreEqual(22, c.OuterLeft); Assert.AreEqual(120, c.OuterTop); Assert.AreEqual(32, c.OuterRight); Assert.AreEqual(220, c.OuterBottom); WindowState.NowObject = new TestNowObject(); WindowState.NowObject.Now = DateTime.MinValue; var idouJikan = TimeSpan.FromSeconds(1d); state.場所の入れ換え(a, c, idouJikan); var aa = state.Items.Single(x => "a" == x.Name); var cc = state.Items.Single(x => "c" == x.Name); Assert.False(a.IsClickable); Assert.False(a.IsVisible); Assert.False(c.IsClickable); Assert.False(c.IsVisible); Assert.False(aa.IsClickable); Assert.True(aa.IsVisible); Assert.AreEqual(DrawingObjectPosition.Absolute, aa.Position); Assert.AreSame(state.DrawingObjectRoot, aa.Parent); Assert.AreEqual(a.OuterLeft, aa.OuterLeft); Assert.AreEqual(a.OuterTop, aa.OuterTop); Assert.AreEqual(a.OuterWidth, aa.OuterWidth); Assert.False(cc.IsClickable); Assert.True(cc.IsVisible); Assert.AreEqual(DrawingObjectPosition.Absolute, cc.Position); Assert.AreSame(state.DrawingObjectRoot, cc.Parent); Assert.AreEqual(c.OuterLeft, cc.OuterLeft); Assert.AreEqual(c.OuterTop, cc.OuterTop); Assert.AreEqual(c.OuterWidth, cc.OuterWidth); // 移動中 WindowState.NowObject.Now += TimeSpan.FromTicks((int)Math.Round(idouJikan.Ticks * 0.5f)); window.Tick(); Assert.AreEqual(c.OuterLeft + (a.OuterLeft - c.OuterLeft) * 0.5f, cc.OuterLeft, 0.1f); Assert.AreEqual(c.OuterTop + (a.OuterTop - c.OuterTop) * 0.5f, cc.OuterTop, 0.1f); Assert.AreEqual(c.Width + (a.Width - c.Width) * 0.5f, c.Width, 0.1f); Assert.AreEqual(a.OuterLeft + (c.OuterLeft - a.OuterLeft) * 0.5f, aa.OuterLeft, 0.1f); Assert.AreEqual(a.OuterTop + (c.OuterTop - a.OuterTop) * 0.5f, aa.OuterTop, 0.1f); Assert.AreEqual(a.Width + (c.Width - a.Width) * 0.5f, a.Width, 0.1f); // 場所の入れ換え完了 WindowState.NowObject.Now += idouJikan; window.Tick(); CollectionAssert.DoesNotContain(state.GetAllItems(), a); CollectionAssert.DoesNotContain(state.GetAllItems(), c); Assert.Null(a.Parent); Assert.Null(c.Parent); CollectionAssert.AreEqual(new [] { cc, }, container0.Items); CollectionAssert.AreEqual(new [] { b, aa }, container1.Items); Assert.True(aa.IsClickable); Assert.True(aa.IsVisible); Assert.True(cc.IsClickable); Assert.True(cc.IsVisible); // cc Assert.AreEqual("c", cc.Name); Assert.AreEqual(1, cc.OuterLeft); Assert.AreEqual(10, cc.OuterTop); Assert.AreEqual(11, cc.OuterRight); Assert.AreEqual(110, cc.OuterBottom); // aa Assert.AreEqual("a", aa.Name); Assert.AreEqual(22, aa.OuterLeft); Assert.AreEqual(120, aa.OuterTop); Assert.AreEqual(32, aa.OuterRight); Assert.AreEqual(220, aa.OuterBottom); }
public void AnkimonStateへの遷移() { EPuzzleWindow window = null; using (var tempDirectory = new TempDirectory(true)) { tempDirectory.AddFile(@"mondai\MondaiDocument.xml", TestResources.Mondai03); tempDirectory.AddFile(@"help\HelpDocument.xml", TestResources.HelpDocumentXml); var ePuzzleData = EPuzzleData.Create(tempDirectory.Name); var data = ePuzzleData; var userInfo = ePuzzleData.CurrentUserInfo; WindowState.NowObject = new TestNowObject(); var t0 = new DateTime(2013, 8, 22, 0, 0, 0); // UTC WindowState.NowObject.Now = t0; window = new EPuzzleWindow(ePuzzleData); var a = new Fish.eigotest.TestState(window); a.MoveToStartGameState(); Assert.IsInstanceOf<FadeoutState>(window.State); EPuzzleTime.Now += TimeSpan.FromSeconds(5d); window.Tick(); Assert.IsInstanceOf<FadeinState>(window.State); EPuzzleTime.Now += TimeSpan.FromSeconds(5d); window.Tick(); userInfo.SetLastDaimonInfo(new LastDaimonInfo(data.CurrentMondaiDocument.Id, "daimon3", t0)); userInfo.MondaiResults.AddNew("3-1", t0, TimeSpan.FromSeconds(1d)); userInfo.MondaiResults.AddNew("3-2", t0, TimeSpan.FromSeconds(1d)); // ゲームスタート画面 Assert.IsInstanceOf<StartGameState>(window.State); { var item = window.State.Items.First(x => x.Name == "StartGameButton"); item.OnClick(new MouseEventInfo(MouseButtons.Left)); } WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); Assert.IsInstanceOf<MondaiDocumentMenuState>(window.State); { var button = window.State.GetAllItems().Where(x => x.Tag is MondaiDocument).First(); window.State.CurrentItem = button; window.State.OnAction0(); } WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); var daimonState = (DaimonState)window.State; Assert.IsInstanceOf<DaimonState>(daimonState); Assert.AreEqual("daimon3", daimonState.Daimon.Id); var chumonButton = daimonState.GetAllItems().OfType<ChumonButton>().Single(x => "3-3" == x.Chumon.Id); window.State.CurrentItem = chumonButton; window.State.OnAction0(); window.Tick(); Assert.IsInstanceOf<ClickDeKaishiState>(window.State); window.State.OnAction0(); window.Tick(); Assert.IsInstanceOf<AnkimonState>(window.State); var ankimonState = (AnkimonState)window.State; var ankimonRowContainer0 = ankimonState.GetAllItems().OfType<AnkimonRowContainer>().First(); var ankimonRowContainer1 = ankimonState.GetAllItems().OfType<AnkimonRowContainer>().ElementAt(1); Assert.False(ankimonState.正解判定()); // Action3でエスケープステートに window.State.OnAction3(); Assert.IsInstanceOf<PauseState>(window.State); window.State.OnAction3(); Assert.IsInstanceOf<AnkimonState>(window.State); var wordCards = ankimonRowContainer0.GetAllItems().Concat(ankimonRowContainer1.GetAllItems()). Where(x => x is WordCard).ToArray(); ankimonRowContainer0.WordCardContainer.Items.Clear(); ankimonRowContainer1.WordCardContainer.Items.Clear(); Assert.False(ankimonState.正解判定()); ankimonRowContainer0.WordCardContainer.Items.Add(wordCards.First(x => x.Text == "swim")); ankimonRowContainer0.WordCardContainer.Items.Add(wordCards.First(x => x.Text == "swam")); ankimonRowContainer0.WordCardContainer.Items.Add(wordCards.First(x => x.Text == "swum")); ankimonRowContainer1.WordCardContainer.Items.Add(wordCards.First(x => x.Text == "run")); ankimonRowContainer1.WordCardContainer.Items.Add(wordCards.First(x => x.Text == "ran")); ankimonRowContainer1.WordCardContainer.Items.Add(wordCards.Where(x => x.Text == "run").ElementAt(1)); Assert.True(ankimonState.正解判定()); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); Assert.IsInstanceOf<ShomonState>(window.State); window.Tick(); var shomonState = (ShomonState)window.State; var wordCard0 = shomonState.GetAllItems().First(x => "This is" == x.Text); Assert.NotNull(wordCard0); var wordCard1 = shomonState.GetAllItems().First(x => "a ball." == x.Text); Assert.NotNull(wordCard1); window.State.CurrentItem = wordCard0; window.State.OnAction0(); window.Tick(); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); window.State.CurrentItem = wordCard1; window.State.OnAction0(); window.Tick(); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); window.Tick(); var kaitouBox = (CardBox)shomonState.GetAllItems().First(x => "kaitouBox" == x.Name); Assert.AreEqual("This is a ball.", MondaiWord.Join(kaitouBox.GetAllItems().OfType<WordCard>().Select(x => x.MondaiWord).ToArray())); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); Assert.IsInstanceOf<AnkimonState>(window.State); } }
public void CurrentItemTest() { var window = new EPuzzleWindow(); var testState1 = new Fish.eigotest.TestState(window); Assert.Null(testState1.CurrentItem); var button = new EigoTestButtonItem() { Left = 100, Top = 100, Width = 100, Height = 100, }; testState1.Items.Add(button); window.State = testState1; Assert.AreSame(button, testState1.CurrentItem); var label = new EigoTestLabelItem(); testState1.Items.Add(label); Assert.Throws<ArgumentException>(() => { testState1.CurrentItem = label; }); var button3 = new EigoTestButtonItem() { Left = 300, Top = 300, Width = 10, Height = 10, }; window.State.Items.Add(button3); Assert.AreSame(button, testState1.CurrentItem); window.MouseMove(button3.BorderLeft, button3.BorderTop); window.Tick(); Assert.AreSame(button3, testState1.CurrentItem); }
public void Test2() { MondaiDocument doc = null; using (var tempFile = new TempFile(TestResources.Mondai03)) { doc = MondaiDocument.Load(tempFile.FileName); } var window = new EPuzzleWindow(); var ankimon = (Ankimon)doc.GetAllItems().First(x => "3-3-1" == x.Id); CollectionAssert.AreEqual(new [] { "swim", "swam", "swum", "run", "ran", "run" }, ankimon.GetMondaiWords().Select(x => x.Text)); var ankimonState = new AnkimonState(window, ankimon); Assert.AreSame(ankimon, ankimonState.Ankimon); WindowState.NowObject = new TestNowObject(); var t0 = new DateTime(2013, 8, 22, 0, 0, 0); // UTC WindowState.NowObject.Now = t0; window.State = ankimonState; var xxx = window.State.GetAllItems().OfType<WordCard>().ToArray(); var a = xxx[0]; var b = xxx[3]; var parentOfA = a.Parent; var parentOfB = b.Parent; Assert.AreSame(a.Parent, xxx[1].Parent); Assert.AreNotSame(parentOfA, parentOfB); Assert.AreSame(window.State.CurrentItem, a); /* WindowState.NowObject.Now += TimeSpan.FromSeconds(0.1d); window.Tick(); */ // WordCardにAction0で選択 window.State.OnAction0(); Assert.True(a.IsSelected); Assert.AreSame(a, window.State.GetAllItems().Single(x => x.IsSelected)); // WordCardにAction0で選択、2回目 window.State.OnAction0(); Assert.True(a.IsSelected); Assert.AreSame(a, window.State.GetAllItems().Single(x => x.IsSelected)); // Action1で選択解除 window.State.OnAction1(); Assert.False(window.State.GetAllItems().Any(x => x.IsSelected)); // WordCardにAction0で選択 window.State.OnAction0(); Assert.True(a.IsSelected); Assert.AreSame(a, window.State.GetAllItems().Single(x => x.IsSelected)); // カード交換開始 window.State.CurrentItem = b; if ("run" == b.Text) { Assert.Pass("'run', 'run'は交換しないのでテストはここで終了"); } window.State.OnAction0(); Assert.False(window.State.GetAllItems().OfType<WordCard>().Where(x => x.IsSelected).Any()); // カード交換完了 WindowState.NowObject.Now += TimeSpan.FromSeconds(1d); window.Tick(); // カード交換で正解した場合は、次へ遷移してしまうのでここでエラー var xxxx = window.State.GetAllItems().OfType<WordCard>().ToArray(); Assert.False(xxxx.Any(x => x.IsSelected)); Assert.AreEqual(6, xxxx.Count()); var aa = xxxx[0]; var bb = xxxx[3]; Assert.AreEqual(a.Text, bb.Text); Assert.AreEqual(b.Text, aa.Text); // マウスクリックテスト window.MouseMove(aa.BorderLeft, aa.BorderTop); window.Tick(); Assert.AreSame(aa, window.State.CurrentItem); window.MouseUp(aa.BorderLeft, aa.BorderTop, MouseButtons.Left); Assert.True(aa.IsSelected); // 右クリックで選択を全解除 window.State.CurrentItem = bb; window.MouseUp(0f, 0f, MouseButtons.Right); Assert.False(window.State.GetAllItems().Any(x => x.IsSelected)); }
public void 状態遷移テスト正常ケース() { using (var tempDirectory = new TempDirectory(true)) { tempDirectory.AddFile(@"mondai\MondaiDocument.xml", TestResources.Mondai02); tempDirectory.AddFile(@"help\HelpDocument.xml", TestResources.HelpDocumentXml); var ePuzzleData = EPuzzleData.Create(tempDirectory.Name); var userInfo = ePuzzleData.CurrentUserInfo; WindowState.NowObject = new TestNowObject(); var t0 = new DateTime(2013, 8, 22, 0, 0, 0); // UTC EPuzzleTime.Now = t0; var window = new EPuzzleWindow(ePuzzleData); window.State = WindowState.Fi(new StartGameState(window), EPuzzleConstants.画面切替時間); Assert.IsInstanceOf<FadeinState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); // ゲームスタート画面 Assert.IsInstanceOf<StartGameState>(window.State); { var item = window.State.Items.First(x => x.Name == "StartGameButton"); item.OnClick(new MouseEventInfo(MouseButtons.Left)); } Assert.IsInstanceOf<FadeoutState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); Assert.IsInstanceOf<FadeinState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); Assert.IsInstanceOf<MondaiDocumentMenuState>(window.State); { var button = window.State.GetAllItems().Where(x => x.Tag is MondaiDocument).First(); window.State.CurrentItem = button; window.State.OnAction0(); } WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); Assert.IsInstanceOf<DaimonState>(window.State); Assert.AreEqual("基礎I", ((DaimonState)window.State).Daimon.Name); // 最初のボタンがCurrentItemになっているべき Assert.AreSame(window.State.GetAllItems().OfType<ChumonButton>().First(), window.State.CurrentItem); // LastDaimonIdが保存される { var daimonState = (DaimonState)window.State; Assert.AreEqual(daimonState.Daimon.Id, userInfo.GetLastDaimonId(daimonState.Daimon.Parent.Id)); } // 結果の保存の確認 { var daimonState = (DaimonState)window.State; var data2 = EPuzzleData.Create(tempDirectory.DirectoryName); Assert.AreEqual(((DaimonState)window.State).Daimon.Id, data2.CurrentUserInfo.GetLastDaimonId(daimonState.Daimon.Parent.Id)); } { { var daimonState = (DaimonState)window.State; var daimon = daimonState.Daimon; var c1 = (ChumonButton)daimonState.GetAllItems().Where(x => x is ChumonButton).First(); var c2 = (ChumonButton)daimonState.GetAllItems().Where(x => x is ChumonButton).Skip(1).First(); var c3 = (ChumonButton)daimonState.GetAllItems().Where(x => x is ChumonButton).Skip(2).FirstOrDefault(); var nextButton = daimonState.GetAllItems().OfType<NextButton>().First(); Assert.AreNotSame(c1, c2); Assert.Null(c3); Assert.AreEqual("This is a pen.", c1.Text); Assert.AreEqual("I'm a policeman.", c2.Text); Assert.False(c1.Chumon.IsLocked(userInfo)); Assert.True(c2.Chumon.IsLocked(userInfo)); Assert.True(c1.IsVisible); Assert.True(c1.IsClickable); Assert.True(c2.IsVisible); Assert.False(c2.IsClickable); Assert.False(nextButton.IsVisible); Assert.False(nextButton.IsClickable); // マウス座標とCurrentItemのボタン座標が一致していなければ押したことにはならない window.MouseUp(0f, 0f, MouseButtons.Left); Assert.IsInstanceOf<DaimonState>(window.State); // c1 window.MouseUp(c1.BorderLeft, c1.BorderTop, MouseButtons.Left); window.Tick(); } Assert.IsInstanceOf<ClickDeKaishiState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(1d); // window.MouseUp(100f, 100f, MouseButtons.Left); // window.KeyDown(Keys.NumPad5); window.State.OnAction0(); window.Tick(); Assert.IsInstanceOf<ShomonState>(window.State); { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "This is"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "a notebook"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "."); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } WindowState.NowObject.Now += TimeSpan.FromSeconds(1d); window.Tick(); window.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); Assert.AreEqual("[英訳] これはボールです。", ((ShomonState)window.State).Shomon.Mondaibun); { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "This"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "is"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "a"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "ball"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "."); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } WindowState.NowObject.Now += TimeSpan.FromSeconds(1d); window.Tick(); window.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); /* window.MouseUp(0f, 0f, MouseButtons.Left); Assert.IsInstanceOf<ChumonResultState>(window.State); */ WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); window.MouseUp(0f, 0f, MouseButtons.Left); 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(); // CurrentItemは次の問題のボタンになる Assert.IsInstanceOf<DaimonState>(window.State); Assert.IsInstanceOf<ChumonButton>(window.State.CurrentItem); Assert.AreEqual("d1_chumon2", ((ChumonButton)window.State.CurrentItem).Chumon.Id); { var daimonState = (DaimonState)window.State; var daimon = daimonState.Daimon; var c1 = (ChumonButton)daimonState.GetAllItems().Where(x => x is ChumonButton).First(); var c2 = (ChumonButton)daimonState.GetAllItems().Where(x => x is ChumonButton).Skip(1).First(); var c3 = (ChumonButton)daimonState.GetAllItems().Where(x => x is ChumonButton).Skip(2).FirstOrDefault(); var nextButton = daimonState.GetAllItems().First(x => x is NextButton); Assert.False(c1.Chumon.IsLocked(userInfo)); Assert.False(c2.Chumon.IsLocked(userInfo)); Assert.True(c1.IsVisible); Assert.True(c1.IsClickable); Assert.True(c2.IsVisible); Assert.True(c2.IsClickable); Assert.False(nextButton.IsVisible); Assert.False(nextButton.IsClickable); // c2 window.MouseMove(c2.BorderLeft, c2.BorderTop); window.Tick(); window.MouseUp(c2.BorderLeft, c2.BorderTop, MouseButtons.Left); window.Tick(); } Assert.IsInstanceOf<ClickDeKaishiState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(1d); window.Tick(); window.MouseUp(100f, 100f, MouseButtons.Left); { Assert.IsInstanceOf<ShomonState>(window.State); Assert.AreEqual("[英訳] 私は警官です。", ((ShomonState)window.State).Shomon.Mondaibun); { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "I'm"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "a"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "policeman"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "."); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } WindowState.NowObject.Now += TimeSpan.FromSeconds(1d); window.Tick(); window.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); Assert.AreEqual("[英訳] あなたは看護婦ではありません。", ((ShomonState)window.State).Shomon.Mondaibun); { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "You"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "are"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "not"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "a"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "nurse"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "."); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } WindowState.NowObject.Now += TimeSpan.FromSeconds(1d); window.Tick(); window.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); Assert.AreEqual("[英訳] ジャックは学生です。", ((ShomonState)window.State).Shomon.Mondaibun); { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "Jack"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "is"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "a"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "student"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "."); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } WindowState.NowObject.Now += TimeSpan.FromSeconds(1d); window.Tick(); window.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); // window.MouseUp(0f, 0f, MouseButtons.Left); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.MouseUp(0f, 0f, MouseButtons.Left); window.Tick(); } Assert.IsInstanceOf<FadeoutState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); Assert.IsInstanceOf<FadeinState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); Assert.IsInstanceOf<DaimonState>(window.State); Assert.AreEqual("基礎II", ((DaimonState)window.State).Daimon.Name); { var item = window.State.Items.First(x => x.GetType() == typeof(PreviousButton)); window.MouseUp(item.BorderLeft, item.BorderTop, MouseButtons.Left); // item.OnClick(new MouseEventInfo(MouseButtons.Left)); } Assert.IsInstanceOf<FadeoutState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); Assert.IsInstanceOf<FadeinState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); { Assert.IsInstanceOf<DaimonState>(window.State); var daimonState = (DaimonState)window.State; var daimon = daimonState.Daimon; /* foreach (var item in daimon.Items) { item.GradeProcessor = GradeProcessorA.Instance; } */ userInfo.GradeProcessor = GradeProcessorA.Instance; Assert.AreEqual("基礎I", daimon.Name); { var mondaiResults = userInfo.MondaiResults.GetItems("d1_chumon1").ToArray(); Assert.AreEqual(1, mondaiResults.Count()); Assert.AreEqual(TimeSpan.FromSeconds(2d), mondaiResults[0].所要時間); Assert.AreEqual("S", daimon.Items[0].GetGradeString(userInfo)); } { var mondaiResults = userInfo.MondaiResults.GetItems("d1_chumon2").ToArray(); Assert.AreEqual(1, mondaiResults.Count()); Assert.AreEqual(TimeSpan.FromSeconds(3d), mondaiResults[0].所要時間); Assert.AreEqual("S", daimon.Items[1].GetGradeString(userInfo)); } Assert.False(daimon.Items[0].IsLocked(userInfo)); Assert.False(daimon.Items[1].IsLocked(userInfo)); Assert.IsInstanceOf<ChumonButton>(daimonState.CurrentItem); Assert.AreEqual("d1_chumon1", ((ChumonButton)daimonState.CurrentItem).Chumon.Id); // var kirokuBox = (KirokuBox)daimonState.GetAllItems().First(x => x is KirokuBox); // Assert.AreEqual(1, kirokuBox.GetPoints().Count()); } { var item = window.State.Items.First(x => x.Name == "タイトル画面に戻る"); item.OnClick(new MouseEventInfo(MouseButtons.Left)); } Assert.IsInstanceOf<FadeoutState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); Assert.IsInstanceOf<FadeinState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); Assert.IsInstanceOf<StartGameState>(window.State); } }
public void Chumon遷移テスト() { EPuzzleWindow window = null; using (var tempDirectory = new TempDirectory(true)) { tempDirectory.AddFile(@"mondai\MondaiDocument.xml", TestResources.Mondai02); tempDirectory.AddFile(@"help\HelpDocument.xml", TestResources.HelpDocumentXml); var ePuzzleData = EPuzzleData.Create(tempDirectory.Name); WindowState.NowObject = new TestNowObject(); var t0 = new DateTime(2013, 8, 22, 0, 0, 0); // UTC EPuzzleTime.Now = t0; window = new EPuzzleWindow(ePuzzleData); window.State = WindowState.Fi(new StartGameState(window), EPuzzleConstants.画面切替時間); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); // ゲームスタート画面 Assert.IsInstanceOf<StartGameState>(window.State); { var item = window.State.Items.First(x => x.Name == "StartGameButton"); item.OnClick(new MouseEventInfo(MouseButtons.Left)); } WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); Assert.IsInstanceOf<MondaiDocumentMenuState>(window.State); { var button = window.State.GetAllItems().Where(x => x.Tag is MondaiDocument).First(); window.State.CurrentItem = button; window.State.OnAction0(); } WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); Assert.IsInstanceOf<DaimonState>(window.State); Assert.AreEqual("基礎I", ((DaimonState)window.State).Daimon.Name); { var item = window.State.GetAllItems().First(x => x.Text == "This is a pen."); Assert.IsInstanceOf<EigoTestButtonItem>(item); window.MouseMove(item.BorderLeft, item.BorderTop); window.Tick(); window.MouseUp(item.BorderLeft, item.BorderTop, MouseButtons.Left); } /* WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); */ Assert.IsInstanceOf<ClickDeKaishiState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); window.MouseUp(100f, 100f, MouseButtons.Left); Assert.IsInstanceOf<ShomonState>(window.State); Assert.AreEqual("[英訳] これはノートです。", ((ShomonState)window.State).Shomon.Mondaibun); var mondaiId = ((ShomonState)window.State).Shomon.Parent.Id; Assert.AreEqual("d1_chumon1", mondaiId); var startTime = WindowState.NowObject.Now; Assert.AreEqual(startTime, window.ChumonResult.StartTime); { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "This is"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "a notebook"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "."); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); window.Tick(); Assert.IsInstanceOf<FadeoutState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); Assert.IsInstanceOf<FadeinState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); Assert.IsInstanceOf<ShomonState>(window.State); Assert.AreEqual("[英訳] これはボールです。", ((ShomonState)window.State).Shomon.Mondaibun); // エスケープ画面では時間が経過しない window.State.OnAction3(); Assert.IsInstanceOf<PauseState>(window.State); WindowState.NowObject.Now += TimeSpan.FromHours(10d); window.State.OnAction3(); Assert.IsInstanceOf<ShomonState>(window.State); Assert.AreEqual("[英訳] これはボールです。", ((ShomonState)window.State).Shomon.Mondaibun); { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "This"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "is"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "a"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "ball"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "."); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); window.Tick(); Assert.IsInstanceOf<FadeoutState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); Assert.IsInstanceOf<FadeinState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); Assert.IsInstanceOf<ChumonResultState>(window.State); /* window.MouseUp(0f, 0f, MouseButtons.Left); Assert.IsInstanceOf<ChumonResultState>(window.State); */ // 結果を記録 Assert.AreEqual(1, window.EPuzzleData.CurrentUserInfo.MondaiResults.Count()); var mondaiResult = window.EPuzzleData.CurrentUserInfo.MondaiResults.First(); Assert.AreEqual(mondaiId, mondaiResult.MondaiId); var s0 = TimeSpan.FromSeconds(20d); Assert.AreEqual(s0, mondaiResult.所要時間); // 結果の保存の確認 { var data2 = EPuzzleData.Create(tempDirectory.DirectoryName); var mr = data2.CurrentUserInfo.MondaiResults.First(); Assert.AreEqual("d1_chumon1", mr.MondaiId); Assert.AreEqual(s0, mr.所要時間); } // 画面エフェクトが終了してからマウス入力を受け付ける WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.MouseUp(0f, 0f, MouseButtons.Left); Assert.IsInstanceOf<FadeoutState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); Assert.IsInstanceOf<FadeinState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); // 問題メニューに戻る Assert.IsInstanceOf<DaimonState>(window.State); Assert.AreEqual("基礎I", ((DaimonState)window.State).Daimon.Name); } }
public void D評価なら次のDaimonに遷移しない() { EPuzzleWindow window = null; using (var tempDirectory = new TempDirectory(true)) { tempDirectory.AddFile(@"mondai\MondaiDocument.xml", TestResources.Mondai02); tempDirectory.AddFile(@"help\HelpDocument.xml", TestResources.HelpDocumentXml); var ePuzzleData = EPuzzleData.Create(tempDirectory.Name); var userInfo = ePuzzleData.CurrentUserInfo; WindowState.NowObject = new TestNowObject(); var t0 = new DateTime(2013, 8, 22, 0, 0, 0); // UTC EPuzzleTime.Now = t0; window = new EPuzzleWindow(ePuzzleData); window.State = WindowState.Fi(new StartGameState(window), EPuzzleConstants.画面切替時間); userInfo.MondaiResults.AddNew("d1_chumon1", t0, TimeSpan.FromSeconds(10d)); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); // ゲームスタート画面 Assert.IsInstanceOf<StartGameState>(window.State); { var item = window.State.Items.First(x => x.Name == "StartGameButton"); item.OnClick(new MouseEventInfo(MouseButtons.Left)); } WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); Assert.IsInstanceOf<MondaiDocumentMenuState>(window.State); { var button = window.State.GetAllItems().Where(x => x.Tag is MondaiDocument).First(); window.State.CurrentItem = button; window.State.OnAction0(); } WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); Assert.IsInstanceOf<DaimonState>(window.State); Assert.AreEqual("基礎I", ((DaimonState)window.State).Daimon.Name); { var item = window.State.GetAllItems().First(x => x.Text == "I'm a policeman."); Assert.IsInstanceOf<EigoTestButtonItem>(item); window.MouseMove(item.BorderLeft, item.BorderTop); window.Tick(); window.MouseUp(item.BorderLeft, item.BorderTop, MouseButtons.Left); } Assert.IsInstanceOf<ClickDeKaishiState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(1d); window.Tick(); window.MouseUp(100f, 100f, MouseButtons.Left); { Assert.IsInstanceOf<ShomonState>(window.State); Assert.AreEqual("[英訳] 私は警官です。", ((ShomonState)window.State).Shomon.Mondaibun); { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "I'm"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "a"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "policeman"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "."); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } WindowState.NowObject.Now += TimeSpan.FromSeconds(1d); window.Tick(); window.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); Assert.AreEqual("[英訳] あなたは看護婦ではありません。", ((ShomonState)window.State).Shomon.Mondaibun); { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "You"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "are"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "not"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "a"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "nurse"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "."); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } WindowState.NowObject.Now += TimeSpan.FromSeconds(1d); window.Tick(); window.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); Assert.AreEqual("[英訳] ジャックは学生です。", ((ShomonState)window.State).Shomon.Mondaibun); { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "Jack"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "is"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "a"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "student"); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } { var wordCard = window.State.GetAllItems().First(x => x is WordCard && x.Text == "."); window.MouseUp(wordCard.BorderLeft, wordCard.BorderTop, MouseButtons.Left); } // 10時間 WindowState.NowObject.Now += TimeSpan.FromHours(10d); window.Tick(); window.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); window.MouseUp(0f, 0f, MouseButtons.Left); /* WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.MouseUp(0f, 0f, MouseButtons.Left); window.Tick();*/ Assert.IsInstanceOf<FadeoutState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); Assert.IsInstanceOf<FadeinState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); Assert.IsInstanceOf<DaimonState>(window.State); Assert.AreEqual("基礎I", ((DaimonState)window.State).Daimon.Name); Assert.AreEqual("daimon1", ((DaimonState)window.State).Daimon.Id); } }
public void Test1() { WindowState.NowObject = new TestNowObject(); WindowState.NowObject.Now = DateTime.MinValue; using (var tempDirectory = new TempDirectory(true)) { tempDirectory.AddFile(@"mondai\MondaiDocument.xml", TestResources.Mondai02); tempDirectory.AddFile(@"mondai\MondaiDocument2.xml", TestResources.Mondai03); { var data56 = EPuzzleData.Create(tempDirectory.Name); data56.Save(); } var data = EPuzzleData.Create(tempDirectory.Name); var userInfo = data.CurrentUserInfo; var window = new EPuzzleWindow(data); Assert.AreEqual("DocumentA", data.MondaiDocuments[0].Name); Assert.AreEqual("DocumentB", data.MondaiDocuments[1].Name); var mondaiDocumentMenuState = new MondaiDocumentMenuState(window, data.MondaiDocuments); window.State = mondaiDocumentMenuState; { var buttons = mondaiDocumentMenuState.GetAllItems().Where(x => x is EigoTestButtonItem && x.Tag is MondaiDocument).ToArray(); Assert.AreEqual(2, buttons.Count()); Assert.AreEqual("DocumentA", buttons[0].Text); Assert.AreSame(data.MondaiDocuments[0], buttons[0].Tag); Assert.AreEqual("DocumentB", buttons[1].Text); Assert.AreSame(data.MondaiDocuments[1], buttons[1].Tag); } var daimonA1 = (Daimon)data.MondaiDocuments[0].Items[1]; var daimonB1 = (Daimon)data.MondaiDocuments[1].Items[1]; Assert.AreEqual("daimon2", daimonA1.Id); Assert.AreSame(data.MondaiDocuments[0], daimonA1.Parent); Assert.AreEqual("daimon2", daimonB1.Id); Assert.AreSame(data.MondaiDocuments[1], daimonB1.Parent); userInfo.SetLastDaimonInfo(daimonA1); userInfo.SetLastDaimonInfo(daimonB1); // button[0] { var buttons = mondaiDocumentMenuState.GetAllItems().Where(x => x is EigoTestButtonItem && x.Tag is MondaiDocument).ToArray(); window.State.CurrentItem = buttons[0]; window.State.OnAction0(); Assert.AreSame(data.MondaiDocuments[0], window.EPuzzleData.CurrentMondaiDocument); Assert.IsInstanceOf<FadeoutState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); Assert.IsInstanceOf<FadeinState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); Assert.IsInstanceOf<DaimonState>(window.State); Assert.AreSame(daimonA1, ((DaimonState)window.State).Daimon); } // button[1] { window.State = mondaiDocumentMenuState; var buttons = mondaiDocumentMenuState.GetAllItems().Where(x => x is EigoTestButtonItem && x.Tag is MondaiDocument).ToArray(); window.State.CurrentItem = buttons[1]; window.State.OnAction0(); Assert.AreSame(data.MondaiDocuments[1], window.EPuzzleData.CurrentMondaiDocument); Assert.IsInstanceOf<FadeoutState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); Assert.IsInstanceOf<FadeinState>(window.State); WindowState.NowObject.Now += TimeSpan.FromSeconds(10d); window.Tick(); Assert.IsInstanceOf<DaimonState>(window.State); Assert.AreSame(daimonB1, ((DaimonState)window.State).Daimon); } // マウスクリックで遷移テスト { window.State = mondaiDocumentMenuState; var buttons = mondaiDocumentMenuState.GetAllItems().Where(x => x is EigoTestButtonItem && x.Tag is MondaiDocument).ToArray(); var button = buttons[0]; Assert.IsInstanceOf<MondaiDocumentMenuState>(window.State); window.State.CurrentItem = button; Assert.True(window.State.CurrentItem.Contains(button.BorderLeft, button.BorderTop)); window.MouseUp(button.BorderLeft, button.BorderTop, MouseButtons.Left); Assert.AreSame(data.MondaiDocuments[0], window.EPuzzleData.CurrentMondaiDocument); Assert.IsInstanceOf<FadeoutState>(window.State); } } }