public void SortNextBidsMethodOneBid()
        {
            var firstBid = new Bid("1D", null);

            var rootBid = new Bid(null, null);

            rootBid.NextBids.Add(firstBid);

            rootBid.SortNextBids();

            Assert.AreEqual(rootBid.NextBids[0], firstBid);
        }
        public void SortNextBidsMethodDifferentBidLevel()
        {
            var firstBid = new Bid("1NT", null);
            var secondBid = new Bid("2S", null);
            var thirdBid = new Bid("3NT", null);

            var rootBid = new Bid(null, null);

            rootBid.NextBids.Add(secondBid);
            rootBid.NextBids.Add(thirdBid);
            rootBid.NextBids.Add(firstBid);

            rootBid.SortNextBids();

            Assert.AreEqual(rootBid.NextBids[0], firstBid);
            Assert.AreEqual(rootBid.NextBids[1], secondBid);
            Assert.AreEqual(rootBid.NextBids[2], thirdBid);
        }
        public void SortNextBidsMethodSecondLevelDeepes()
        {
            var firstLevelBid = new Bid(null, null);
            var firstBid = new Bid("1D!", null);
            var secondBid = new Bid("1H!", null);
            var thirdBid = new Bid("1NT", null);

            var rootBid = new Bid(null, null);

            firstLevelBid.NextBids.Add(secondBid);
            firstLevelBid.NextBids.Add(thirdBid);
            firstLevelBid.NextBids.Add(firstBid);

            rootBid.NextBids.Add(firstLevelBid);
            rootBid.SortNextBids();

            Assert.AreEqual(rootBid.NextBids[0].NextBids[0], firstBid);
            Assert.AreEqual(rootBid.NextBids[0].NextBids[1], secondBid);
            Assert.AreEqual(rootBid.NextBids[0].NextBids[2], thirdBid);
        }
Beispiel #4
0
        public static Bid ConvertWithRoot(IList<BiddingSequence> sequences)
        {
            var bidRoot = new Bid("root", null, null);

            foreach (var seq in sequences)
            {
                if(seq.Sequence==null)
                    continue;

                var sequenceWithoutWhitespaces = Regex.Replace(seq.Sequence, @"\s+", "");
                var splitedSequences = sequenceWithoutWhitespaces.Split(new char[] { ';' }, System.StringSplitOptions.RemoveEmptyEntries);
                if (!splitedSequences.Any())
                    continue;

                var currentBid = bidRoot;

                var wholeSequence = new StringBuilder();
                foreach (var seqBid in splitedSequences)
                {
                    if(wholeSequence.Length>0)
                        wholeSequence.Append(" ");
                    wholeSequence.Append(seqBid + ";");

                    var nextBid = currentBid.NextBids.FirstOrDefault(cb => cb.BidSymbol == seqBid);
                    if (nextBid == null)
                    {
                        nextBid = new Bid(seqBid, wholeSequence.ToString());
                        currentBid.NextBids.Add(nextBid);
                    }
                    currentBid = nextBid;
                }

                currentBid.OriginalObject.CopyValuesFrom(seq);
            }

            bidRoot.SortNextBids();

            return bidRoot;
        }
        public void SortNextBidsWithNt()
        {
            var firstLevelBid = new Bid(null, null);
            var firstBid = new Bid("1C!;1NT", null);
            var secondBid = new Bid("1C!; 2D!", null);
            var thirdBid = new Bid("1C!;2H!", null);

            var rootBid = new Bid(null, null);

            firstLevelBid.NextBids.Add(secondBid);
            firstLevelBid.NextBids.Add(thirdBid);
            firstLevelBid.NextBids.Add(firstBid);

            rootBid.NextBids.Add(firstLevelBid);
            rootBid.SortNextBids();

            Assert.AreEqual(rootBid.NextBids[0].NextBids[0], firstBid);
            Assert.AreEqual(rootBid.NextBids[0].NextBids[1], secondBid);
            Assert.AreEqual(rootBid.NextBids[0].NextBids[2], thirdBid);
        }