public void SomeHandsByRon(string handString, int roundWind, int seatWind, string discardString, Yaku expectedYaku) { var parser = new ShorthandParser(handString); var tiles = parser.Tiles.Select(t => Tile.FromTileType(t, 0)).ToList(); var melds = new List <State.Meld>(); foreach (var meld in parser.Melds) { var meldTiles = meld.Tiles.Select(t => Tile.FromTileType(t, 0)).ToList(); if (meld.MeldId < 8) { melds.Add(State.Meld.Chii(meldTiles, meldTiles.First())); } else if (meld.MeldId < 7 + 9) { melds.Add(State.Meld.Pon(meldTiles, meldTiles.First())); } else { melds.Add(State.Meld.Ankan(meld.Tiles.First())); } } var winningTile = TileType.FromString(discardString); var(yaku, fu) = ClassicScoreCalculator.Ron(winningTile, roundWind, seatWind, melds, tiles); Assert.Equal(expectedYaku, yaku); }
public void JustSomeHands(string hand, int expected) { var parser = new ShorthandParser(hand); var c = new HandCalculator(parser); var actual = c.Shanten; Assert.Equal(expected, actual); }
public void JustSomeHand(string hand, int expected) { var parser = new ShorthandParser(hand); var counts = parser.Concealed.ToArray(); var s = Shanten5Calculator.Shanten(counts, (byte)parser.Melds.Count()); Assert.Equal(expected, s); }
public void JustSomeHands(string hand, int[] expected) { var parser = new ShorthandParser(hand); var c = new HandCalculator(parser); var actual = c.GetUkeIreFor13(); Assert.Equal(expected, actual); }
public void WithPon(string hand, int tileTypeId, int expectedShanten) { var parser = new ShorthandParser(hand); var c = new UkeIreCalculator(parser); var t = c.WithPon(TileType.FromTileTypeId(tileTypeId)); var actual = t.Shanten; Assert.Equal(expectedShanten, actual); }
public void HighestUkeIreDiscard(string hand, string expectedTileType) { var expected = TileType.FromString(expectedTileType).TileTypeId; var parser = new ShorthandParser(hand); var c = new UkeIreCalculator(parser); var actual = c.GetHighestUkeIreDiscard(); Assert.Equal(expected, actual); }
public void SomeHandByTsumo(string handString, int roundWind, int seatWind, string discardString, Yaku expectedYaku) { var discard = TileType.FromString(discardString); var sp = new ShorthandParser(handString); var hand = new HandCalculator(sp); var wind = new WindScoringData(roundWind, seatWind); var(yaku, fu) = ScoreCalculator.TsumoWithYaku(hand.ScoringData, wind, discard); Assert.Equal(expectedYaku, yaku); }
public void TotalFuTsumo(string handString, int roundWind, int seatWind, string drawString, int expectedFu) { var draw = TileType.FromString(drawString); var sp = new ShorthandParser(handString); var hand = new HandCalculator(sp); var wind = new WindScoringData(roundWind, seatWind); var(han, fu) = ScoreCalculator.Tsumo(hand.ScoringData, wind, draw); Assert.Equal(expectedFu, fu); }
public void BlockingDaiminkan() { var parser = new ShorthandParser("12223m11222333z"); var c = new HandCalculator(parser); var m2 = TileType.FromSuitAndIndex(Suit.Manzu, 1); c.Daiminkan(m2); var actual = c.Shanten; Assert.Equal(1, actual); }
public void ChiitoiDiscard() { var parser = new ShorthandParser("114477m114477p11s"); var c = new HandCalculator(parser); c.Discard(TileType.FromSuitAndIndex(Suit.Manzu, 0)); c.Draw(TileType.FromSuitAndIndex(Suit.Jihai, 6)); c.Discard(TileType.FromSuitAndIndex(Suit.Manzu, 3)); var actual = c.Shanten; Assert.Equal(1, actual); }
public void BlockingPon() { var parser = new ShorthandParser("1223m112223z123M"); var c = new HandCalculator(parser); var m2 = TileType.FromSuitAndIndex(Suit.Manzu, 1); c.Pon(m2); var shaa = TileType.FromSuitAndIndex(Suit.Jihai, 2); c.Discard(shaa); var actual = c.Shanten; Assert.Equal(1, actual); }
public void BlockingShouminkan() { var parser = new ShorthandParser("1223m112223337z"); var c = new HandCalculator(parser); var m2 = TileType.FromSuitAndIndex(Suit.Manzu, 1); var z7 = TileType.FromSuitAndIndex(Suit.Jihai, 6); c.Pon(m2); c.Discard(z7); c.Draw(m2); c.Shouminkan(m2); var actual = c.Shanten; Assert.Equal(1, actual); }
public UkeIreCalculator(ShorthandParser shorthandParser) : base(shorthandParser) { }
public HandCalculator(ShorthandParser initial) : this(initial.Tiles, initial.ManzuMeldIds, initial.PinzuMeldIds, initial.SouzuMeldIds, initial.JihaiMeldIds) { }