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