public void FinishedEventのテスト()
        {
            var a = 0;
            var b = 0;

            {
                var drawingPreparer = new DrawingPreparer(x =>
                {
                    a++;
                    return true;
                });
                drawingPreparer.Finished += (sender, e) =>
                {
                    b++;
                };
                Assert.AreEqual(0, a);
                Assert.AreEqual(0, b);

                drawingPreparer.PrepareForDrawing();
                Assert.False(drawingPreparer.HasBeenFinished);
                Assert.AreEqual(1, a);
                Assert.AreEqual(0, b);

                drawingPreparer.PrepareForDrawing();
                Assert.False(drawingPreparer.HasBeenFinished);
                Assert.AreEqual(2, a);
                Assert.AreEqual(0, b);
            }
            {
                var drawingPreparer = new DrawingPreparer(x =>
                {
                    a++;
                    x.HasBeenFinished = true;
                    return true;
                });
                drawingPreparer.Finished += (sender, e) =>
                {
                    b++;
                };

                drawingPreparer.PrepareForDrawing();
                Assert.True(drawingPreparer.HasBeenFinished);
                Assert.AreEqual(3, a);
                Assert.AreEqual(1, b);

                drawingPreparer.PrepareForDrawing();
                Assert.True(drawingPreparer.HasBeenFinished);
                Assert.AreEqual(3, a);
                Assert.AreEqual(1, b);
            }
        }
 public void Test1()
 {
     var drawingPreparer = new DrawingPreparer(x =>
     {
         return true;
     });
     Assert.False(drawingPreparer.HasBeenFinished);
     Assert.False(drawingPreparer.画面更新要求);
     Assert.True(drawingPreparer.PrepareForDrawing());
     Assert.False(drawingPreparer.HasBeenFinished);
     Assert.True(drawingPreparer.画面更新要求);
 }
        public void 完了したらPrepareDrawingメソッドは実行されない()
        {
            var a = 0;
            var drawingPreparer = new DrawingPreparer(x =>
            {
                a += 1;
                x.HasBeenFinished = true;
                return true;
            });

            drawingPreparer.PrepareForDrawing();
            Assert.AreEqual(1, a);

            drawingPreparer.PrepareForDrawing();
            Assert.AreEqual(1, a);
        }
        public void DrawingPreparersTest()
        {
            var testState = new Fish.eigotest.TestState(null);
            var drawingPreparer1 = new DrawingPreparer();
            var drawingPreparer2 = new DrawingPreparer();
            testState.DrawingPreparers.Add(drawingPreparer1);
            testState.DrawingPreparers.Add(drawingPreparer2);

            // Tick()時、完了プロパティがtrueのDrawingPreparerは取り除かれる
            CollectionAssert.IsSubsetOf(new [] { drawingPreparer1, drawingPreparer2, }, testState.DrawingPreparers);

            testState.Tick();
            CollectionAssert.IsSubsetOf(new [] { drawingPreparer1, drawingPreparer2, }, testState.DrawingPreparers);

            drawingPreparer2.HasBeenFinished = true;
            testState.Tick();
            CollectionAssert.DoesNotContain(testState.DrawingPreparers, drawingPreparer2);

            bool a = false;
            drawingPreparer1.Action = x =>
            {
                a = true;
                return false;
            };
            testState.Tick();
            Assert.True(a);
        }