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