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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
 public UkeIreCalculator(ShorthandParser shorthandParser)
     : base(shorthandParser)
 {
 }
Exemplo n.º 14
0
 public HandCalculator(ShorthandParser initial)
     : this(initial.Tiles, initial.ManzuMeldIds, initial.PinzuMeldIds, initial.SouzuMeldIds, initial.JihaiMeldIds)
 {
 }