public void testAuction() { Auction auction = null; RBNHands hands = null; foreach (RBNLine line in _article.Lines) { if (line.GetRBNLineType() == RBNLineType.Auction) { auction = ((RBNAuction)line).Auction; } else if (line.GetRBNLineType() == RBNLineType.Hands) { hands = (RBNHands)line; } } Assert.Equal(Direction.West, auction.Dealer); Assert.Equal(Vulnerability.None, hands.Vulnerability); Assert.Equal(9, auction.Bids.Count); Assert.Equal(true, auction.Bids[0].Conventional); Assert.Equal(BidQuality.Good, auction.Bids[1].Quality); Assert.Equal(1, auction.Bids[3].Explanation); Assert.Equal(Suit.Hearts, auction.Bids[7].Suit); Assert.Equal(BidQuality.VeryPoor, auction.Bids[7].Quality); Assert.Equal(true, auction.Bids[8].Double); Assert.Equal(2, auction.Explanations.Count); }
public static RBNLine GetRBNLine(string rbn) { if (rbn == null || rbn.Length < 2) { return(null); } char firstChar = rbn[0]; string value = rbn.Substring(2); RBNLineType type = RBNLineTypeMapper.GetRBNLineType(firstChar); RBNLine rbnLine = null; switch (type) { case RBNLineType.TitleAndAuthor: rbnLine = new RBNTitleAndAuthor(); break; case RBNLineType.Hands: rbnLine = new RBNHands(); break; case RBNLineType.Text: value = rbn; rbnLine = new RBNText(); break; case RBNLineType.Pause: rbnLine = new RBNPause(); break; case RBNLineType.ContractAndDeclarer: rbnLine = new RBNContractAndDeclarer(); break; case RBNLineType.Auction: rbnLine = new RBNAuction(); break; case RBNLineType.BidExplanation: rbnLine = new RBNBidExplanation(); break; default: break; /* TODO: * case DateAndTime: * case Location: * case EventOrMainHeading: * case SessionStageOrSubheading: * case FormOfScoring: * case TeamNamesAndCarryovers: * case NamesOfPlayersAndRoomOrTable: * case BoardNumber: * case PlaySequence: * case ResultTricksWonAndScore: * case InstantAwards: * case MakesAtDoubleDummy: */ } if (rbnLine != null) { rbnLine.ParseRBNstring(value); } return(rbnLine); }