public void CurrentFramesReturnsNextFrames()
        {
            KarassFactory     karassFactory     = new KarassFactory();
            IDependencies     dependencies      = new KarassDependencies();
            FrameFactory      frameFactory      = new FrameFactory(dependencies);
            MockFramesFactory mockFramesFactory = new MockFramesFactory(frameFactory);

            IKarass karass = karassFactory.Get(new List <Action>(), new List <Action>(), new List <FrameRequest[]>()
            {
                new FrameRequest[]
                {
                    mockFramesFactory.GetValidFrameRequest((_) => true),
                    mockFramesFactory.GetValidFrameRequest((_) => true),
                    mockFramesFactory.GetValidFrameRequest((_) => true),
                    mockFramesFactory.GetValidFrameRequest((_) => true),
                    mockFramesFactory.GetValidFrameRequest((_) => true),
                    mockFramesFactory.GetValidFrameRequest((_) => true),
                    mockFramesFactory.GetValidFrameRequest((_) => true),
                    mockFramesFactory.GetValidFrameRequest((_) => true),
                    mockFramesFactory.GetValidFrameRequest((_) => true),
                    mockFramesFactory.GetValidFrameRequest((_) => true),
                }
            });

            Assert.True(karass.FramesCollection[0].Length == 10);

            KanKan kanKan = new KanKan(karass, frameFactory);

            for (int i = 0; i < 10; i++)
            {
                Assert.AreEqual(kanKan.Current, kanKan.CurrentState.NextFrames);
                kanKan.MoveNext();
            }
        }
 public void Setup()
 {
     _dependencies       = new KarassDependencies();
     _frameFactory       = new FrameFactory(_dependencies);
     _mockFramesFactory  = new MockFramesFactory(_frameFactory);
     _firstFrameRequest  = _mockFramesFactory.GetValidFrameRequest(FirstFrameSpy);
     _secondFrameRequest = _mockFramesFactory.GetValidFrameRequest(SecondFrameSpy);
 }
示例#3
0
                public void TeardownActionsAreCalledOnLastFrame()
                {
                    bool teardownCalled = false;
                    bool frameOneCalled = false;

                    bool FrameOneSpy(string message)
                    {
                        frameOneCalled = true;
                        return(true);
                    }

                    bool frameTwoCalled = false;

                    bool FrameTwoSpy(string message)
                    {
                        frameTwoCalled = true;
                        return(true);
                    }

                    bool frameThreeCalled = false;

                    bool FrameThreeSpy(string message)
                    {
                        frameThreeCalled = true;
                        return(true);
                    }

                    void TeardownSpy()
                    {
                        teardownCalled = true;
                    }

                    Karass karass = _karassFactory.Get(new List <List <Action> >(),
                                                       CreateActionListWith(TeardownSpy),
                                                       new List <FrameRequest[]>
                    {
                        new[]
                        {
                            _mockFramesFactory.GetValidFrameRequest(FrameOneSpy),
                            _mockFramesFactory.GetValidFrameRequest(FrameTwoSpy),
                            _mockFramesFactory.GetValidFrameRequest(FrameThreeSpy),
                        }
                    });
                    KanKan kankan = new KanKan(karass, _frameFactory);

                    kankan.MoveNext();
                    Assert.True(frameOneCalled);
                    Assert.False(teardownCalled);
                    kankan.MoveNext();
                    Assert.True(frameTwoCalled);
                    Assert.False(teardownCalled);
                    kankan.MoveNext();
                    Assert.True(frameThreeCalled);
                    Assert.True(teardownCalled);
                }
        public void MessageSendToMultipleKanKan(string message)
        {
            IKarassMessage karassMessage         = new KarassMessage();
            string         karassOneFrameMessage = string.Empty;

            bool KarassOneFrameSpy(string m)
            {
                karassOneFrameMessage = m;
                return(true);
            }

            FrameRequest karassOneFrameRequest = _mockFramesFactory.GetValidFrameRequest(KarassOneFrameSpy);

            string karassTwoFrameMessage = string.Empty;

            bool KarassTwoFrameSpy(string m)
            {
                karassTwoFrameMessage = m;
                return(true);
            }

            FrameRequest karassTwoFrameRequest = _mockFramesFactory.GetValidFrameRequest(KarassTwoFrameSpy);


            string karassThreeFrameMessage = string.Empty;

            bool KarassThreeFrameSpy(string m)
            {
                karassThreeFrameMessage = m;
                return(true);
            }

            FrameRequest karassThreeFrameRequest = _mockFramesFactory.GetValidFrameRequest(KarassThreeFrameSpy);


            KarassFactory karassFactory = new KarassFactory();

            Karass karassOne   = karassFactory.Get(new List <Action>(), new List <Action>(), new [] { karassOneFrameRequest });
            Karass karassTwo   = karassFactory.Get(new List <Action>(), new List <Action>(), new [] { karassTwoFrameRequest });
            Karass karassThree = karassFactory.Get(new List <Action>(), new List <Action>(), new [] { karassThreeFrameRequest });

            KanKanCore.KanKan kanKanOne   = new KanKanCore.KanKan(karassOne, _frameFactory, karassMessage);
            KanKanCore.KanKan kanKanTwo   = new KanKanCore.KanKan(karassTwo, _frameFactory, karassMessage);
            KanKanCore.KanKan kanKanThree = new KanKanCore.KanKan(karassThree, _frameFactory, karassMessage);

            karassMessage.SetMessage(message);

            kanKanOne.MoveNext();
            kanKanTwo.MoveNext();
            kanKanThree.MoveNext();

            Assert.True(karassOneFrameMessage == message);
            Assert.True(karassTwoFrameMessage == message);
            Assert.True(karassThreeFrameMessage == message);
        }
示例#5
0
        public void GivenNoMoveNextFirstFrameReturnedOnReset()
        {
            KarassFramesStub karass = new KarassFramesStub(
                new List <FrameRequest[]> {
                new[]
                {
                    _mockFramesFactory.GetValidFrameRequest(FirstFrameSpy)
                }
            },
                _dependencies,
                _frameFactory
                );
            KanKan kanKan = new KanKan(karass, _frameFactory);

            kanKan.MoveNext();
            kanKan.Reset();
            kanKan.MoveNext();
            Assert.True(_timesFirstFrameRun == 2);
        }
        public void ThenKarassWillRunCorrectly()
        {
            bool karassOneSetupRun = false;

            void KarassOneSetupSpy()
            {
                karassOneSetupRun = true;
            }

            bool karassOneTeardownRun = false;

            void KarassOneTeardownSpy()
            {
                karassOneTeardownRun = true;
            }

            bool karassOneFrameOneRun = false;

            bool KarassOneFrameOneSpy(string message)
            {
                karassOneFrameOneRun = true;
                return(true);
            }

            FrameRequest karassOneFrameOneSpyRequest =
                _mockFramesFactory.GetValidFrameRequest(KarassOneFrameOneSpy);

            Karass karassOne = _karassFactory.Get(KarassOneSetupSpy, KarassOneTeardownSpy,
                                                  new List <FrameRequest[]>
            {
                new[]
                {
                    karassOneFrameOneSpyRequest
                }
            });


            bool karassTwoSetupRun = false;

            void KarassTwoSetupSpy()
            {
                karassTwoSetupRun = true;
            }

            bool karassTwoTeardownRun = false;

            void KarassTwoTeardownSpy()
            {
                karassTwoTeardownRun = true;
            }

            bool karassTwoFrameOneRun   = false;
            bool karassTwoFrameTwoRun   = false;
            bool karassTwoFrameThreeRun = false;

            bool KarassTwoFrameOneSpy(string message)
            {
                karassTwoFrameOneRun = true;
                return(true);
            }

            bool KarassTwoFrameTwoSpy(string message)
            {
                karassTwoFrameTwoRun = true;
                return(true);
            }

            bool KarassTwoFrameThreeSpy(string message)
            {
                karassTwoFrameThreeRun = true;
                return(true);
            }

            FrameRequest karassTwoFrameOneSpyRequest =
                _mockFramesFactory.GetValidFrameRequest(KarassTwoFrameOneSpy);


            FrameRequest karassTwoFrameTwoSpyRequest =
                _mockFramesFactory.GetValidFrameRequest(KarassTwoFrameTwoSpy);


            FrameRequest karassTwoFrameThreeSpyRequest =
                _mockFramesFactory.GetValidFrameRequest(KarassTwoFrameThreeSpy);


            Karass karassTwo = _karassFactory.Get(KarassTwoSetupSpy, KarassTwoTeardownSpy,
                                                  new List <FrameRequest[]>
            {
                new[]
                {
                    karassTwoFrameOneSpyRequest,
                    karassTwoFrameTwoSpyRequest,
                    karassTwoFrameThreeSpyRequest,
                }
            });


            bool karassThreeSetupRun = false;

            void KarassThreeSetupSpy()
            {
                karassThreeSetupRun = true;
            }

            bool karassThreeTeardownRun = false;

            void KarassThreeTeardownSpy()
            {
                karassThreeTeardownRun = true;
            }

            bool karassThreeFrameOneRun = false;


            bool KarassThreeFrameOneSpy(string message)
            {
                karassThreeFrameOneRun = true;
                return(true);
            }

            FrameRequest karassThreeFrameOneSpyRequest =
                _mockFramesFactory.GetValidFrameRequest(KarassThreeFrameOneSpy);

            Karass karassThree = _karassFactory.Get(KarassThreeSetupSpy, KarassThreeTeardownSpy,
                                                    new List <FrameRequest[]>
            {
                new[]
                {
                    karassThreeFrameOneSpyRequest
                }
            });


            bool karassFourSetupRun = false;

            void KarassFourSetupSpy()
            {
                karassFourSetupRun = true;
            }

            bool karassFourTeardownRun = false;

            void KarassFourTeardownSpy()
            {
                karassFourTeardownRun = true;
            }

            bool karassFourFrameOneRun = false;
            bool karassFourFrameTwoRun = false;

            bool KarassFourFrameOneSpy(string message)
            {
                karassFourFrameOneRun = true;
                return(true);
            }

            bool KarassFourFrameTwoSpy(string message)
            {
                karassFourFrameTwoRun = true;
                return(true);
            }

            FrameRequest karassFourFrameOneSpyRequest =
                _mockFramesFactory.GetValidFrameRequest(KarassFourFrameOneSpy);


            FrameRequest karassFourFrameTwoSpyRequest =
                _mockFramesFactory.GetValidFrameRequest(KarassFourFrameTwoSpy);


            Karass karassFour = _karassFactory.Get(KarassFourSetupSpy, KarassFourTeardownSpy,
                                                   new List <FrameRequest[]>
            {
                new[]
                {
                    karassFourFrameOneSpyRequest,
                    karassFourFrameTwoSpyRequest
                }
            });

            KanKan kankan = new KanKan(
                new IKarass[] { karassOne, karassTwo, karassThree, karassFour },
                _frameFactory);
            bool moveNext = kankan.MoveNext();

            CheckFirstFrame(karassOneSetupRun, karassOneTeardownRun, karassOneFrameOneRun, karassTwoSetupRun,
                            karassTwoTeardownRun, karassTwoFrameOneRun, karassTwoFrameTwoRun, karassTwoFrameThreeRun, moveNext,
                            karassThreeSetupRun, karassThreeTeardownRun, karassThreeFrameOneRun, karassFourSetupRun,
                            karassFourTeardownRun, karassFourFrameOneRun, karassFourFrameTwoRun);

            moveNext = kankan.MoveNext();


            CheckSecondFrame(karassOneSetupRun, karassOneTeardownRun, karassOneFrameOneRun, karassTwoSetupRun,
                             karassTwoTeardownRun, karassTwoFrameOneRun, karassTwoFrameTwoRun, karassTwoFrameThreeRun,
                             karassThreeSetupRun, karassThreeTeardownRun, karassThreeFrameOneRun, karassFourSetupRun,
                             karassFourTeardownRun, karassFourFrameOneRun, karassFourFrameTwoRun, moveNext);


            moveNext = kankan.MoveNext();

            CheckThirdFrame(karassOneSetupRun, karassOneTeardownRun, karassOneFrameOneRun, karassTwoSetupRun,
                            karassTwoTeardownRun, karassTwoFrameOneRun, karassTwoFrameTwoRun, karassTwoFrameThreeRun,
                            karassThreeSetupRun, karassThreeTeardownRun, karassThreeFrameOneRun, karassFourSetupRun,
                            karassFourTeardownRun, karassFourFrameOneRun, karassFourFrameTwoRun, moveNext);
            moveNext = kankan.MoveNext();

            CheckFourthFrame(karassOneSetupRun, karassOneTeardownRun, karassOneFrameOneRun, karassTwoSetupRun,
                             karassTwoTeardownRun, karassTwoFrameOneRun, karassTwoFrameTwoRun, karassTwoFrameThreeRun,
                             karassThreeSetupRun, karassThreeTeardownRun, karassThreeFrameOneRun, karassFourSetupRun,
                             karassFourTeardownRun, karassFourFrameOneRun, karassFourFrameTwoRun, moveNext);

            moveNext = kankan.MoveNext();

            CheckFifthFrame(karassOneSetupRun, karassOneTeardownRun, karassOneFrameOneRun, karassTwoSetupRun,
                            karassTwoTeardownRun, karassTwoFrameOneRun, karassTwoFrameTwoRun, karassTwoFrameThreeRun,
                            karassThreeSetupRun, karassThreeTeardownRun, karassThreeFrameOneRun, karassFourSetupRun,
                            karassFourTeardownRun, karassFourFrameOneRun, karassFourFrameTwoRun, moveNext);

            moveNext = kankan.MoveNext();

            CheckSixthFrame(karassOneSetupRun, karassOneTeardownRun, karassOneFrameOneRun, karassTwoSetupRun,
                            karassTwoTeardownRun, karassTwoFrameOneRun, karassTwoFrameTwoRun, karassTwoFrameThreeRun,
                            karassThreeSetupRun, karassThreeTeardownRun, karassThreeFrameOneRun, karassFourSetupRun,
                            karassFourTeardownRun, karassFourFrameOneRun, karassFourFrameTwoRun, moveNext);

            moveNext = kankan.MoveNext();

            CheckSeventhFrame(karassOneSetupRun, karassOneTeardownRun, karassOneFrameOneRun, karassTwoSetupRun,
                              karassTwoTeardownRun, karassTwoFrameOneRun, karassTwoFrameTwoRun, karassTwoFrameThreeRun,
                              karassThreeSetupRun, karassThreeTeardownRun, karassThreeFrameOneRun, karassFourSetupRun,
                              karassFourTeardownRun, karassFourFrameOneRun, karassFourFrameTwoRun, moveNext);
        }
            public void ThenNextFramesCorrectlyProgressThroughFrames()
            {
                FrameRequest frameRequestOne   = _mockFramesFactory.GetValidFrameRequest(FrameOneSpy);
                FrameRequest frameRequestTwo   = _mockFramesFactory.GetValidFrameRequest(FrameTwoSpy);
                FrameRequest frameRequestThree = _mockFramesFactory.GetValidFrameRequest(FrameThreeSpy);

                bool frameOneRun = false;

                bool FrameOneSpy(string s)
                {
                    frameOneRun = true;
                    return(true);
                }

                bool frameTwoRun = false;

                bool FrameTwoSpy(string s)
                {
                    frameTwoRun = true;
                    return(true);
                }

                bool frameThreeRun = false;

                bool FrameThreeSpy(string s)
                {
                    frameThreeRun = true;
                    return(true);
                }

                bool setupRun = false;

                void SetupSpy()
                {
                    setupRun = true;
                }

                bool tearDownRun = false;

                void TeardownSpy()
                {
                    tearDownRun = true;
                }

                Karass karass = KarassFactory.Get(
                    CreateActionListWith(SetupSpy),
                    CreateActionListWith(TeardownSpy),
                    new List <FrameRequest[]>
                {
                    new[]
                    {
                        frameRequestOne,
                        frameRequestTwo,
                        frameRequestThree
                    }
                });

                KanKan kankan = new KanKan(karass, _frameFactory);

                Assert.True(kankan.CurrentState.NextFrames.Contains(frameRequestOne));
                Assert.False(kankan.CurrentState.NextFrames.Contains(frameRequestTwo));
                Assert.False(kankan.CurrentState.NextFrames.Contains(frameRequestThree));

                kankan.MoveNext();

                Assert.False(kankan.CurrentState.NextFrames.Contains(frameRequestOne));
                Assert.True(kankan.CurrentState.NextFrames.Contains(frameRequestTwo));
                Assert.False(kankan.CurrentState.NextFrames.Contains(frameRequestThree));


                CheckFirstFrame(setupRun, frameOneRun, tearDownRun, frameTwoRun, frameThreeRun);


                kankan.MoveNext();

                Assert.False(kankan.CurrentState.NextFrames.Contains(frameRequestOne));
                Assert.False(kankan.CurrentState.NextFrames.Contains(frameRequestTwo));
                Assert.True(kankan.CurrentState.NextFrames.Contains(frameRequestThree));


                CheckSecondFrame(setupRun, frameOneRun, tearDownRun, frameTwoRun, frameThreeRun);

                kankan.MoveNext();

                Assert.False(kankan.CurrentState.NextFrames.Any());

                CheckThirdFrame(setupRun, frameOneRun, tearDownRun, frameTwoRun, frameThreeRun);
            }
            public void ThenFrameSetsAreRunIndependently()
            {
                FrameRequest frameSetOneRequestOne   = _mockFramesFactory.GetValidFrameRequest(FrameSetOneFrameOneSpy);
                FrameRequest frameSetOneRequestTwo   = _mockFramesFactory.GetValidFrameRequest(FrameSetOneFrameTwoSpy);
                FrameRequest frameSetOneRequestThree = _mockFramesFactory.GetValidFrameRequest(FrameSetOneFrameThreeSpy);


                FrameRequest frameSetTwpRequestOne = _mockFramesFactory.GetValidFrameRequest(FrameSetTwoFrameOneSpy);
                FrameRequest frameSetTwoRequestTwo = _mockFramesFactory.GetValidFrameRequest(FrameSetTwoFrameTwoSpy);

                bool setOneSetupRun = false;

                void FrameSetOneSetupSpy()
                {
                    setOneSetupRun = true;
                }

                bool setOneTeardownRun = false;

                void FrameSetOneTeardownSpy()
                {
                    setOneTeardownRun = true;
                }

                bool setOneFrameOneRun = false;

                bool FrameSetOneFrameOneSpy(string message)
                {
                    setOneFrameOneRun = true;
                    return(true);
                }

                bool setOneFrameTwoRun = false;

                bool FrameSetOneFrameTwoSpy(string message)
                {
                    setOneFrameTwoRun = true;
                    return(true);
                }

                bool setOneFrameThreeRun = false;

                bool FrameSetOneFrameThreeSpy(string message)
                {
                    setOneFrameThreeRun = true;
                    return(true);
                }

                bool setTwoSetupRun = false;

                void FrameSetTwoSetupSpy()
                {
                    setTwoSetupRun = true;
                }

                bool setTwoTeardownRun = false;

                void FrameSetTwoTeardownSpy()
                {
                    setTwoTeardownRun = true;
                }

                bool setTwoFrameOneRun = false;

                bool FrameSetTwoFrameOneSpy(string message)
                {
                    setTwoFrameOneRun = true;
                    return(true);
                }

                bool setTwoFrameTwoRun = false;

                bool FrameSetTwoFrameTwoSpy(string message)
                {
                    setTwoFrameTwoRun = true;
                    return(true);
                }

                Karass karassOne = KarassFactory.Get(CreateActionListWith(FrameSetOneSetupSpy),
                                                     CreateActionListWith(FrameSetOneTeardownSpy),
                                                     new List <FrameRequest[]>
                {
                    new[]
                    {
                        frameSetOneRequestOne,
                        frameSetOneRequestTwo,
                        frameSetOneRequestThree
                    }
                });

                Karass karassTwo = KarassFactory.Get(CreateActionListWith(FrameSetTwoSetupSpy),
                                                     CreateActionListWith(FrameSetTwoTeardownSpy),
                                                     new List <FrameRequest[]>
                {
                    new[]
                    {
                        frameSetTwpRequestOne,
                        frameSetTwoRequestTwo
                    }
                });

                KanKan kankan = new KanKan(karassOne + karassTwo, _frameFactory);


                Assert.True(kankan.CurrentState.NextFrames.Contains(frameSetOneRequestOne));
                Assert.True(kankan.CurrentState.NextFrames.Contains(frameSetTwpRequestOne));
                Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetOneRequestTwo));
                Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetTwoRequestTwo));
                Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetOneRequestThree));


                kankan.MoveNext();

                Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetOneRequestOne));
                Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetTwpRequestOne));
                Assert.True(kankan.CurrentState.NextFrames.Contains(frameSetOneRequestTwo));
                Assert.True(kankan.CurrentState.NextFrames.Contains(frameSetTwoRequestTwo));
                Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetOneRequestThree));

                CheckFirstFrame(setOneSetupRun, setTwoSetupRun, setOneTeardownRun, setTwoTeardownRun, setOneFrameOneRun,
                                setTwoFrameOneRun, setOneFrameTwoRun, setOneFrameThreeRun, setTwoFrameTwoRun);


                kankan.MoveNext();
                Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetOneRequestOne));
                Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetTwpRequestOne));
                Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetOneRequestTwo));
                Assert.False(kankan.CurrentState.NextFrames.Contains(frameSetTwoRequestTwo));
                Assert.True(kankan.CurrentState.NextFrames.Contains(frameSetOneRequestThree));

                CheckSecondFrame(setOneSetupRun, setTwoSetupRun, setOneTeardownRun, setTwoTeardownRun,
                                 setOneFrameOneRun, setTwoFrameOneRun, setOneFrameTwoRun, setTwoFrameTwoRun, setOneFrameThreeRun);


                kankan.MoveNext();
                Assert.False(kankan.CurrentState.NextFrames.Any());
                CheckThirdFrame(setOneSetupRun, setTwoSetupRun, setOneTeardownRun, setTwoTeardownRun, setOneFrameOneRun,
                                setTwoFrameOneRun, setOneFrameTwoRun, setTwoFrameTwoRun, setOneFrameThreeRun);
            }
示例#9
0
            public void ThenNextFramesIsCorrectlyUpdated()
            {
                FrameRequest setOneFrameOneSpyRequest = _mockFramesFactory.GetValidFrameRequest(SetOneFrameOneSpy);
                FrameRequest setOneFrameTwoSpyRequest = _mockFramesFactory.GetValidFrameRequest(SetOneFrameTwoSpy);
                FrameRequest setTwoFrameOneSpyRequest = _mockFramesFactory.GetValidFrameRequest(SetTwoFrameOneSpy);
                FrameRequest setTwoFrameTwoSpyRequest = _mockFramesFactory.GetValidFrameRequest(SetTwoFrameTwoSpy);


                bool setOneFrameOneRun = false;

                bool SetOneFrameOneSpy(string s)
                {
                    setOneFrameOneRun = true;
                    return(true);
                }

                bool setOneFrameTwoRun = false;

                bool SetOneFrameTwoSpy(string s)
                {
                    setOneFrameTwoRun = true;
                    return(true);
                }

                bool setTwoFrameOneRun = false;

                bool SetTwoFrameOneSpy(string s)
                {
                    setTwoFrameOneRun = true;
                    return(true);
                }

                bool setTwoFrameTwoRun = false;

                bool SetTwoFrameTwoSpy(string s)
                {
                    setTwoFrameTwoRun = true;
                    return(true);
                }

                Karass karass = _karassFactory.Get(new List <List <Action> >(), new List <List <Action> >(),
                                                   new List <FrameRequest[]>
                {
                    new[]
                    {
                        setOneFrameOneSpyRequest,
                        setOneFrameTwoSpyRequest
                    },
                    new[]
                    {
                        setTwoFrameOneSpyRequest,
                        setTwoFrameTwoSpyRequest
                    }
                });

                KanKan kankan = new KanKan(karass, _frameFactory);

                Assert.True(kankan.CurrentState.NextFrames.Count == 2);
                Assert.True(kankan.CurrentState.NextFrames.Contains(setOneFrameOneSpyRequest));
                Assert.True(kankan.CurrentState.NextFrames.Contains(setTwoFrameOneSpyRequest));

                kankan.MoveNext();
                Assert.True(kankan.CurrentState.NextFrames.Count == 2);
                Assert.True(kankan.CurrentState.NextFrames.Contains(setOneFrameTwoSpyRequest));
                Assert.True(kankan.CurrentState.NextFrames.Contains(setTwoFrameTwoSpyRequest));

                Assert.True(setOneFrameOneRun);
                Assert.False(setOneFrameTwoRun);
                Assert.True(setTwoFrameOneRun);
                Assert.False(setTwoFrameTwoRun);

                kankan.MoveNext();

                Assert.False(kankan.CurrentState.NextFrames.Any());

                Assert.True(setOneFrameOneRun);
                Assert.True(setOneFrameTwoRun);
                Assert.True(setTwoFrameOneRun);
                Assert.True(setTwoFrameTwoRun);
            }