Пример #1
0
        public void TestCreateFreeGameBonus()
        {
            // Arrange
            var user    = new UserGameKey(-1, 32);
            var result1 = new FortuneKoiSpinResult(user)
            {
                Wheel = new FortuneKoiWheel
                {
                    Reels = new List <int[]>
                    {
                        new int[] { },
                        new int[] { 7, 7, 7 },
                        new int[] { },
                        new int[] { },
                        new int[] { }
                    }
                },
                BonusPositions = new List <BonusPosition> {
                    new BonusPosition {
                        Line = 1, Multiplier = 1, RowPositions = new List <int> {
                            0, 2, 0, 0, 0
                        }
                    }
                },
                Bonus = new Stake(Guid.NewGuid(), 3)
                {
                    Count = 1
                }
            };

            // action
            var bonus1 = module.CreateBonus(result1);
            var state1 = ((FortuneKoiBonus)bonus1.Value).State;

            // Assert
            Assert.AreEqual(result1.Bonus.Guid, bonus1.Value.Guid);
            Assert.AreEqual(true, state1 is ReSpinState);
            Assert.AreEqual(true, ((ReSpinState)state1).Count == 1);
        }
Пример #2
0
        public void TestExecuteBonus()
        {
            // Arrange
            var user    = new UserGameKey(-1, 3);
            var spinBet = new SpinBet(user, PlatformType.None)
            {
                Lines   = 10,
                LineBet = 1.0m
            };
            var result1 = new FortuneKoiSpinResult(user)
            {
                Wheel = new FortuneKoiWheel
                {
                    Reels = new List <int[]>
                    {
                        new int[] { },
                        new int[] { 7, 7, 7 },
                        new int[] { },
                        new int[] { },
                        new int[] { }
                    }
                },
                BonusPositions = new List <BonusPosition> {
                    new BonusPosition {
                        Line = 1, Multiplier = 1, RowPositions = new List <int> {
                            0, 2, 0, 0, 0
                        }
                    }
                },
                Bonus = new Stake(Guid.NewGuid(), 2)
                {
                    Count = 1
                }
            };

            result1.SpinBet = spinBet;
            var userSession = new UserSession
            {
                SessionKey = "unittest",
                UserId     = -1
            };
            var requestContext = new RequestContext <SpinArgs>("simulation", "FortuneKoi", PlatformType.None)
            {
                GameSetting = new GameSetting {
                    GameSettingGroupId = 1
                },
                Query = new QueryCollection {
                },
                Game  = new Game {
                    Id = 32
                }
            };
            var requestBonusContext = new RequestContext <BonusArgs>("unittest", "FortuneKoi", PlatformType.None)
            {
                GameSetting = new GameSetting {
                    GameSettingGroupId = 1
                },
                Query = new QueryCollection {
                },
            };

            requestBonusContext.UserSession = userSession;
            requestBonusContext.UserGameKey = user;
            var bonus1 = module.CreateBonus(result1).Value;

            var entity1 = new BonusEntity
            {
                UserId       = userSession.UserId,
                GameId       = requestContext.Game.Id,
                Guid         = bonus1.Guid.ToString("N"),
                Data         = Model.Utility.Extension.ToByteArray(bonus1),
                BonusType    = bonus1.GetType().Name,
                Version      = 3,
                IsOptional   = bonus1.IsOptional,
                IsStarted    = bonus1.IsStarted,
                RoundId      = 1,
                BetReference = ""
            };

            // action
            var reSpinResult = module.ExecuteBonus(1, entity1, requestBonusContext).Value as FortuneKoiReSpinResult;

            // Assert
            Assert.NotNull(reSpinResult);
            Assert.AreEqual(reSpinResult.SpinResult.HasBonus, ((FortuneKoiBonus)reSpinResult.Bonus).State is ReSpinState);
            Assert.AreEqual(reSpinResult.SpinResult.HasBonus, reSpinResult.SpinResult.Bonus != null);
            Assert.AreEqual(reSpinResult.SpinResult.HasBonus == false, ((FortuneKoiBonus)reSpinResult.Bonus).State is Finish);
            Assert.AreEqual(reSpinResult.GameResultType, GameResultType.RespinResult);
        }
Пример #3
0
        private static SummaryData ExecuteBonus(int level, RequestContext <BonusArgs> requestContext, FortuneKoiSpinResult result)
        {
            var bonus           = module.CreateBonus(result);
            var fortunekoiBonus = bonus.Value as FortuneKoiBonus;
            var summData        = new SummaryData();
            var bonusContext    = new BonusStateContext(level, fortunekoiBonus);

            do
            {
                summData.FSpinCounter++;
                var bonusSpinResult = bonusContext.SetState(fortunekoiBonus.State).Transform(requestContext);
                var spinResult      = bonusSpinResult.SpinResult;
                if (spinResult.HasBonus)
                {
                    summData.FgFHit++;
                }

                summData.FgTotalWin += spinResult.Win;
                if (bonusContext.IsCompleted)
                {
                    break;
                }
                fortunekoiBonus.State = bonusContext.GetState();
            } while (true);

            return(summData);
        }