Ejemplo n.º 1
0
        public void TestCreateFreeAndReSpinGameBonus()
        {
            // Arrange
            var user  = new UserGameKey(-1, 109);
            var wheel = new FortuneChimesWheel
            {
                Reels = new List <int[]>
                {
                    new int[] { 1, 1, 1 },
                    new int[] { 2, 2, 2 },
                    new int[] { 10, 10, 10 },
                    new int[] { 4, 4, 4 },
                    new int[] { 5, 5, 5 }
                },
                Indices = new int[] { 0, 0, 0, 0, 0 }
            };
            var result1 = new FortuneChimesSpinResult(user)
            {
                Wheel        = wheel,
                WinPositions = new List <WinPosition>
                {
                    new WinPosition
                    {
                        Line = 0, Count = 3, Symbol = 10, Multiplier = 1, RowPositions = new List <int> {
                            0, 2, 2, 2, 0
                        }
                    },
                    new WinPosition {
                        Line = 1, Count = 3, RowPositions = new List <int> {
                            1, 1, 1, 0, 0
                        }
                    }
                },
                Bonus = new Stake(Guid.NewGuid(), 3)
                {
                    Count = 4
                }
            };

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

            // Assert
            Assert.AreEqual(result1.Bonus.Guid, bonus1.Value.Guid);
            Assert.AreEqual(true, state1 is FreeSpinState);
            Assert.AreEqual(true, ((FreeSpinState)state1).Count == 4);
            Assert.AreEqual(true, !state1.IsCompleted);
            Assert.AreEqual(((FreeSpinState)state1).ReSpinCollapse.Indices, wheel.Indices);
            Assert.AreEqual(((FreeSpinState)state1).ReSpinCollapse.ReelsReSpin, new List <int[]>
            {
                new int[0],
                new int[0],
                new int[0],
                new int[0],
                new int[] { 5, 5, 5 }
            });
        }
Ejemplo n.º 2
0
        public void TestCreateReSpinBonus()
        {
            // Arrange
            var user  = new UserGameKey(-1, 109);
            var wheel = new FortuneChimesWheel
            {
                Reels = new List <int[]>
                {
                    new int[] { 1, 1, 1 },
                    new int[] { 2, 2, 2 },
                    new int[] { 3, 3, 3 },
                    new int[] { 4, 4, 4 },
                    new int[] { 5, 5, 5 },
                },
                Indices = new int[] { 0, 0, 0, 0, 0 }
            };
            var result1 = new FortuneChimesSpinResult(user)
            {
                Wheel          = wheel,
                BonusPositions = new List <BonusPosition> {
                    new BonusPosition {
                        Line = 1, Multiplier = 1, RowPositions = new List <int> {
                            1, 2, 2, 2, 0
                        }
                    }
                },
                Bonus = new Stake(Guid.NewGuid(), 4)
                {
                    Count = 1
                }
            };

            // action
            var bonus1 = module.CreateBonus(result1);
            var state1 = ((FortuneChimesBonus)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);
        }
Ejemplo n.º 3
0
        private static SummaryData ExecuteBonus(int level, RequestContext <BonusArgs> requestContext, FortuneChimesSpinResult result)
        {
            var bonus = module.CreateBonus(result);
            var fortunechimesBonus = bonus.Value as FortuneChimesBonus;
            var summData           = new SummaryData();
            var bonusContext       = new BonusStateContext(level, fortunechimesBonus);

            do
            {
                var bonusSpinResult = bonusContext.SetState(fortunechimesBonus.State).Transform(requestContext);
                var spinResult      = bonusSpinResult.SpinResult;
                if (spinResult.HasBonus)
                {
                    var additionBonus = spinResult.Bonus;
                    if (additionBonus.ClientId == 3)
                    {
                        summData.MgFHit++;
                    }
                    else if (additionBonus.ClientId == 4)
                    {
                        summData.FgExplodingHit++;
                    }
                    else
                    if (additionBonus.ClientId == 5)
                    {
                        summData.FgRevealHit++;
                    }
                }

                switch (fortunechimesBonus.State)
                {
                case ReSpinState _:
                    var nonScatterWin = spinResult.WinPositions.Where(winline => winline.Line > 0).Sum(item => item.Win);
                    var instanceWin   = spinResult.InstanceWin != null ? spinResult.InstanceWin.Win : 0;
                    summData.MgNonScatterExplodingWin += nonScatterWin;
                    summData.MgScatterExplodingWin    += (spinResult.Win - instanceWin - nonScatterWin);
                    summData.ExplodingCounter         += spinResult.InstanceWin != null ? 1 : 0;
                    summData.MgRevealWin += instanceWin;
                    break;

                case FreeSpinReSpinState _:

                    instanceWin              = spinResult.InstanceWin != null ? spinResult.InstanceWin.Win : 0;
                    summData.FgExplodingWin += (spinResult.Win - instanceWin);
                    summData.FgRevealWin    += instanceWin;
                    break;

                case FreeSpinState _:
                    summData.FSTotalWin += spinResult.Win;
                    summData.FSpinCounter++;
                    break;

                default:
                    throw new Exception();
                }
                if (bonusContext.IsCompleted)
                {
                    break;
                }
                fortunechimesBonus.State = bonusContext.GetState();
            } while (true);

            return(summData);
        }
Ejemplo n.º 4
0
        public void TestExecuteBonus()
        {
            // Arrange
            var user    = new UserGameKey(-1, 109);
            var spinBet = new SpinBet(user, PlatformType.None)
            {
                Lines   = 30,
                LineBet = 1.0m
            };
            var wheel = new FortuneChimesWheel
            {
                Reels = new List <int[]>
                {
                    new int[] { 1, 1, 1 },
                    new int[] { 2, 10, 2 },
                    new int[] { 3, 10, 3 },
                    new int[] { 4, 10, 4 },
                    new int[] { 5, 5, 5 },
                },
                Indices = new int[] { 0, 0, 0, 0, 0 }
            };
            var result1 = new FortuneChimesSpinResult(user)
            {
                Wheel          = wheel,
                BonusPositions = new List <BonusPosition> {
                    new BonusPosition {
                        Line = 1, Multiplier = 1, RowPositions = new List <int> {
                            0, 2, 2, 2, 0
                        }
                    }
                },
                Bonus = new Stake(Guid.NewGuid(), 3)
                {
                    Count = 1
                }
            };

            result1.SpinBet = spinBet;
            var userSession = new UserSession
            {
                SessionKey = "unittest",
                UserId     = -1
            };
            var requestContext = new RequestContext <SpinArgs>("simulation", "Cleopatra", PlatformType.None)
            {
                GameSetting = new GameSetting {
                    GameSettingGroupId = 1
                },
                Query = new QueryCollection {
                },
                Game  = new Game {
                    Id = 109
                }
            };
            var requestBonusContext = new RequestContext <BonusArgs>("unittest", "Cleopatra", 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 freeSpinResult1 = module.ExecuteBonus(1, entity1, requestBonusContext).Value as FortuneChimesBonusSpinResult;

            // assert
            Assert.NotNull(freeSpinResult1);
            Assert.AreEqual(freeSpinResult1.GameResultType, GameResultType.FreeSpinResult);
        }