public void DescriptionIsCorrect()
        {
            //1S
            // -> 1NT
            // -> 2S

            var parentBid1 = new Bid("N:1S", "N:1S;");

            var description1 = "7-9 bal";
            var nestedBid1 = new Bid("E:1NT", "N:1S; E:1NT;", new BiddingSequence { Answer = description1 });

            var description2 = "7-9 3+Spades";
            var nestedBid2 = new Bid("E:2S", "N:1S; E:2S;", new BiddingSequence { Answer = description2 });

            parentBid1.NextBids.Add(nestedBid1);
            parentBid1.NextBids.Add(nestedBid2);

            IList<Bid> expected = new List<Bid> { parentBid1 };

            IList<BiddingSequence> biddingSequences = new List<BiddingSequence> {
                new BiddingSequence("N:1S; E:2S", description2),
                new BiddingSequence("N:1S; E:1NT", description1)
            };

            var result = BiddingConverter.Convert(biddingSequences);

            Assert.AreEqual(expected[0].OriginalObject.Answer, result[0].OriginalObject.Answer);
            Assert.AreEqual(expected[0].NextBids[0].OriginalObject.Answer, result[0].NextBids[0].OriginalObject.Answer);
        }
        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);
        }
Beispiel #3
0
        private static int Compare(Bid x, Bid y)
        {
            if (x == null && y == null)
                return 0;
            if (x == null || x.BidSymbol.Length<2)
                return -1;
            if (y == null || y.BidSymbol.Length < 2)
                return 1;
            var xBid = x.BidSymbol.Replace(" ","").Replace("pass", "-");
            var yBid = y.BidSymbol.Replace(" ","").Replace("pass", "-");

            //Luckly, [C]lub, [D]iamond, [H]eart, [S]spade, [NT] is an alphabetical order :)
            //And Level is alphabetial also

            return String.Compare(xBid, yBid, StringComparison.Ordinal);
        }
        public void OneSequenceWithTwoBidsShouldReturnNestedBids()
        {
            var description = "5+Spades";
            var nestedBid = new Bid("E:1S", null, new BiddingSequence { Answer = description });
            var parentBid = new Bid("N:1H", null);
            parentBid.NextBids.Add(nestedBid);

            IList <Bid> expected = new List<Bid> { parentBid};

            IList<BiddingSequence> biddingSequences = new List<BiddingSequence> { new BiddingSequence("N:1H; E:1S", description) };

            var result = BiddingConverter.Convert(biddingSequences);

            Assert.AreEqual(expected.Count, result.Count);
            Assert.AreEqual(expected[0].BidSymbol, result[0].BidSymbol);
            Assert.AreEqual(expected[0].NextBids.Count, result[0].NextBids.Count);
            Assert.AreEqual(expected[0].NextBids[0].BidSymbol, result[0].NextBids[0].BidSymbol);
        }
        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 #7
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 TwoSequenceWithDifferentFirstBidsShouldReturnTwoNestedBids()
        {
            var description1 = "5+Spades";
            var nestedBid1 = new Bid("E:1S", null, new BiddingSequence { Answer = description1 });
            var parentBid1 = new Bid("N:1H", null);

            var description2 = "7-9 bal";
            var nestedBid2 = new Bid("S:1NT", null, new BiddingSequence { Answer = description2 });
            var parentBid2 = new Bid("N:1S", null);

            parentBid1.NextBids.Add(nestedBid1);
            parentBid2.NextBids.Add(nestedBid2);

            IList<Bid> expected = new List<Bid> { parentBid1, parentBid2 };

            IList<BiddingSequence> biddingSequences = new List<BiddingSequence> {
                new BiddingSequence("N:1H; E:1S", description1),
                new BiddingSequence("N:1S; E:1NT", description1)
            };

            var result = BiddingConverter.Convert(biddingSequences);

            Assert.AreEqual(expected.Count, result.Count);
            Assert.AreEqual(expected[0].BidSymbol, result[0].BidSymbol);
            Assert.AreEqual(expected[0].NextBids.Count, result[0].NextBids.Count);
            Assert.AreEqual(expected[0].NextBids[0].BidSymbol, result[0].NextBids[0].BidSymbol);
        }
        public void TwoSequenceWithTheSameFirstBidsShouldReturnNestedBidsWithoutRepeatBasicSorting()
        {
            //1S
            // -> 1NT
            // -> 2S

            var parentBid1 = new Bid("N:1S", null);

            var description1 = "7-9 bal";
            var nestedBid1 = new Bid("E:1NT", null, new BiddingSequence { Answer = description1});

            var description2 = "7-9 3+Spades";
            var nestedBid2 = new Bid("E:2S", null, new BiddingSequence { Answer = description2 });

            parentBid1.NextBids.Add(nestedBid1);
            parentBid1.NextBids.Add(nestedBid2);

            IList<Bid> expected = new List<Bid> { parentBid1};

            IList<BiddingSequence> biddingSequences = new List<BiddingSequence> {
                new BiddingSequence("N:1S; E:2S", description1),
                new BiddingSequence("N:1S; E:1NT", description2)
            };

            var result = BiddingConverter.Convert(biddingSequences);

            Assert.AreEqual(expected.Count, result.Count);
            Assert.AreEqual(expected[0].NextBids.Count, result[0].NextBids.Count);
            Assert.AreEqual(expected[0].NextBids[0].BidSymbol, result[0].NextBids[0].BidSymbol);
        }
        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);
        }