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); } }