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); }
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); }