예제 #1
0
        public void TestBonusBuilder()
        {
            // Arrange
            var bearResult = new BearResult("s");
            var reels      = new List <int[]>
            {
                new[] { 0, 6, 10 },
                new[] { 6, 11, 12 },
                new[] { 6, 11, 13 },
                new[] { 9, 11, 12, },
                new[] { 12, 10, 13 }
            };

            bearResult.Wheel = new BearWheel(1, ArrayModule.OfSeq(reels));

            // action
            var bonus = BonusInspection.inspect(HoneyPot.Mode.Primary, bearResult);

            // assert
            Assert.NotNull(bonus);
            Assert.AreEqual(bonus.Value.At[0].RowPositions, new List <int> {
                0, 2, 2, 2, 0
            });
            Assert.AreEqual(bonus.Value.Item.ClientId, 3);
            Assert.AreEqual(bonus.Value.Item.Count, 15);
        }
예제 #2
0
        public void TestCreateHoneyBonus()
        {
            // Arrange
            var result = new BearResult("s");
            var reels  = new List <int[]>
            {
                new[] { 1, 6, 10 },
                new[] { 6, 9, 12 },
                new[] { 6, 10, 13 },
                new[] { 9, 13, 12, },
                new[] { 12, 10, 13 }
            };

            result.Bonus          = new Stake(Guid.NewGuid(), 4);
            result.Bonus.Count    = HoneyPot.getHoneyPots(HoneyPot.Mode.Primary, 0.75);
            result.Wheel          = new BearWheel(1, ArrayModule.OfSeq(reels));
            result.BonusPositions = new List <BonusPosition> {
                new BonusPosition {
                    Line = 1, Multiplier = 1, RowPositions = new List <int> {
                        3, 0, 2, 0, 2
                    }
                }
            };

            // action
            var bonus = module.CreateBonus(result);
            var state = ((BearBonus)bonus.Value).State;

            // Assert
            Assert.AreEqual(result.Bonus.Guid, bonus.Value.Guid);
            Assert.AreEqual(true, state.IsHoney);
            Assert.AreEqual(false, state.IsFreeSpin);
            Assert.AreEqual(false, state.IsHoneyFreeSpin);
            Assert.AreEqual(4, ((Honey)state).Item.Id);
            Assert.AreEqual(3, ((Honey)state).Item.Pot.Count);
            Assert.AreEqual(3, ((Honey)state).Item.Pot.TotalSpin);

            Assert.AreEqual(1, ((Honey)state).Item.BeeHive.Count);
            Assert.AreEqual(1, ((Honey)state).Item.BeeHive.TotalSpin);
        }
예제 #3
0
        public void TestCreateFreeSpinBonus()
        {
            // Arrange
            var result = new BearResult("s");
            var reels  = new List <int[]>
            {
                new[] { 0, 6, 10 },
                new[] { 6, 11, 12 },
                new[] { 6, 11, 13 },
                new[] { 9, 11, 12, },
                new[] { 12, 10, 13 }
            };

            result.Bonus          = new Stake(Guid.NewGuid(), 3);
            result.Bonus.Count    = 15;
            result.Wheel          = new BearWheel(1, ArrayModule.OfSeq(reels));
            result.BonusPositions = new List <BonusPosition> {
                new BonusPosition {
                    Line = 1, Multiplier = 1, RowPositions = new List <int> {
                        0, 2, 2, 2, 0
                    }
                }
            };

            // action
            var bonus = module.CreateBonus(result);
            var state = ((BearBonus)bonus.Value).State;

            // Assert
            Assert.AreEqual(result.Bonus.Guid, bonus.Value.Guid);
            Assert.AreEqual(true, state.IsFreeSpin);
            Assert.AreEqual(false, state.IsHoney);
            Assert.AreEqual(false, state.IsHoneyFreeSpin);
            Assert.AreEqual(3, ((FreeSpin)state).Item.Id);
            Assert.AreEqual(15, ((FreeSpin)state).Item.Prize.Count);
            Assert.AreEqual(15, ((FreeSpin)state).Item.Prize.TotalSpin);
        }
예제 #4
0
        private static SummaryData ExecuteMainGameHoney(int level, RequestContext <BonusArgs> bonusRequestcontext, BearResult result)
        {
            var bonus         = module.CreateBonus(result);
            var summData      = new SummaryData();
            var freeSpinBonus = bonus.Value as BearBonus;

            do
            {
                var freeSpinResult = BonusReducer.dispatch(level, freeSpinBonus, bonusRequestcontext);
                summData.MgHoneyWin += freeSpinResult.Win;
                if (freeSpinResult.IsCompleted)
                {
                    break;
                }
                freeSpinBonus = freeSpinResult.Bonus as BearBonus;
            } while (true);
            return(summData);
        }
예제 #5
0
        private static SummaryData ExecuteFreeSpin(int level, RequestContext <BonusArgs> bonusRequestcontext, BearResult result)
        {
            var bonus         = module.CreateBonus(result);
            var summData      = new SummaryData();
            var freeSpinBonus = bonus.Value as BearBonus;

            do
            {
                summData.FSpinCounter++;
                var freeSpinResult = BonusReducer.dispatch(level, freeSpinBonus, bonusRequestcontext);
                var spinResult     = freeSpinResult.SpinResult;
                if (spinResult.HasBonus)
                {
                    var additionBonus = spinResult.Bonus;
                    if (additionBonus.ClientId == 4)
                    {
                        summData.FgHoneyHit++;
                    }
                    else if (additionBonus.ClientId == 3)
                    {
                        summData.FgFHit++;
                    }
                }

                if (spinResult.Type == "b")
                {
                    summData.FgHoneyWin += spinResult.Win;
                }
                else
                {
                    summData.FSTotalWin += spinResult.Win;
                }

                if (freeSpinResult.IsCompleted)
                {
                    break;
                }
                freeSpinBonus = freeSpinResult.Bonus as BearBonus;
            } while (true);

            return(summData);
        }
예제 #6
0
        public void TestExecuteBonus()
        {
            // Arrange
            var spinResult = new BearResult("s");
            var user       = new UserGameKey(-1, 103);
            var reels      = new List <int[]>
            {
                new[] { 0, 6, 10 },
                new[] { 6, 11, 12 },
                new[] { 6, 11, 13 },
                new[] { 9, 11, 12, },
                new[] { 12, 10, 13 }
            };

            spinResult.Bonus          = new Stake(Guid.NewGuid(), 3);
            spinResult.Bonus.Count    = 15;
            spinResult.Wheel          = new BearWheel(1, ArrayModule.OfSeq(reels));
            spinResult.BonusPositions = new List <BonusPosition> {
                new BonusPosition {
                    Line = 1, Multiplier = 1, RowPositions = new List <int> {
                        0, 2, 2, 2, 0
                    }
                }
            };
            spinResult.SpinBet = new SpinBet(user, PlatformType.None)
            {
                Lines   = 25,
                LineBet = 1.0m
            };
            var userSession = new UserSession
            {
                SessionKey = "unittest",
                UserId     = -1
            };
            var requestContext = new RequestContext <SpinArgs>("simulation", "Bonus Bear", PlatformType.None)
            {
                GameSetting = new GameSetting {
                    GameSettingGroupId = 1
                },
                Query = new QueryCollection {
                },
                Game  = new Game {
                    Id = 103
                }
            };
            var requestBonusContext = new RequestContext <BonusArgs>("unittest", "Bonus Bear", PlatformType.None)
            {
                GameSetting = new GameSetting {
                    GameSettingGroupId = 1
                },
                Query = new QueryCollection {
                },
            };

            requestBonusContext.UserSession = userSession;
            requestBonusContext.UserGameKey = user;
            var bonus = module.CreateBonus(spinResult).Value;

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

            // action
            var result = module.ExecuteBonus(1, entity, requestBonusContext).Value as BearSeqFreeSpinResult;

            // assert
            Assert.NotNull(result);
            Assert.AreEqual(true, ((Domain.BearBonus)result.Bonus).State.IsFreeSpin);
            Assert.IsTrue(result.Type == "fs");
        }