Beispiel #1
0
        public void IsToitoiTest()
        {
            var tiles = Tiles34.Parse(man: "333", pin: "44555", sou: "111333");

            IsTrue(new Toitoi().IsConditionMet(Hand(tiles)));

            tiles = Tiles34.Parse(pin: "777888999", sou: "777", honors: "44");
            IsTrue(new Toitoi().IsConditionMet(Hand(tiles)));

            var tiles_  = TileIds.Parse(man: "333", pin: "44555", sou: "111333");
            var winTile = TileId.Parse(pin: "5");
            var melds   = new List <Meld>
            {
                MakeMeld(MeldType.PON, sou: "111"),
                MakeMeld(MeldType.PON, sou: "333")
            };
            var result = EstimateHandValue(tiles_, winTile, melds);

            AreEqual(null, result.Error);
            AreEqual(2, result.Han);
            AreEqual(40, result.Fu);
            AreEqual(1, result.Yaku.Count);

            tiles_  = TileIds.Parse(pin: "777888999", sou: "777", honors: "44");
            winTile = TileId.Parse(pin: "9");
            melds   = new List <Meld> {
                MakeMeld(MeldType.PON, sou: "777")
            };
            result = EstimateHandValue(tiles_, winTile, melds);
            AreEqual(null, result.Error);
            AreEqual(2, result.Han);
            AreEqual(40, result.Fu);
            AreEqual(1, result.Yaku.Count);
        }
Beispiel #2
0
        public void IsHonrotoTest()
        {
            var tiles = Tiles34.Parse(man: "111", sou: "111999", honors: "11222");

            IsTrue(new Honroto().IsConditionMet(Hand(tiles)));

            tiles = Tiles34.Parse(man: "1199", pin: "11", honors: "22334466");
            IsTrue(new Honroto().IsConditionMet(Hand(tiles)));

            var tiles_  = TileIds.Parse(man: "111", sou: "111999", honors: "11222");
            var winTile = TileId.Parse(honors: "2");
            var melds   = new List <Meld> {
                MakeMeld(MeldType.PON, sou: "111")
            };
            var result = EstimateHandValue(tiles_, winTile, melds);

            AreEqual(null, result.Error);
            AreEqual(4, result.Han);
            AreEqual(50, result.Fu);
            AreEqual(2, result.Yaku.Count);

            tiles_  = TileIds.Parse(man: "1199", pin: "11", honors: "22334466");
            winTile = TileId.Parse(man: "1");
            result  = EstimateHandValue(tiles_, winTile);
            AreEqual(4, result.Han);
            AreEqual(25, result.Fu);
        }
Beispiel #3
0
        public void IsSanshokuTest()
        {
            var tiles = Tiles34.Parse(man: "123", pin: "12345677", sou: "123");

            IsTrue(new Sanshoku().IsConditionMet(Hand(tiles)));

            tiles = Tiles34.Parse(man: "23455", pin: "123", sou: "123456");
            IsFalse(new Sanshoku().IsConditionMet(Hand(tiles)));

            var tiles_  = TileIds.Parse(man: "12399", pin: "123", sou: "123456");
            var winTile = TileId.Parse(man: "2");
            var result  = EstimateHandValue(tiles_, winTile);

            AreEqual(null, result.Error);
            AreEqual(2, result.Han);
            AreEqual(40, result.Fu);
            AreEqual(1, result.Yaku.Count);

            var melds = new List <Meld> {
                MakeMeld(MeldType.CHI, sou: "123")
            };

            result = EstimateHandValue(tiles_, winTile, melds);
            AreEqual(null, result.Error);
            AreEqual(1, result.Han);
            AreEqual(30, result.Fu);
            AreEqual(1, result.Yaku.Count);
        }
Beispiel #4
0
        public void IsJunchanTest()
        {
            var tiles = Tiles34.Parse(man: "123789", pin: "12399", sou: "789");

            IsTrue(new Junchan().IsConditionMet(Hand(tiles)));

            tiles = Tiles34.Parse(man: "111999", sou: "111", honors: "22333");
            IsFalse(new Junchan().IsConditionMet(Hand(tiles)));

            tiles = Tiles34.Parse(man: "111999", pin: "11999", sou: "111999");
            IsFalse(new Junchan().IsConditionMet(Hand(tiles)));

            var tiles_  = TileIds.Parse(man: "123789", pin: "12399", sou: "789");
            var winTile = TileId.Parse(man: "2");
            var result  = EstimateHandValue(tiles_, winTile);

            AreEqual(null, result.Error);
            AreEqual(3, result.Han);
            AreEqual(40, result.Fu);
            AreEqual(1, result.Yaku.Count);

            var melds = new List <Meld> {
                MakeMeld(MeldType.CHI, sou: "789")
            };

            result = EstimateHandValue(tiles_, winTile, melds);
            AreEqual(null, result.Error);
            AreEqual(2, result.Han);
            AreEqual(30, result.Fu);
            AreEqual(1, result.Yaku.Count);
        }
Beispiel #5
0
        public void IsIttsuTest()
        {
            var tiles = Tiles34.Parse(man: "123456789", sou: "123", honors: "22");

            IsTrue(new Ittsu().IsConditionMet(Hand(tiles)));

            tiles = Tiles34.Parse(man: "112233456789", honors: "22");
            IsTrue(new Ittsu().IsConditionMet(Hand(tiles)));

            tiles = Tiles34.Parse(man: "122334567789", honors: "11");
            IsFalse(new Ittsu().IsConditionMet(Hand(tiles)));

            var tiles_  = TileIds.Parse(man: "123456789", sou: "123", honors: "22");
            var winTile = TileId.Parse(sou: "3");
            var result  = EstimateHandValue(tiles_, winTile);

            AreEqual(null, result.Error);
            AreEqual(2, result.Han);
            AreEqual(40, result.Fu);
            AreEqual(1, result.Yaku.Count);

            var melds = new List <Meld> {
                MakeMeld(MeldType.CHI, man: "123")
            };

            result = EstimateHandValue(tiles_, winTile, melds);
            AreEqual(null, result.Error);
            AreEqual(1, result.Han);
            AreEqual(30, result.Fu);
            AreEqual(1, result.Yaku.Count);
        }
Beispiel #6
0
        public void IsRyanpeikouTest()
        {
            var tiles = Tiles34.Parse(man: "22", pin: "223344", sou: "112233");

            IsTrue(new Ryanpeikou().IsConditionMet(Hand(tiles, 1)));

            tiles = Tiles34.Parse(man: "22", sou: "111122223333");
            IsTrue(new Ryanpeikou().IsConditionMet(Hand(tiles, 1)));

            tiles = Tiles34.Parse(man: "123", pin: "23444", sou: "112233");
            IsFalse(new Ryanpeikou().IsConditionMet(Hand(tiles)));

            var tiles_  = TileIds.Parse(man: "33", pin: "223344", sou: "112233");
            var winTile = TileId.Parse(pin: "3");
            var result  = EstimateHandValue(tiles_, winTile);

            AreEqual(null, result.Error);
            AreEqual(3, result.Han);
            AreEqual(40, result.Fu);
            AreEqual(1, result.Yaku.Count);

            var melds = new List <Meld> {
                MakeMeld(MeldType.CHI, sou: "123")
            };

            result = EstimateHandValue(tiles_, winTile, melds);
            AreNotEqual(null, result.Error);
        }
Beispiel #7
0
        public void IsEastTest()
        {
            var(playerWind, roundWind) = (EAST, WEST);

            var tiles = Tiles34.Parse(man: "23422", sou: "234567", honors: "111");

            IsTrue(new YakuhaiEast().IsConditionMet(Hand(tiles), new object[] { playerWind, roundWind }));

            var tiles_  = TileIds.Parse(man: "23422", sou: "234567", honors: "111");
            var winTile = TileId.Parse(honors: "1");
            var result  = EstimateHandValue(tiles_, winTile, config: new HandConfig(
                                                isTsumo: false, isRiichi: false, playerWind: playerWind, roundWind: roundWind));

            AreEqual(null, result.Error);
            AreEqual(1, result.Han);
            AreEqual(40, result.Fu);
            AreEqual(1, result.Yaku.Count);

            roundWind = EAST;
            result    = EstimateHandValue(tiles_, winTile, config: new HandConfig(
                                              isTsumo: false, isRiichi: false, playerWind: playerWind, roundWind: roundWind));
            AreEqual(null, result.Error);
            AreEqual(2, result.Han);
            AreEqual(40, result.Fu);
            AreEqual(2, result.Yaku.Count);
        }
Beispiel #8
0
        //Tilesの各intをバイナリにしたものが右から3桁ずつ並ぶ
        //[0,1,2,3,4]=>0b100_011_010_001_000
        private static int ToMeld(Tiles34 tiles, int d)
        {
            var result = 0;

            for (var i = 0; i < 9; i++)
            {
                result |= tiles[d + i] << i * 3;
            }
            return(result);
        }
Beispiel #9
0
 private static void Init(Tiles34 tiles)
 {
     tiles_               = tiles;
     numberMelds_         = 0;
     numberTatsu_         = 0;
     numberPairs_         = 0;
     numberJidahai_       = 0;
     numberCharacters_    = 0;
     numberIsolatedTiles_ = 0;
     minShanten_          = 8;
 }
Beispiel #10
0
        public void OneLineStringToTilesSet()
        {
            var initialString = "789m456p555s11222z";
            var tiles         = Tiles34.Parse(str: initialString);

            AreEqual(34, tiles.Count);

            var newString = tiles.ToOneLineString();

            AreEqual(initialString, newString);
        }
Beispiel #11
0
        public void SecondOneSuitHandDividing()
        {
            var tiles34 = Tiles34.Parse(sou: "111123666789", honors: "11");
            var result  = DivideHand(tiles34);

            AreEqual(1, result.Count);
            CollectionAssert.AreEqual(new List <string>
            {
                "111s", "123s", "666s", "789s", "11z"
            }, ToString(result[0]));
        }
Beispiel #12
0
        public void HandWithPairsDividing()
        {
            var tiles34 = Tiles34.Parse(man: "23444", pin: "344556", sou: "333");
            var result  = DivideHand(tiles34);

            AreEqual(1, result.Count);
            CollectionAssert.AreEqual(new List <string>
            {
                "234m", "44m", "345p", "456p", "333s"
            }, ToString(result[0]));
        }
Beispiel #13
0
        public void SecondSimpleHandDividing()
        {
            var tiles34 = Tiles34.Parse(man: "123", pin: "123", sou: "123", honors: "11222");
            var result  = DivideHand(tiles34);

            AreEqual(1, result.Count);
            CollectionAssert.AreEqual(new List <string>
            {
                "123m", "123p", "123s", "11z", "222z"
            }, ToString(result[0]));
        }
Beispiel #14
0
        public void SimpleHandDividingTest()
        {
            var tiles34 = Tiles34.Parse(man: "234567", sou: "23455", honors: "777");
            var result  = DivideHand(tiles34);

            AreEqual(1, result.Count);
            CollectionAssert.AreEqual(new List <string>
            {
                "234m", "567m", "234s", "55s", "777z"
            }, ToString(result[0]));
        }
Beispiel #15
0
        public void OneSuitHandDividingTest()
        {
            var tiles34 = Tiles34.Parse(man: "11122233388899");
            var result  = DivideHand(tiles34);

            AreEqual(2, result.Count);
            CollectionAssert.AreEqual(new List <string>
            {
                "111m", "222m", "333m", "888m", "99m"
            }, ToString(result[0]));
            CollectionAssert.AreEqual(new List <string>
            {
                "123m", "123m", "123m", "888m", "99m"
            }, ToString(result[1]));
        }
Beispiel #16
0
        public void ChiitoitsuLikeHandDividing()
        {
            var tiles34 = Tiles34.Parse(man: "112233", pin: "99", sou: "445566");
            var result  = DivideHand(tiles34);

            AreEqual(2, result.Count);
            CollectionAssert.AreEqual(new List <string>
            {
                "11m", "22m", "33m", "99p", "44s", "55s", "66s"
            }, ToString(result[0]));
            CollectionAssert.AreEqual(new List <string>
            {
                "123m", "123m", "99p", "456s", "456s"
            }, ToString(result[1]));
        }
Beispiel #17
0
        public void IsDaisuushiTest()
        {
            var tiles = Tiles34.Parse(sou: "22", honors: "111222333444");

            IsTrue(new DaiSuushi().IsConditionMet(Hand(tiles)));

            var tiles_  = TileIds.Parse(sou: "22", honors: "111222333444");
            var winTile = TileId.Parse(honors: "4");
            var result  = EstimateHandValue(tiles_, winTile);

            AreEqual(null, result.Error);
            AreEqual(26, result.Han);
            AreEqual(60, result.Fu);
            AreEqual(1, result.Yaku.Count);
        }
Beispiel #18
0
        public void IsRyuisouTest()
        {
            var tiles = Tiles34.Parse(sou: "22334466888", honors: "666");

            IsTrue(new Ryuuiisou().IsConditionMet(Hand(tiles)));

            var tiles_  = TileIds.Parse(sou: "22334466888", honors: "666");
            var winTile = TileId.Parse(honors: "6");
            var result  = EstimateHandValue(tiles_, winTile);

            AreEqual(null, result.Error);
            AreEqual(13, result.Han);
            AreEqual(40, result.Fu);
            AreEqual(1, result.Yaku.Count);
        }
Beispiel #19
0
        public void IsDaisangenTest()
        {
            var tiles = Tiles34.Parse(man: "22", sou: "123", honors: "555666777");

            IsTrue(new Daisangen().IsConditionMet(Hand(tiles)));

            var tiles_  = TileIds.Parse(man: "22", sou: "123", honors: "555666777");
            var winTile = TileId.Parse(honors: "7");
            var result  = EstimateHandValue(tiles_, winTile);

            AreEqual(null, result.Error);
            AreEqual(13, result.Han);
            AreEqual(50, result.Fu);
            AreEqual(1, result.Yaku.Count);
        }
Beispiel #20
0
        public void IsChinrotoTest()
        {
            var tiles = Tiles34.Parse(man: "111999", pin: "99", sou: "111999");

            IsTrue(new Chinroutou().IsConditionMet(Hand(tiles)));

            var tiles_  = TileIds.Parse(man: "111999", pin: "99", sou: "111222");
            var winTile = TileId.Parse(pin: "9");
            var result  = EstimateHandValue(tiles_, winTile);

            AreEqual(null, result.Error);
            AreEqual(26, result.Han);
            AreEqual(60, result.Fu);
            AreEqual(1, result.Yaku.Count);
        }
Beispiel #21
0
        public void IsChunTest()
        {
            var tiles = Tiles34.Parse(man: "23422", sou: "234567", honors: "777");

            IsTrue(new Chun().IsConditionMet(Hand(tiles)));

            var tiles_  = TileIds.Parse(man: "23422", sou: "234567", honors: "777");
            var winTile = TileId.Parse(honors: "7");
            var result  = EstimateHandValue(tiles_, winTile, config: new HandConfig(isTsumo: false, isRiichi: false));

            AreEqual(null, result.Error);
            AreEqual(1, result.Han);
            AreEqual(40, result.Fu);
            AreEqual(1, result.Yaku.Count);
        }
Beispiel #22
0
        public void ThirdOneSuitHandDividing()
        {
            var tiles34 = Tiles34.Parse(pin: "234777888999", honors: "22");
            var melds   = new List <Meld>
            {
                MakeMeld(MeldType.CHI, pin: "789"),
                MakeMeld(MeldType.CHI, pin: "234")
            };
            var result = DivideHand(tiles34, melds);

            AreEqual(1, result.Count);
            CollectionAssert.AreEqual(new List <string>
            {
                "234p", "789p", "789p", "789p", "22z"
            }, ToString(result[0]));
        }
Beispiel #23
0
        public void IsChitoitsuHandTest()
        {
            var tiles = Tiles34.Parse(man: "113355", pin: "11", sou: "113355");

            IsTrue(new Chiitoitsu().IsConditionMet(Hand(tiles)));

            tiles = Tiles34.Parse(man: "2299", pin: "1199", sou: "2299", honors: "44");
            IsTrue(new Chiitoitsu().IsConditionMet(Hand(tiles)));

            var tiles_  = TileIds.Parse(man: "113355", pin: "11", sou: "113355");
            var winTile = TileId.Parse(pin: "1");
            var result  = EstimateHandValue(tiles_, winTile);

            AreEqual(null, result.Error);
            AreEqual(2, result.Han);
            AreEqual(25, result.Fu);
            AreEqual(1, result.Yaku.Count);
        }
Beispiel #24
0
        public void IsTanyaoTest()
        {
            var tiles = Tiles34.Parse(man: "234567", pin: "22", sou: "234567");

            IsTrue(new Tanyao().IsConditionMet(Hand(tiles)));

            tiles = Tiles34.Parse(man: "234567", pin: "22", sou: "123456");
            IsFalse(new Tanyao().IsConditionMet(Hand(tiles)));

            tiles = Tiles34.Parse(man: "234567", sou: "234567", honors: "22");
            IsFalse(new Tanyao().IsConditionMet(Hand(tiles)));

            var tiles_  = TileIds.Parse(man: "234567", pin: "22", sou: "234567");
            var winTile = TileId.Parse(man: "7");
            var result  = EstimateHandValue(tiles_, winTile, config: new HandConfig(isTsumo: false, isRiichi: true));

            AreEqual(null, result.Error);
            AreEqual(3, result.Han);
            AreEqual(30, result.Fu);
            AreEqual(3, result.Yaku.Count);

            tiles_  = TileIds.Parse(man: "234567", pin: "22", sou: "234567");
            winTile = TileId.Parse(man: "7");
            var melds = new List <Meld> {
                MakeMeld(MeldType.CHI, sou: "234")
            };

            result = EstimateHandValue(
                tiles_, winTile, melds, config: new HandConfig(options: new OptionalRules(hasOpenTanyao: true)));
            AreEqual(null, result.Error);
            AreEqual(1, result.Han);
            AreEqual(30, result.Fu);
            AreEqual(1, result.Yaku.Count);

            tiles_  = TileIds.Parse(man: "234567", pin: "22", sou: "234567");
            winTile = TileId.Parse(man: "7");
            melds   = new List <Meld> {
                MakeMeld(MeldType.CHI, sou: "234")
            };
            result = EstimateHandValue(
                tiles_, winTile, melds, config: new HandConfig(options: new OptionalRules(hasOpenTanyao: false)));
            AreNotEqual(null, result.Error);
        }
Beispiel #25
0
        public void IsSanankouTest()
        {
            var tiles   = Tiles34.Parse(man: "333", pin: "44555", sou: "111444");
            var winTile = TileId.Parse(sou: "4");
            var melds   = new List <Meld>
            {
                MakeMeld(MeldType.PON, sou: "111"),
                MakeMeld(MeldType.PON, sou: "444")
            };

            IsFalse(new Sanankou().IsConditionMet(Hand(tiles), new object[] { winTile, melds, false }));

            melds = new List <Meld> {
                MakeMeld(MeldType.PON, sou: "111")
            };
            IsFalse(new Sanankou().IsConditionMet(Hand(tiles), new object[] { winTile, melds, false }));
            IsTrue(new Sanankou().IsConditionMet(Hand(tiles), new object[] { winTile, melds, true }));

            tiles   = Tiles34.Parse(pin: "444789999", honors: "22333");
            winTile = TileId.Parse(pin: "9");
            IsTrue(new Sanankou().IsConditionMet(Hand(tiles), new object[] { winTile, new List <Meld>(), false }));

            melds = new List <Meld> {
                MakeMeld(MeldType.CHI, pin: "456")
            };
            tiles   = Tiles34.Parse(pin: "222456666777", honors: "77");
            winTile = TileId.Parse(pin: "6");
            IsFalse(new Sanankou().IsConditionMet(Hand(tiles), new object[] { winTile, melds, false }));

            var tiles_ = TileIds.Parse(man: "333", pin: "44555", sou: "123444");

            melds = new List <Meld> {
                MakeMeld(MeldType.CHI, sou: "123")
            };
            winTile = TileId.Parse(pin: "5");
            var result = EstimateHandValue(tiles_, winTile, melds, config: new HandConfig(isTsumo: true));

            AreEqual(null, result.Error);
            AreEqual(2, result.Han);
            AreEqual(40, result.Fu);
            AreEqual(1, result.Yaku.Count);
        }
Beispiel #26
0
        private static TileKinds FindPairs(Tiles34 tiles34,
                                           int firstIndex  = 0,
                                           int secondIndex = 33)
        {
            var pairIndices = new TileKinds();

            for (var x = firstIndex; x <= secondIndex; x++)
            {
                //字牌の刻子は無視する(途中で分断して対子にはできない)
                if (HONOR_INDICES.Contains(x) && tiles34[x] != 2)
                {
                    continue;
                }

                if (tiles34[x] >= 2)
                {
                    pairIndices.Add(new TileKind(x));
                }
            }
            return(pairIndices);
        }
Beispiel #27
0
        public void IsTsuisouTest()
        {
            var tiles = Tiles34.Parse(honors: "11122233366677");

            IsTrue(new Tsuuiisou().IsConditionMet(Hand(tiles)));

            tiles = Tiles34.Parse(honors: "11223344556677");
            IsTrue(new Tsuuiisou().IsConditionMet(Hand(tiles)));

            tiles = Tiles34.Parse(honors: "1133445577", pin: "88", sou: "11");
            IsFalse(new Tsuuiisou().IsConditionMet(Hand(tiles)));

            var tiles_  = TileIds.Parse(honors: "11223344556677");
            var winTile = TileId.Parse(honors: "7");
            var result  = EstimateHandValue(tiles_, winTile);

            AreEqual(null, result.Error);
            AreEqual(13, result.Han);
            AreEqual(25, result.Fu);
            AreEqual(1, result.Yaku.Count);
        }
Beispiel #28
0
        public void IsSanshokuDoukouTest()
        {
            var tiles = Tiles34.Parse(man: "111", pin: "11145677", sou: "111");

            IsTrue(new SanshokuDoukou().IsConditionMet(Hand(tiles)));

            tiles = Tiles34.Parse(man: "222", pin: "33344455", sou: "111");
            IsFalse(new SanshokuDoukou().IsConditionMet(Hand(tiles)));

            var tiles_  = TileIds.Parse(man: "222", pin: "22245699", sou: "222");
            var winTile = TileId.Parse(pin: "9");
            var melds   = new List <Meld> {
                MakeMeld(MeldType.PON, sou: "222")
            };
            var result = EstimateHandValue(tiles_, winTile, melds);

            AreEqual(null, result.Error);
            AreEqual(2, result.Han);
            AreEqual(40, result.Fu);
            AreEqual(1, result.Yaku.Count);
        }
Beispiel #29
0
        public void FindIsolatedTilesTest()
        {
            var hand     = Tiles34.Parse(man: "25", pin: "15678", sou: "1369", honors: "124");
            var isoTiles = hand.FindIsolatedTileIndices();

            IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(man: "1").Value));
            IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(man: "2").Value));
            IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(man: "3").Value));
            IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(man: "4").Value));
            IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(man: "5").Value));
            IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(man: "6").Value));
            IsTrue(isoTiles.Select(t => t.Value).Contains(StringToTileKind(man: "7").Value));
            IsTrue(isoTiles.Select(t => t.Value).Contains(StringToTileKind(man: "8").Value));
            IsTrue(isoTiles.Select(t => t.Value).Contains(StringToTileKind(man: "9").Value));
            IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(pin: "1").Value));
            IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(pin: "2").Value));
            IsTrue(isoTiles.Select(t => t.Value).Contains(StringToTileKind(pin: "3").Value));
            IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(pin: "4").Value));
            IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(pin: "5").Value));
            IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(pin: "6").Value));
            IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(pin: "7").Value));
            IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(pin: "8").Value));
            IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(pin: "9").Value));
            IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(sou: "1").Value));
            IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(sou: "2").Value));
            IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(sou: "3").Value));
            IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(sou: "4").Value));
            IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(sou: "5").Value));
            IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(sou: "6").Value));
            IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(sou: "7").Value));
            IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(sou: "8").Value));
            IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(sou: "9").Value));
            IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(honors: "1").Value));
            IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(honors: "2").Value));
            IsTrue(isoTiles.Select(t => t.Value).Contains(StringToTileKind(honors: "3").Value));
            IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(honors: "4").Value));
            IsTrue(isoTiles.Select(t => t.Value).Contains(StringToTileKind(honors: "5").Value));
            IsTrue(isoTiles.Select(t => t.Value).Contains(StringToTileKind(honors: "6").Value));
            IsTrue(isoTiles.Select(t => t.Value).Contains(StringToTileKind(honors: "7").Value));
        }
Beispiel #30
0
        public void IsStrictlyIsolatedTilesTest()
        {
            var hand = Tiles34.Parse(man: "25", pin: "15678", sou: "1399", honors: "1224");

            IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(man: "1")));
            IsTrue(hand.IsTileStrictlyIsolated(StringToTileKind(man: "2")));
            IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(man: "3")));
            IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(man: "4")));
            IsTrue(hand.IsTileStrictlyIsolated(StringToTileKind(man: "5")));
            IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(man: "6")));
            IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(man: "7")));
            IsTrue(hand.IsTileStrictlyIsolated(StringToTileKind(man: "8")));
            IsTrue(hand.IsTileStrictlyIsolated(StringToTileKind(man: "9")));
            IsTrue(hand.IsTileStrictlyIsolated(StringToTileKind(pin: "1")));
            IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(pin: "2")));
            IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(pin: "3")));
            IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(pin: "4")));
            IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(pin: "5")));
            IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(pin: "6")));
            IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(pin: "7")));
            IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(pin: "8")));
            IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(pin: "9")));
            IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(sou: "1")));
            IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(sou: "2")));
            IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(sou: "3")));
            IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(sou: "4")));
            IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(sou: "5")));
            IsTrue(hand.IsTileStrictlyIsolated(StringToTileKind(sou: "6")));
            IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(sou: "7")));
            IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(sou: "8")));
            IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(sou: "9")));
            IsTrue(hand.IsTileStrictlyIsolated(StringToTileKind(honors: "1")));
            IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(honors: "2")));
            IsTrue(hand.IsTileStrictlyIsolated(StringToTileKind(honors: "3")));
            IsTrue(hand.IsTileStrictlyIsolated(StringToTileKind(honors: "4")));
            IsTrue(hand.IsTileStrictlyIsolated(StringToTileKind(honors: "5")));
            IsTrue(hand.IsTileStrictlyIsolated(StringToTileKind(honors: "6")));
            IsTrue(hand.IsTileStrictlyIsolated(StringToTileKind(honors: "7")));
        }