Esempio n. 1
0
        public void CamelHelper_TrapSpace_IsValid_Pos0Invalid()
        {
            var startingPositions = TestHelper.ConvertToStartingPositions("1,0 2,1 2,2 3,3 3,4");
            var gamestate         = new ImplementedGameState(4, startingPositions);

            Assert.AreEqual(false, CamelHelper.IsValidTrapSpace(gamestate, 0, 0), "valid at pos 0");
        }
Esempio n. 2
0
        public void RulesEngine_PlacePluss_OutOfBounds()
        {
            // 1: blue | 2: green, white | 3: red, yellow
            var startingPositions = TestHelper.ConvertToStartingPositions("1,0 2,1 2,2 3,3 3,4");
            var gamestate         = new ImplementedGameState(2, startingPositions);

            var engine = new RulesEngine(gamestate, seed: 2);

            var change = engine.Getchange(0, new PlayerAction()
            {
                CamelAction = CamelAction.PlacePlussTrap, Value = -1
            });

            Assert.IsTrue(change == null, "illegal space 1");

            change = engine.Getchange(0, new PlayerAction()
            {
                CamelAction = CamelAction.PlacePlussTrap, Value = 16
            });
            Assert.IsTrue(change == null, "illegal space 16");

            change = engine.Getchange(0, new PlayerAction()
            {
                CamelAction = CamelAction.PlacePlussTrap, Value = 100
            });
            Assert.IsTrue(change == null, "illegal space 100");
        }
Esempio n. 3
0
        public void RulesEngine_PlacePluss_OnOwnPlussTrap()
        {
            // 1: blue | 2: green, white | 3: red, yellow
            var startingPositions = TestHelper.ConvertToStartingPositions("1,0 2,1 2,2 3,3 3,4");
            var gamestate         = new ImplementedGameState(2, startingPositions);

            gamestate.Traps[0].Location = 5;
            gamestate.Traps[0].Move     = 1;
            var engine = new RulesEngine(gamestate, seed: 2);

            var change = engine.Getchange(0, new PlayerAction()
            {
                CamelAction = CamelAction.PlacePlussTrap, Value = 4
            });

            Assert.IsTrue(change != null, "legal space 4");

            change = engine.Getchange(0, new PlayerAction()
            {
                CamelAction = CamelAction.PlacePlussTrap, Value = 5
            });
            Assert.IsTrue(change == null, "illegal space 5");

            change = engine.Getchange(0, new PlayerAction()
            {
                CamelAction = CamelAction.PlacePlussTrap, Value = 6
            });
            Assert.IsTrue(change != null, "legal space 6");
        }
Esempio n. 4
0
        private GameState Setup()
        {
            // 1: blue | 2: green, white | 3: red, yellow
            var startingPositions = TestHelper.ConvertToStartingPositions("1,0 2,1 2,2 3,3 3,4");
            var gamestate         = new ImplementedGameState(4, startingPositions);

            return(gamestate);
        }
Esempio n. 5
0
        public void CamelHelper_TrapSpace_IsValid_NonOccupied()
        {
            var startingPositions = TestHelper.ConvertToStartingPositions("1,0 2,1 2,2 3,3 3,4");
            var gamestate         = new ImplementedGameState(4, startingPositions);

            for (var i = 4; i < 16; i++)
            {
                Assert.AreEqual(true, CamelHelper.IsValidTrapSpace(gamestate, 0, i), $"valid at pos {i}");
            }
        }
Esempio n. 6
0
        public void CamelHelper_TrapSpace_IsValid_EnemyTrap()
        {
            var startingPositions = TestHelper.ConvertToStartingPositions("1,0 2,1 2,2 3,3 3,4");
            var gamestate         = new ImplementedGameState(4, startingPositions);

            gamestate.Traps[0].Location = 5;

            Assert.AreEqual(false, CamelHelper.IsValidTrapSpace(gamestate, 1, 4), "Invalid at pos 4");
            Assert.AreEqual(false, CamelHelper.IsValidTrapSpace(gamestate, 1, 5), "Invalid at pos 5");
            Assert.AreEqual(false, CamelHelper.IsValidTrapSpace(gamestate, 1, 6), "Invalid at pos 6");
        }
Esempio n. 7
0
        public void CamelHelper_TrapSpace_IsValid_OwnTrapMinus()
        {
            var startingPositions = TestHelper.ConvertToStartingPositions("1,0 2,1 2,2 3,3 3,4");
            var gamestate         = new ImplementedGameState(4, startingPositions);

            gamestate.Traps[1].Location = 5;
            gamestate.Traps[1].Move     = -1;

            Assert.AreEqual(true, CamelHelper.IsValidTrapSpace(gamestate, 1, 4), "valid at pos 4");
            Assert.AreEqual(true, CamelHelper.IsValidTrapSpace(gamestate, 1, 5), "valid at pos 5");
            Assert.AreEqual(true, CamelHelper.IsValidTrapSpace(gamestate, 1, 6), "valid at pos 6");
        }
Esempio n. 8
0
        public void CamelHelper_TrapSpace_GetFreeTrapSpaces_Others()
        {
            var startingPositions = TestHelper.ConvertToStartingPositions("2,0 2,1 2,2 5,3 5,4");
            var gamestate         = new ImplementedGameState(4, startingPositions);

            gamestate.Traps[1].Location = 3;
            gamestate.Traps[2].Location = 9;

            var availible = string.Join(" ", CamelHelper.GetFreeTrapSpaces(gamestate, 0, positive: true, maxLookahead: 20).OrderBy(x => x));

            Assert.AreEqual("6 7 11 12 13 14 15", availible);
        }
Esempio n. 9
0
        public void RulesEngine_ThrowDice_NoAction()
        {
            // 1: blue | 2: green, white | 3: red, yellow
            var startingPositions = TestHelper.ConvertToStartingPositions("1,0 2,1 2,2 3,3 3,4");
            var gamestate         = new ImplementedGameState(4, startingPositions);
            var engine            = new RulesEngine(gamestate, seed: 1);
            var change            = engine.Getchange(0, new PlayerAction()
            {
                CamelAction = CamelAction.NoAction
            });

            Assert.IsTrue(change is NoActionStateChange);
        }
Esempio n. 10
0
        public void Unit_RevertState_DiceThrow()
        {
            // 1: blue, green, white | 2: red, yellow
            var startString       = "1,0 1,1 1,2 2,3 2,4";
            var startingPositions = TestHelper.ConvertToStartingPositions(startString);
            var gamestate         = new ImplementedGameState(2, startingPositions, 16, 3);
            var change            = new DiceThrowStateChange(0, CamelColor.Blue, 1);

            // 2: red, yellow, blue, green, white
            gamestate.Apply(change).Revert(change);

            AssertBaseState(gamestate, startString);
        }
        public void Unit_State_DiceThrow()
        {
            // 1: blue, green, white | 2: red, yellow
            var startingPositions = TestHelper.ConvertToStartingPositions("1,0 1,1 1,2 2,3 2,4");
            var gamestate         = new ImplementedGameState(2, startingPositions, 16, 3);
            var change            = new DiceThrowStateChange(0, CamelColor.Blue, 1);

            // 2: red, yellow, blue, green, white
            gamestate.Apply(change);

            Assert.AreEqual("2,2 2,3 2,4 2,0 2,1", gamestate.CamelPositionToString(), "Camel positions");

            Assert.AreEqual(4, gamestate.Money[0], "money");
        }
Esempio n. 12
0
        public void CamelHelper_GetCamelWins_Full_NoTraps()
        {
            // 1: blue, green, white | 2: red, yellow
            var startString       = "1,0 1,1 1,2 2,3 2,4";
            var startingPositions = TestHelper.ConvertToStartingPositions(startString);
            var gamestate         = new ImplementedGameState(1, startingPositions);
            var wins = CamelHelper.GetCamelWins(gamestate, out var money);

            Assert.AreEqual(3107, wins[CamelColor.Blue], "blue");
            Assert.AreEqual(6226, wins[CamelColor.Green], "green");
            Assert.AreEqual(9329, wins[CamelColor.White], "white");
            Assert.AreEqual(3302, wins[CamelColor.Red], "red");
            Assert.AreEqual(7196, wins[CamelColor.Yellow], "yellow");
        }
Esempio n. 13
0
        public void RulesEngine_ScoreGame_NoBets()
        {
            // 1: blue | 2: green, white | 3: red, yellow
            var startingPositions = TestHelper.ConvertToStartingPositions("1,0 2,1 2,2 3,3 3,4");
            var gamestate         = new ImplementedGameState(4, startingPositions);

            var engine = new RulesEngine(gamestate, seed: 1);

            engine.ScoreGame();

            Assert.AreEqual(3, gamestate.Money[0], "money p0");
            Assert.AreEqual(3, gamestate.Money[1], "money p1");
            Assert.AreEqual(3, gamestate.Money[2], "money p2");
            Assert.AreEqual(3, gamestate.Money[3], "money p3");
        }
Esempio n. 14
0
        public void RulesEngine_ScoreGame_Losers()
        {
            // 1: blue | 2: green, white | 3: red, yellow
            var startingPositions = TestHelper.ConvertToStartingPositions("1,0 2,1 2,2 3,3 3,4");
            var gamestate         = new ImplementedGameState(8, startingPositions);

            gamestate.LoserBets.Add(new GameEndBet()
            {
                Player = 7, CamelColor = CamelColor.Blue
            });                                                                                     // 8
            gamestate.LoserBets.Add(new GameEndBet()
            {
                Player = 5, CamelColor = CamelColor.Blue
            });                                                                                     // 5
            gamestate.LoserBets.Add(new GameEndBet()
            {
                Player = 3, CamelColor = CamelColor.Blue
            });                                                                                     // 3
            gamestate.LoserBets.Add(new GameEndBet()
            {
                Player = 2, CamelColor = CamelColor.Blue
            });                                                                                     // 2
            gamestate.LoserBets.Add(new GameEndBet()
            {
                Player = 1, CamelColor = CamelColor.Blue
            });
            gamestate.LoserBets.Add(new GameEndBet()
            {
                Player = 0, CamelColor = CamelColor.Blue
            });
            gamestate.LoserBets.Add(new GameEndBet()
            {
                Player = 6, CamelColor = CamelColor.Blue
            });

            var engine = new RulesEngine(gamestate, seed: 1);

            engine.ScoreGame(); // 8, 5, 3, 2, 1, 1, 1, 1, 1, 1, 1

            Assert.AreEqual(4, gamestate.Money[0], "money p0");
            Assert.AreEqual(4, gamestate.Money[1], "money p1");
            Assert.AreEqual(5, gamestate.Money[2], "money p2");
            Assert.AreEqual(6, gamestate.Money[3], "money p3");
            Assert.AreEqual(3, gamestate.Money[4], "money p4");
            Assert.AreEqual(8, gamestate.Money[5], "money p5");
            Assert.AreEqual(4, gamestate.Money[6], "money p6");
            Assert.AreEqual(11, gamestate.Money[7], "money p7");
        }
Esempio n. 15
0
        public void RulesEngine_ThrowDice_ThrowDice()
        {
            // 1: blue | 2: green, white | 3: red, yellow
            var startingPositions = TestHelper.ConvertToStartingPositions("1,0 2,1 2,2 3,3 3,4");
            var gamestate         = new ImplementedGameState(2, startingPositions);
            var engine            = new RulesEngine(gamestate, seed: 1);
            var change            = engine.Getchange(1, new PlayerAction()
            {
                CamelAction = CamelAction.ThrowDice
            }) as DiceThrowStateChange;

            Assert.IsTrue(change != null, "is dice throw");
            Assert.AreEqual(CamelColor.Green, change.Color, "dice color");
            Assert.AreEqual(1, change.Value, "dice value");
            Assert.AreEqual(1, change.Player, "player");
        }
Esempio n. 16
0
        public void Unit_RevertState_DiceThrow_Trap4()
        {
            // 1: blue, green, white | trap | 3: red, yellow
            var startString       = "1,0 1,1 1,2 3,3 3,4";
            var startingPositions = TestHelper.ConvertToStartingPositions(startString);
            var gamestate         = new ImplementedGameState(2, startingPositions, 16, 3);

            gamestate.Traps[1].Location = 2;
            gamestate.Traps[1].Move     = -1;
            var change = new DiceThrowStateChange(0, CamelColor.Green, 1);

            // 1: green, white, BLUE | trap | 3: red, yellow
            gamestate.Apply(change).Revert(change);

            AssertBaseState(gamestate, startString);
        }
Esempio n. 17
0
        public void RulesEngine_PickCard_Invalid()
        {
            // 1: blue | 2: green, white | 3: red, yellow
            var startingPositions = TestHelper.ConvertToStartingPositions("1,0 2,1 2,2 3,3 3,4");
            var gamestate         = new ImplementedGameState(2, startingPositions);

            gamestate.BettingCards.RemoveAll(x => x.CamelColor == CamelColor.Red);

            var engine = new RulesEngine(gamestate, seed: 2);
            var change = engine.Getchange(0, new PlayerAction()
            {
                CamelAction = CamelAction.PickCard, Color = CamelColor.Red
            });

            Assert.IsTrue(change == null, "is illegal");
        }
Esempio n. 18
0
        public void CamelHelper_GetCamelWins_SimpleWin_Stacked()
        {
            // 1: blue, green, white | 2: red, yellow
            var startString       = "1,0 1,1 1,2 2,3 2,4";
            var startingPositions = TestHelper.ConvertToStartingPositions(startString);
            var gamestate         = new ImplementedGameState(1, startingPositions);

            gamestate.RemainingDice.RemoveAll(x => x != CamelColor.Red);

            var wins = CamelHelper.GetCamelWins(gamestate, out var money);

            Assert.AreEqual(0, wins[CamelColor.Blue], "blue");
            Assert.AreEqual(0, wins[CamelColor.Green], "green");
            Assert.AreEqual(0, wins[CamelColor.White], "white");
            Assert.AreEqual(0, wins[CamelColor.Red], "red");
            Assert.AreEqual(3, wins[CamelColor.Yellow], "yellow");
        }
        public void Unit_State_DiceThrow_Trap3()
        {
            // 1: blue, green, white | trap | 3: red, yellow
            var startingPositions = TestHelper.ConvertToStartingPositions("1,0 1,1 1,2 3,3 3,4");
            var gamestate         = new ImplementedGameState(2, startingPositions, 16, 3);

            gamestate.Traps[0].Location = 2;
            gamestate.Traps[0].Move     = -1;
            var change = new DiceThrowStateChange(0, CamelColor.Green, 1);

            // 1: green, white, BLUE | trap | 3: red, yellow
            gamestate.Apply(change);

            Assert.AreEqual("1,2 1,0 1,1 3,3 3,4", gamestate.CamelPositionToString(), "Camel positions");

            Assert.AreEqual(5, gamestate.Money[0], "money");
        }
Esempio n. 20
0
        public void CamelHelper_GetallGameStates_Depth_0()
        {
            // 1: blue, green, white | 2: red, yellow
            var startString       = "1,0 1,1 1,2 2,3 2,4";
            var startingPositions = TestHelper.ConvertToStartingPositions(startString);
            var gamestate         = new ImplementedGameState(1, startingPositions);
            var states            = gamestate.GetAllGameEndStates(0);

            Assert.AreEqual(15, states.Count, "final states");

            var positions = states.Select(CamelsToString).ToList();

            foreach (var pos in _depth0Positions)
            {
                Assert.IsTrue(positions.Contains(pos), "Can't find state: " + pos);
            }
        }
Esempio n. 21
0
        public void RulesEngine_PickCard_Valid5()
        {
            // 1: blue | 2: green, white | 3: red, yellow
            var startingPositions = TestHelper.ConvertToStartingPositions("1,0 2,1 2,2 3,3 3,4");
            var gamestate         = new ImplementedGameState(2, startingPositions);

            var engine = new RulesEngine(gamestate, seed: 2);
            var change = engine.Getchange(0, new PlayerAction()
            {
                CamelAction = CamelAction.PickCard, Color = CamelColor.Red
            }) as PickCardStateChange;

            Assert.IsTrue(change != null, "is pick card");
            Assert.AreEqual(CamelColor.Red, change.Color, "card color");
            Assert.AreEqual(0, change.Player, "player");
            Assert.AreEqual(5, change.Value, "card value");
        }
Esempio n. 22
0
        public void RulesEngine_PlacePluss_ValidSpace()
        {
            // 1: blue | 2: green, white | 3: red, yellow
            var startingPositions = TestHelper.ConvertToStartingPositions("1,0 2,1 2,2 3,3 3,4");
            var gamestate         = new ImplementedGameState(2, startingPositions);

            var engine = new RulesEngine(gamestate, seed: 2);

            var change = engine.Getchange(1, new PlayerAction()
            {
                CamelAction = CamelAction.PlacePlussTrap, Value = 4
            }) as PlussTrapStateChange;

            Assert.IsTrue(change != null, "is valid");
            Assert.AreEqual(1, change.Player);
            Assert.AreEqual(4, change.Value);
        }
Esempio n. 23
0
        public void RulesEngine_BetOnWinner_Valid()
        {
            // 1: blue | 2: green, white | 3: red, yellow
            var startingPositions = TestHelper.ConvertToStartingPositions("1,0 2,1 2,2 3,3 3,4");
            var gamestate         = new ImplementedGameState(2, startingPositions);

            var engine = new RulesEngine(gamestate, seed: 2);

            var change = engine.Getchange(1, new PlayerAction()
            {
                CamelAction = CamelAction.SecretBetOnWinner, Color = CamelColor.Green
            }) as WinnerBetStateChange;

            Assert.IsTrue(change != null, "is valid");
            Assert.AreEqual(1, change.Player, "player");
            Assert.AreEqual(CamelColor.Green, change.Color, "bet on green");
        }
        public void Unit_State_PickCard_Twice()
        {
            // 1: blue, green, white | 2: red, yellow
            var startingPositions = TestHelper.ConvertToStartingPositions("1,0 1,1 1,2 2,3 2,4");
            var gamestate         = new ImplementedGameState(2, startingPositions, 16, 3);

            gamestate.Apply(new PickCardStateChange(0, CamelColor.Blue, 5));
            gamestate.Apply(new PickCardStateChange(0, CamelColor.Blue, 3));

            var c5 = gamestate.BettingCards.First(x => x.Value == 5 && x.CamelColor == CamelColor.Blue).Owner;
            var c3 = gamestate.BettingCards.First(x => x.Value == 3 && x.CamelColor == CamelColor.Blue).Owner;
            var c2 = gamestate.BettingCards.First(x => x.Value == 2 && x.CamelColor == CamelColor.Blue).Owner;

            Assert.AreEqual(0, c5, "blue 5 owner");
            Assert.AreEqual(0, c3, "blue 3 owner");
            Assert.AreEqual(-1, c2, "blue 2 owner");
        }
        public void Unit_State_PickCard()
        {
            // 1: blue, green, white | 2: red, yellow
            var startingPositions = TestHelper.ConvertToStartingPositions("1,0 1,1 1,2 2,3 2,4");
            var gamestate         = new ImplementedGameState(2, startingPositions, 16, 3);
            var change            = new PickCardStateChange(0, CamelColor.Blue, 5);

            gamestate.Apply(change);

            var owner = gamestate.BettingCards.Where(x => x.Value == 5).ToDictionary(x => x.CamelColor, x => x.Owner);

            Assert.AreEqual(0, owner[CamelColor.Blue], "blue 5 owner");
            Assert.AreEqual(-1, owner[CamelColor.Green], "green 5 owner");
            Assert.AreEqual(-1, owner[CamelColor.White], "white 5 owner");
            Assert.AreEqual(-1, owner[CamelColor.Red], "red 5 owner");
            Assert.AreEqual(-1, owner[CamelColor.Yellow], "yellow 5 owner");
        }
Esempio n. 26
0
        public void RulesEngine_ScoreRound_Bets_SecondPlace()
        {
            // 1: blue | 2: green, white | 3: red, yellow
            var startingPositions = TestHelper.ConvertToStartingPositions("1,0 2,1 2,2 3,3 3,4");
            var gamestate         = new ImplementedGameState(4, startingPositions);

            gamestate.BettingCards.First(x => x.CamelColor == CamelColor.Red && x.Value == 5).Owner = 0;
            gamestate.BettingCards.First(x => x.CamelColor == CamelColor.Red && x.Value == 3).Owner = 1;
            gamestate.BettingCards.First(x => x.CamelColor == CamelColor.Red && x.Value == 2).Owner = 2;

            var engine = new RulesEngine(gamestate, seed: 1);

            engine.ScoreRound();

            Assert.AreEqual(4, gamestate.Money[0], "money p0");
            Assert.AreEqual(4, gamestate.Money[1], "money p1");
            Assert.AreEqual(4, gamestate.Money[2], "money p2");
            Assert.AreEqual(3, gamestate.Money[3], "money p3");
        }
Esempio n. 27
0
        public void RulesEngine_BetOnWinner_Invalid_Self()
        {
            // 1: blue | 2: green, white | 3: red, yellow
            var startingPositions = TestHelper.ConvertToStartingPositions("1,0 2,1 2,2 3,3 3,4");
            var gamestate         = new ImplementedGameState(2, startingPositions);

            gamestate.LoserBets.Add(new GameEndBet()
            {
                Player = 1, CamelColor = CamelColor.Green
            });
            var engine = new RulesEngine(gamestate, seed: 2);

            var change = engine.Getchange(1, new PlayerAction()
            {
                CamelAction = CamelAction.SecretBetOnWinner, Color = CamelColor.Green
            });

            Assert.IsTrue(change == null, "is invalid");
        }
Esempio n. 28
0
        public void RulesEngine_ScoreGame_WrongBets()
        {
            // 1: blue | 2: green, white | 3: red, yellow
            var startingPositions = TestHelper.ConvertToStartingPositions("1,0 2,1 2,2 3,3 3,4");
            var gamestate         = new ImplementedGameState(4, startingPositions);

            gamestate.LoserBets.Add(new GameEndBet()
            {
                Player = 0, CamelColor = CamelColor.Green
            });
            gamestate.LoserBets.Add(new GameEndBet()
            {
                Player = 0, CamelColor = CamelColor.White
            });
            gamestate.LoserBets.Add(new GameEndBet()
            {
                Player = 0, CamelColor = CamelColor.Red
            });

            gamestate.LoserBets.Add(new GameEndBet()
            {
                Player = 1, CamelColor = CamelColor.White
            });
            gamestate.LoserBets.Add(new GameEndBet()
            {
                Player = 1, CamelColor = CamelColor.Red
            });

            gamestate.LoserBets.Add(new GameEndBet()
            {
                Player = 2, CamelColor = CamelColor.Red
            });

            var engine = new RulesEngine(gamestate, seed: 1);

            engine.ScoreGame();

            Assert.AreEqual(0, gamestate.Money[0], "money p0");
            Assert.AreEqual(1, gamestate.Money[1], "money p1");
            Assert.AreEqual(2, gamestate.Money[2], "money p2");
            Assert.AreEqual(3, gamestate.Money[3], "money p3");
        }
Esempio n. 29
0
        public void CamelHelper_GetCamelWins_Full_MinusTrap()
        {
            // 1: blue, green, white | 2: red, yellow
            var startString       = "1,0 1,1 1,2 2,3 2,4";
            var startingPositions = TestHelper.ConvertToStartingPositions(startString);
            var gamestate         = new ImplementedGameState(1, startingPositions);

            gamestate.Traps[0].Location = 3;
            gamestate.Traps[0].Move     = -1;

            var wins = CamelHelper.GetCamelWins(gamestate, out var money);

            Assert.AreEqual(3086, wins[CamelColor.Blue], "blue");
            Assert.AreEqual(5240, wins[CamelColor.Green], "green");
            Assert.AreEqual(8834, wins[CamelColor.White], "white");
            Assert.AreEqual(3251, wins[CamelColor.Red], "red");
            Assert.AreEqual(8749, wins[CamelColor.Yellow], "yellow");

            Assert.AreEqual(38500, money[3], "trap money");
        }
Esempio n. 30
0
        public void CamelHelper_GetCamelWins_SimpleWin_TrapPlus()
        {
            // 1: blue, green, white | 4: red, yellow
            var startString       = "1,0 1,1 1,2 4,3 4,4";
            var startingPositions = TestHelper.ConvertToStartingPositions(startString);
            var gamestate         = new ImplementedGameState(1, startingPositions);

            gamestate.Traps[0].Location = 3;
            gamestate.Traps[0].Move     = 1;

            gamestate.RemainingDice.RemoveAll(x => x != CamelColor.Green);

            var wins = CamelHelper.GetCamelWins(gamestate, out var money);

            Assert.AreEqual(0, wins[CamelColor.Blue], "blue");
            Assert.AreEqual(0, wins[CamelColor.Green], "green");
            Assert.AreEqual(2, wins[CamelColor.White], "white");
            Assert.AreEqual(0, wins[CamelColor.Red], "red");
            Assert.AreEqual(1, wins[CamelColor.Yellow], "yellow");

            Assert.AreEqual(1, money[3], "trap money");
        }