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 test = new EPuzzleTestManager()) { test.AddFile(@"mondai\MondaiDocument.xml", TestResources.Mondai03); test.AddFile(@"help\HelpDocument.xml", TestResources.HelpDocumentXml); test.Initialize(); var window = test.Window; var ankimon = (Ankimon)window.EPuzzleData.CurrentMondaiDocument.GetItem("3-3-4"); var ankimonState = new AnkimonState(window, ankimon); window.State = ankimonState; var ankimonRowContainer = ankimonState.GetAllItems().OfType<AnkimonRowContainer>().Single(); var wordCards = ankimonRowContainer.GetAllItems().OfType<WordCard>().ToArray(); ankimonRowContainer.WordCardContainer.Items.Clear(); Assert.False(ankimonState.正解判定()); ankimonRowContainer.WordCardContainer.Items.Add(wordCards.Single(x => x.Text == "Jan")); ankimonRowContainer.WordCardContainer.Items.Add(wordCards.Single(x => x.Text == "u")); ankimonRowContainer.WordCardContainer.Items.Add(wordCards.Single(x => x.Text == "ar")); ankimonRowContainer.WordCardContainer.Items.Add(wordCards.Single(x => x.Text == "y")); Assert.True(ankimonState.正解判定()); } }
public void Test1() { 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 [] { new MondaiWord("swim"), new MondaiWord("swam"), new MondaiWord("swum"), new MondaiWord("run"), new MondaiWord("ran"), new MondaiWord("run") }, ankimon.GetMondaiWords()); var ankimonState = new AnkimonState(window, ankimon); Assert.AreSame(ankimon, ankimonState.Ankimon); var ankimonBox = ankimonState.GetAllItems().OfType<AnkimonBox>().Single(); Assert.AreEqual(2, ankimonBox.Items.Count()); CollectionAssert.AllItemsAreInstancesOfType(ankimonBox.Items, typeof(AnkimonRowContainer)); var ankimonRowContainer0 = (AnkimonRowContainer)ankimonBox.Items[0]; var ankimonRowContainer1 = (AnkimonRowContainer)ankimonBox.Items[1]; Assert.AreEqual(3, ankimonRowContainer0.WordCardContainer.Items.Count()); Assert.AreEqual(3, ankimonRowContainer1.WordCardContainer.Items.Count()); CollectionAssert.AreEquivalent ( new [] { "swim", "swam", "swum", "run", "ran", "run" }, ankimonBox.GetAllItems().Where(x => x is WordCard).Select(x => x.Text).ToArray() ); Assert.AreEqual(100, ankimonBox.BorderLeft); Assert.AreEqual(100, ankimonBox.BorderTop); // AnkimonRowContainer Assert.AreEqual(DrawingObjectPosition.Relative, ankimonRowContainer0.Position); Assert.AreEqual(110, ankimonRowContainer0.BorderLeft); Assert.AreEqual(100, ankimonRowContainer0.BorderTop); // LabelItem var label0 = ankimonRowContainer0.Label; Assert.AreEqual("泳ぐ", label0.Text); Assert.AreEqual(100, label0.Width); Assert.AreEqual(110, label0.BorderLeft); Assert.AreEqual(100, label0.OuterWidth); Assert.AreEqual(210, label0.BorderRight); // wordCard00 var wordCard00 = ankimonRowContainer0.WordCardContainer.Items[0]; var wordCard10 = ankimonRowContainer1.WordCardContainer.Items[0]; Assert.IsInstanceOf<WordCard>(wordCard00); Assert.AreEqual(DrawingObjectPosition.Absolute, wordCard00.Position); Assert.AreEqual(100, wordCard00.OuterTop); Assert.AreEqual(110, ankimonRowContainer1.BorderLeft); // Assert.AreEqual(110 + WordCard.WordCardHeight + 10, wordCard10.BorderTop); // Assert.AreEqual(110 + WordCard.WordCardHeight + 10, ankimonRowContainer1.BorderTop); }