示例#1
0
            public override Token Evaluate(String stream, ref int pos)
            {
                int   PosSave = pos;
                Token ResultA = new Token(true);
                Token ResultB;
                int   Matches = 0;
                bool  Run     = true;

                while (Run)
                {
                    ResultB = m_Nodes.First.Value.Evaluate(stream, ref pos);
                    if (ResultB.IsEmpty())  //drop empty Token
                    {
                    }
                    else if (ResultB.IsValid())
                    {
                        Matches++;
                        Match();
                        if (ResultA.IsValid())
                        {
                            ResultA.Combine(ResultB);
                        }
                        else
                        {
                            ResultA = new Token(false);
                            ResultA.SetValue("", ResultB.GetPosStart(), m_Parent, this);
                            ResultA.Combine(ResultB);
                            //ResultA = ResultB;
                        }
                    }
                    Run = ResultB.IsValid();
                }
                if (!ResultA.IsValid())
                {
                    pos = PosSave;
                    if (m_MinMatches <= Matches)
                    {
                        ResultA = new Token(true);   //return empty Token
                    }
                }
                return(ResultA);
            }
示例#2
0
        protected void SetUp(ResultA resultA, ResultB resultB)
        {
            _mockTextObjectA = MockRepository.Create <MBTextObject>();
            _mockTextObjectA.Setup(a => a.ToString()).Returns(SettlementNameA);

            _mockSettlementA = MockRepository.Create <MBSettlement>();
            _mockSettlementA.SetupGet(a => a.Name).Returns(_mockTextObjectA.Object);

            _mockResultA = MockRepository.Create <CreateTournamentResult>();
            _mockResultA.SetupGet(a => a.Failed).Returns(resultA == ResultA.Failed);
            _mockResultA.SetupGet(a => a.Succeeded).Returns(resultA == ResultA.Succeeded);
            _mockResultA.SetupGet(a => a.HostSettlement).Returns(resultA == ResultA.Succeeded ? _mockSettlementA.Object : MBSettlement.Null);

            _mockTextObjectB = MockRepository.Create <MBTextObject>();
            _mockTextObjectB.Setup(b => b.ToString()).Returns(SettlementNameB);

            _mockSettlementB = MockRepository.Create <MBSettlement>();
            _mockSettlementB.SetupGet(b => b.Name).Returns(_mockTextObjectB.Object);

            _mockResultB = MockRepository.Create <CreateTournamentResult>();
            _mockResultB.SetupGet(b => b.Failed).Returns(resultB == ResultB.Failed);
            _mockResultB.SetupGet(b => b.Succeeded).Returns(resultB == ResultB.Succeeded);
            _mockResultB.SetupGet(b => b.HostSettlement).Returns(resultB == ResultB.Succeeded ? _mockSettlementB.Object : MBSettlement.Null);
        }