public void Test1()
        {
            var cardBox = new CardBox() { Width = 1000, };
            var wordCard1 = new WordCard("abc") { Size = new SizeF(100, 100), };
            var wordCard2 = new WordCard("def") { Size = new SizeF(100, 100), };
            var label = new EigoTestLabelItem();

            Assert.Throws<ArgumentException>(() => { cardBox.Items.Add(label); });

            cardBox.Items.Add(wordCard1);
            cardBox.Items.Add(wordCard2);

            Assert.AreEqual(0, wordCard1.Location.X);
            Assert.AreEqual(0, wordCard1.Location.Y);
            Assert.AreEqual(5 + 100 + 5 + 10, wordCard2.Location.X);
            Assert.AreEqual(0, wordCard2.Location.Y);
        }
 public void Test1()
 {
     var label = new EigoTestLabelItem();
     Assert.True(label.IsClickable);
 }
        public void WordCardContainerにWordCard以外のものを入れたら例外()
        {
            var ankimonRowContainer = new AnkimonRowContainer();
            var wordCardContainer = ankimonRowContainer.WordCardContainer;

            var a = new WordCard("a");
            wordCardContainer.Items.Add(a);

            Assert.Throws<InvalidCastException>(() =>
            {
                var b = new EigoTestLabelItem("b");
                wordCardContainer.Items.Add(b);
            });
        }
        public void RemoveTest()
        {
            var label = new EigoTestLabelItem();
            var container = new DrawingObjectContainer();

            container.Items.Add(label);
            Assert.AreEqual(1, container.Items.Count());
            Assert.AreSame(container, label.Parent);

            container.Items.Remove(label);
            Assert.AreEqual(0, container.Items.Count());
            Assert.Null(label.Parent);
        }
        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 GetAllItemsTest()
        {
            var testState = new Fish.eigotest.TestState(null);
            var drawingObjectContainer1 = new DrawingObjectContainer();
            var drawingObjectContainer2 = new DrawingObjectContainer();
            var eigoTestLabelItem = new EigoTestLabelItem();

            drawingObjectContainer2.Items.Add(eigoTestLabelItem);
            drawingObjectContainer1.Items.Add(drawingObjectContainer2);
            testState.Items.Add(drawingObjectContainer1);

            Assert.AreEqual(3, testState.GetAllItems().Count());
        }
        public void MouseClickイベントの送出()
        {
            var window = new EPuzzleWindow();
            var testState = new Fish.eigotest.TestState(window);
            var container = new DrawingObjectContainer()
            {
                MarginLeft = 10f,
                MarginTop = 100f,
            };
            var label = new EigoTestLabelItem()
            {
                Size = new SizeF(10, 100),
            };
            testState.Items.Add(container);
            container.Items.Add(label);
            window.State = testState;

            label.Click += (sender, e) =>
            {
                Assert.Pass();
            };

            Assert.AreEqual(1014f, container.Width);

            Assert.AreEqual(DrawingObjectPosition.Static, container.Position);
            Assert.AreEqual(10f, label.OuterLeft);
            Assert.AreEqual(100f, label.OuterTop);
            Assert.AreEqual(10f, label.Width);
            Assert.AreEqual(100f, label.Height);
            window.MouseUp(15f, 150f, MouseButtons.Left);
            Assert.Fail();
        }
        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 初期値テスト()
 {
     var label = new EigoTestLabelItem();
     Assert.True(label.IsVisible);
     Assert.True(label.IsClickable);
     Assert.False(label.IsSelected);
     Assert.Null(label.Tag);
 }
        public void 色の継承()
        {
            var container0 = new DrawingObjectContainer();
            var container1 = new DrawingObjectContainer();
            var label = new EigoTestLabelItem();

            container0.Items.Add(container1);
            container1.Items.Add(label);
            Assert.AreEqual(Color.Empty, label.Color);

            container0.Color = Color.Red;
            Assert.AreEqual(Color.Red, label.Color);

            label.Color = Color.Blue;
            Assert.AreEqual(Color.Blue, label.Color);
        }
        public void ContainsIsClickedTest()
        {
            var container1 = new DrawingObjectContainer()
            {
                Location = new PointF(10, 100),
                MarginLeft = 100,
                PaddingLeft = 1,
                MarginTop = 1000,
                PaddingTop = 10,
            };

            // 111, 1110
            var container2 = new DrawingObjectContainer()
            {
                Location = new PointF(10, 100),
                MarginLeft = 100,
                PaddingLeft = 1,
                MarginTop = 1000,
                PaddingTop = 10,
            };

            // 222, 2220
            var label = new EigoTestLabelItem()
            {
                MarginLeft = 100,
                MarginTop = 1000,
                PaddingLeft = 1000,
                PaddingTop = 1000,
                Location = new PointF(10, 100),
                Size = new SizeF(50, 500),
            };
            // 332, 3320

            container1.Items.Add(container2);
            container2.Items.Add(label);

            Assert.False(label.Contains(15f, 150f));
            Assert.True(label.Contains(332f, 3320f));
            Assert.True(label.Contains(1332f, 4320f));

            Assert.False(label.IsClicked(15f, 150f));
            Assert.True(label.IsClicked(332f, 3320f));
            Assert.True(label.IsClicked(1332f, 4320f));

            label.IsClickable = false;
            label.IsVisible = false;
            Assert.False(label.IsClicked(332f, 3320f));
            Assert.False(label.IsClicked(1332f, 4320f));

            label.IsClickable = false;
            label.IsVisible = true;
            Assert.False(label.IsClicked(332f, 3320f));
            Assert.False(label.IsClicked(1332f, 4320f));

            label.IsClickable = true;
            label.IsVisible = false;
            Assert.False(label.IsClicked(332f, 3320f));
            Assert.False(label.IsClicked(1332f, 4320f));

            label.IsClickable = true;
            label.IsVisible = true;
            Assert.True(label.IsClicked(332f, 3320f));
            Assert.True(label.IsClicked(1332f, 4320f));
        }
        public void ParentTest()
        {
            var container1 = new DrawingObjectContainer()
            {
                Position = DrawingObjectPosition.Relative,
                Location = new PointF(10, 100),
                MarginLeft = 100,
                PaddingLeft = 1,
                MarginTop = 1000,
                PaddingTop = 10,
            };
            var container2 = new DrawingObjectContainer()
            {
                Position = DrawingObjectPosition.Absolute,
                Location = new PointF(10, 100),
                MarginLeft = 100,
                PaddingLeft = 1,
                MarginTop = 1000,
                PaddingTop = 10,
            };
            var label = new EigoTestLabelItem()
            {
                Position = DrawingObjectPosition.Absolute,
                MarginLeft = 100,
                MarginTop = 1000,
                Location = new PointF(10, 100),
            };

            container1.Items.Add(container2);
            container2.Items.Add(label);

            Assert.Null(container1.Parent);
            Assert.AreSame(container1, container2.Parent);
            Assert.AreSame(container2, label.Parent);

            Assert.AreEqual(110f, container1.BorderLeft);
            Assert.AreEqual(221f, container2.BorderLeft);
            Assert.AreEqual(332f, label.BorderLeft);

            Assert.AreEqual(1100f, container1.BorderTop);
            Assert.AreEqual(2210f, container2.BorderTop);
            Assert.AreEqual(3320f, label.BorderTop);
        }
        public void OuterBorderInnerTest()
        {
            var container1 = new DrawingObjectContainer()
            {
                Position = DrawingObjectPosition.Relative,

                Location = new PointF(10, 100),
                MarginLeft = 100,
                MarginRight = 100,
                PaddingLeft = 1,
                PaddingRight = 1,
                MarginTop = 1000,
                MarginBottom = 1000,
                PaddingTop = 10,
                PaddingBottom = 10,
                Size = new SizeF(50, 500),
            };
            var label = new EigoTestLabelItem()
            {
                Position = DrawingObjectPosition.Absolute,

                MarginLeft = 100,
                MarginTop = 1000,
                PaddingLeft = 100,
                PaddingTop = 1000,
                Location = new PointF(10, 100),
                Size = new SizeF(50, 500),
            };

            container1.Items.Add(label);

            Assert.AreEqual(10, container1.Left);
            Assert.AreEqual(100, container1.Top);
            Assert.AreEqual(10, container1.OuterLeft);
            Assert.AreEqual(10 + 252, container1.OuterRight);
            Assert.AreEqual(100, container1.OuterTop);
            Assert.AreEqual(100 + 2520, container1.OuterBottom);

            Assert.AreEqual(110, container1.BorderLeft);
            Assert.AreEqual(110 + 52, container1.BorderRight);
            Assert.AreEqual(1100, container1.BorderTop);
            Assert.AreEqual(1100 + 520, container1.BorderBottom);

            Assert.AreEqual(111, container1.InnerLeft);
            Assert.AreEqual(111 + 50, container1.InnerRight);
            Assert.AreEqual(1110, container1.InnerTop);
            Assert.AreEqual(1110 + 500, container1.InnerBottom);

            Assert.AreEqual(50, container1.Width);
            Assert.AreEqual(500, container1.Height);
            Assert.AreEqual(52, container1.BorderWidth);
            Assert.AreEqual(520, container1.BorderHeight);
            Assert.AreEqual(252, container1.OuterWidth);
            Assert.AreEqual(2520, container1.OuterHeight);

            // ラベル
            Assert.AreEqual(10, label.Left);
            Assert.AreEqual(100, label.Top);

            // Location = new PointF(10, 100),
            Assert.AreEqual(111 + 10, label.OuterLeft);
            Assert.AreEqual(1110 + 100, label.OuterTop);

            // MarginLeft = 100,
            // MarginTop = 1000,
            Assert.AreEqual(111 + 10 + 100, label.BorderLeft);
            Assert.AreEqual(1110 + 100 + 1000, label.BorderTop);

            // PaddingLeft = 100,
            // PaddingTop = 1000,
            Assert.AreEqual(111 + 10 + 100 + 100, label.InnerLeft);
            Assert.AreEqual(1110 + 100 + 1000 + 1000, label.InnerTop);
        }
        public void GetParentsTest()
        {
            var container1 = new DrawingObjectContainer();
            var container2 = new DrawingObjectContainer();
            var label = new EigoTestLabelItem();

            container1.Items.Add(container2);
            container2.Items.Add(label);

            CollectionAssert.AreEqual(new EigoTestDrawingObject[] { container2, container1, }, label.GetParents().ToArray());
        }
        public void CopyTest()
        {
            var container1 = new DrawingObjectContainer()
            {
                Location = new PointF(10, 100),
                MarginLeft = 100,
                MarginRight = 100,
                PaddingLeft = 1,
                PaddingRight = 1,
                MarginTop = 1000,
                MarginBottom = 1000,
                PaddingTop = 10,
                PaddingBottom = 10,
                Size = new SizeF(50, 500),
            };
            var label = new EigoTestLabelItem()
            {
                MarginLeft = 100,
                MarginTop = 1000,
                PaddingLeft = 100,
                PaddingTop = 1000,
                Location = new PointF(10, 100),
                Size = new SizeF(50, 500),
            };
            container1.Items.Add(label);

            Assert.AreSame(container1, label.Parent);

            var label2 = label.Copy();
            Assert.AreEqual(label.MarginLeft, label2.MarginLeft);
            Assert.AreEqual(label.MarginTop, label2.MarginTop);
            Assert.AreEqual(label.PaddingLeft, label2.PaddingLeft);
            Assert.AreEqual(label.PaddingTop, label2.PaddingTop);
            Assert.AreEqual(label.Location, label2.Location);
            Assert.AreEqual(label.Size, label2.Size);
            Assert.AreNotEqual(label.Id, label2.Id);
            Assert.Null(label2.Parent);
        }