예제 #1
0
        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);
        }
예제 #2
0
        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);
        }