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 } }); }
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); }
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); }
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); }