public int EngineShouldRetrieveCorrectCollapseMultiplier(int level, int iterations) { var config = new Configuration(); var targetWheel = MainGameEngine.GetTargetWheel(level, config, false); var targetMultiplier = CollapsingBonusEngine.GetCollapseMultiplier(config.BonusConfig.Collapse.Multipliers, iterations); return(targetMultiplier); }
public void EngineShouldCollapseBonusOnWinUpdate(int level) { var collapsingSpinResult = GenerateWinningCollapsingSpinResult(level); var collapsingBonus = CollapsingBonusEngine.CreateCollapsingSpinBonus(collapsingSpinResult); collapsingBonus.UpdateBonus(collapsingSpinResult); Assert.IsTrue(collapsingBonus.SpinResult.Collapse); }
public void EngineShouldStartBonusOnCreateCollapsingBonusResult(int level) { var collapsingSpinResult = GenerateCollapsingSpinResult(level); var collapsingBonus = CollapsingBonusEngine.CreateCollapsingSpinBonus(collapsingSpinResult); collapsingBonus.UpdateBonus(collapsingSpinResult); Assert.IsTrue(collapsingBonus.IsStarted); }
public void EngineShouldCreateCollapsingBonusResultWithSameSpinTransactionId(int level) { var collapsingSpinResult = GenerateWinningCollapsingSpinResult(level); var collapsingBonus = CollapsingBonusEngine.CreateCollapsingSpinBonus(collapsingSpinResult); collapsingBonus.UpdateBonus(collapsingSpinResult); var collapsingBonusResult = CollapsingBonusEngine.CreateCollapsingBonusResult(collapsingBonus, collapsingSpinResult); Assert.IsTrue(collapsingBonusResult.SpinTransactionId == collapsingSpinResult.SpinTransactionId); }
public void EngineShouldContinueCollapsingBonusResultOnWinSpin(int level) { var collapsingSpinResult = GenerateWinningCollapsingSpinResult(level); var collapsingBonus = CollapsingBonusEngine.CreateCollapsingSpinBonus(collapsingSpinResult); collapsingBonus.UpdateBonus(collapsingSpinResult); var collapsingBonusResult = CollapsingBonusEngine.CreateCollapsingBonusResult(collapsingBonus, collapsingSpinResult); Assert.IsTrue(!collapsingBonusResult.IsCompleted); }
public void EngineShouldCreateCollapsingResultSameRoundId(int level) { var config = new Configuration(); var spinResult = GenerateWinningSpinResult(level); var targetWheel = MainGameEngine.GetTargetWheel(level, config, spinResult.Wheel.ReelStripsId); var collapsingSpinResult = CollapsingBonusEngine.CreateCollapsingSpinResult(spinResult, targetWheel, config.Payline, config.MainGamePayTable); Assert.IsTrue(spinResult.RoundId == collapsingSpinResult.RoundId); }
public void EngineShouldCreateCollapsingBonusResultWithSameGameResultAndBonus(int level) { var collapsingSpinResult = GenerateWinningCollapsingSpinResult(level); var collapsingBonus = CollapsingBonusEngine.CreateCollapsingSpinBonus(collapsingSpinResult); collapsingBonus.UpdateBonus(collapsingSpinResult); var collapsingBonusResult = CollapsingBonusEngine.CreateCollapsingBonusResult(collapsingBonus, collapsingSpinResult); Assert.AreSame(collapsingBonusResult.Bonus, collapsingBonus); }
public void EngineShouldCreateCollapsingSpinBonusWithValidGuid(int level) { var spinResult = GenerateWinningSpinResult(level); var collapsingSpinResult = GenerateWinningCollapsingSpinResult(level); var spinResultBonus = CollapsingBonusEngine.CreateCollapsingSpinBonus(spinResult); var collapsingSpinResultBonus = CollapsingBonusEngine.CreateCollapsingSpinBonus(collapsingSpinResult); Assert.IsTrue(!string.IsNullOrWhiteSpace(spinResultBonus.Guid.ToString())); Assert.IsTrue(!string.IsNullOrWhiteSpace(collapsingSpinResultBonus.Guid.ToString())); }
public void EngineShouldCreateCollapsingSpinBonusWithTransactionId(int level) { var spinResult = GenerateWinningSpinResult(level); var collapsingSpinResult = GenerateWinningCollapsingSpinResult(level); var spinResultBonus = CollapsingBonusEngine.CreateCollapsingSpinBonus(spinResult); var collapsingSpinResultBonus = CollapsingBonusEngine.CreateCollapsingSpinBonus(collapsingSpinResult); Assert.IsTrue(spinResultBonus.SpinTransactionId == spinResult.TransactionId); Assert.IsTrue(collapsingSpinResultBonus.SpinTransactionId == collapsingSpinResult.TransactionId); }
public void EngineShouldCreateBonusXElementOfCollapsingBonusResult(int level) { var collapsingSpinResult = GenerateWinningCollapsingSpinResult(level); var collapsingBonus = CollapsingBonusEngine.CreateCollapsingSpinBonus(collapsingSpinResult); collapsingBonus.UpdateBonus(collapsingSpinResult); var collapsingBonusResult = CollapsingBonusEngine.CreateCollapsingBonusResult(collapsingBonus, collapsingSpinResult); var xElement = collapsingBonusResult.ToXElement(); Assert.IsNotNull(xElement); }
public void EngineShouldCreateBonusResponseXmlOfCollapsingBonusResult(int level) { var collapsingSpinResult = GenerateWinningCollapsingSpinResult(level); var collapsingBonus = CollapsingBonusEngine.CreateCollapsingSpinBonus(collapsingSpinResult); collapsingBonus.UpdateBonus(collapsingSpinResult); var collapsingBonusResult = CollapsingBonusEngine.CreateCollapsingBonusResult(collapsingBonus, collapsingSpinResult); var responseXml = collapsingBonusResult.ToResponseXml(ResponseXmlFormat.History); Assert.IsNotNull(responseXml); }
public void CollapsingSpinResultShouldHaveSameBonusDetailsOnResultUpdate(int level) { var collapsingSpinResult = GenerateWinningCollapsingSpinResult(level); var collapsingSpinBonus = CollapsingBonusEngine.CreateCollapsingSpinBonus(collapsingSpinResult); collapsingSpinBonus.UpdateBonus(collapsingSpinResult); collapsingSpinResult.UpdateBonus(collapsingSpinBonus); var isEqualBonusId = collapsingSpinResult.BonusElement.Id == collapsingSpinBonus.Id; var isEqualBonusGuid = collapsingSpinResult.BonusElement.Value == collapsingSpinBonus.Guid.ToString("N"); Assert.IsTrue(isEqualBonusId && isEqualBonusGuid); }
public static CollapsingSpinResult GenerateCollapsingSpinResult(int level) { var config = new Configuration(); var spinResult = GenerateWinningSpinResult(level); var targetWheel = MainGameEngine.GetTargetWheel(level, config, spinResult.Wheel.ReelStripsId); var collapsingSpinResult = CollapsingBonusEngine.CreateCollapsingSpinResult( spinResult, targetWheel, config.Payline, config.MainGamePayTable); return(collapsingSpinResult); }
public void EngineShouldCreateCollapsingResultSameRoundId(int level) { var config = new Configuration(); var spinResult = GenerateWinningSpinResult(level); var collapsingSpinResult = GenerateWinningCollapsingSpinResult(level); var spinResultCollapsingResult = CollapsingBonusEngine.CreateCollapsingSpinResult(spinResult, config.Wheels[level], config.SymbolCollapsePairs, config.Payline, config.PayTable); var collapsingSpinResultCollapsingResult = CollapsingBonusEngine.CreateCollapsingSpinResult(collapsingSpinResult, config.Wheels[level], config.SymbolCollapsePairs, config.Payline, config.PayTable); Assert.IsTrue(spinResult.RoundId == spinResultCollapsingResult.RoundId); Assert.IsTrue(collapsingSpinResultCollapsingResult.RoundId == collapsingSpinResult.RoundId); }
public void EngineShouldCreateCollapsingSpinBonusWithGameResult(int level) { var spinResult = GenerateWinningSpinResult(level); var collapsingSpinResult = GenerateWinningCollapsingSpinResult(level); var spinResultBonus = CollapsingBonusEngine.CreateCollapsingSpinBonus(spinResult); var collapsingSpinResultBonus = CollapsingBonusEngine.CreateCollapsingSpinBonus(collapsingSpinResult); Assert.AreSame(spinResult, spinResultBonus.GameResult); Assert.AreSame(spinResult, spinResultBonus.SpinResult); Assert.AreSame(collapsingSpinResult, collapsingSpinResultBonus.GameResult); Assert.AreSame(collapsingSpinResult, collapsingSpinResultBonus.SpinResult); }
public void EngineShouldRemoveCorrectWinPositions(string wheelString, int level) { var config = new Configuration(); var wheel = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString.ToFormattedWheelString()); var winPositions = MainGameEngine.GenerateWinPositions(config.Payline, config.PayTable, wheel, 1, 1); var removedWinPositions = CollapsingBonusEngine.GetRemoveWinPositions(winPositions); foreach (var winPositionIndex in winPositions.Select((Value, Index) => new { Value, Index })) { var removedWinPosition = removedWinPositions.ElementAt(winPositionIndex.Index); Assert.AreEqual(winPositionIndex.Value.Line, removedWinPosition.Line); } }
public void EngineShouldRemoveCorrectWinPositionCount(string wheelString, int level) { var config = new Configuration(); var wheel = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString); var winPositions = MainGameEngine.GenerateWinPositions( config.Payline, config.PayTable, wheel, 1, Game.Lines, 1); var removedWinPositions = CollapsingBonusEngine.GetRemoveWinPositions(winPositions); Assert.AreEqual(winPositions.Count, removedWinPositions.Count); }
public void EngineShouldRemoveCorrectWinPositionCount(string wheelString, int level) { var config = new Configuration(); var wheel = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString.ToFormattedWheelString()); var winPositions = MainGameEngine.GenerateWinPositions( config.Payline, config.PayTable, wheel, 1, Game.Lines, config.BonusConfig.Collapse.Multipliers.First()); var bonusPositions = MainGameEngine.GenerateBonusPositions(wheel); var removedWinPositions = CollapsingBonusEngine.GetRemoveWinPositions(winPositions, bonusPositions); Assert.AreEqual(winPositions.Count + bonusPositions.Count, removedWinPositions.Count); }
public void EngineShouldCreateCollapsingResultSameRoundId(int level) { var config = new Configuration(); var spinResult = GenerateWinningFreeSpinResult(level); var referenceWheel = MainGameEngine.GetTargetWheel(level, config, spinResult.Wheel.ReelStripsId); var freeSpinCollapsingResult = GenerateWinningFreeSpinCollapsingResult(level); var freeSpinBonus = FreeSpinBonusEngine.CreateFreeSpinBonus(freeSpinCollapsingResult); freeSpinBonus.UpdateBonus(freeSpinCollapsingResult); var spinResultCollapsingResult = CollapsingBonusEngine.CreateCollapsingSpinResult(spinResult, referenceWheel, config.BonusConfig.FreeSpin.Multipliers, config.Payline, config.PayTable); var freeSpinCollapsingResultCollapsingResult = FreeSpinBonusEngine.CreateFreeSpinBonusResult(freeSpinBonus, freeSpinCollapsingResult); Assert.IsTrue(spinResult.RoundId == spinResultCollapsingResult.RoundId); Assert.IsTrue(freeSpinCollapsingResultCollapsingResult.RoundId == freeSpinCollapsingResult.RoundId); }
public void EngineShouldGenerateCorrectCollapseAddItems(int level) { var config = new Configuration(); var spinResult = GenerateWinningSpinResult(level); var referenceWheel = MainGameEngine.GetTargetWheel(level, config); var removedWinPositions = CollapsingBonusEngine.GetRemoveWinPositions(spinResult.WinPositions); var collapsingRemoves = CollapsingBonusEngine.GetCollapseRemoveItems(removedWinPositions); var newTopIndices = CollapsingBonusEngine.GetCollapseTopIndices(referenceWheel, spinResult.TopIndices, collapsingRemoves); var collapsingAdds = CollapsingBonusEngine.GetCollapseAddItems(referenceWheel, newTopIndices, collapsingRemoves); for (var widthIndex = 0; widthIndex < spinResult.Wheel.Width; widthIndex++) { var referenceReel = referenceWheel[widthIndex]; var targetReel = collapsingAdds[widthIndex]; Assert.IsTrue(!targetReel.Except(referenceReel).Any()); } }
public void EngineShouldReadResponseXmlOfCollapsingBonusResult(int level) { var collapsingSpinResult = GenerateWinningCollapsingSpinResult(level); var collapsingBonus = CollapsingBonusEngine.CreateCollapsingSpinBonus(collapsingSpinResult); collapsingBonus.UpdateBonus(collapsingSpinResult); var collapsingBonusResult = CollapsingBonusEngine.CreateCollapsingBonusResult(collapsingBonus, collapsingSpinResult); var xElement = collapsingBonusResult.ToXElement(); Assert.DoesNotThrow(() => { using (var xmlReader = xElement.CreateReader()) { var responseXml = new BonusXml(); responseXml.ReadXml(xmlReader); } }); }
public void EngineShouldGenerateCorrectCollapseAddItems(int level) { var config = new Configuration(); var referenceWheel = config.Wheels[level]; var spinResult = GenerateWinningSpinResult(level); var removedWinPositions = CollapsingBonusEngine.GetRemoveWinPositions(spinResult.WinPositions); var matchingSymbolPositions = MainGameEngine.GenerateMatchingSymbolPositions(config.SymbolCollapsePairs, spinResult.WinPositions.Select(wp => wp.Symbol).ToList(), spinResult.Wheel); var bombAndStopperPositions = MainGameEngine.GenerateBombAndStopperPositions(spinResult.Wheel, spinResult.WinPositions); var collapsingRemoves = CollapsingBonusEngine.GetCollapseRemoveItems(removedWinPositions, matchingSymbolPositions, bombAndStopperPositions); var newTopIndices = CollapsingBonusEngine.GetCollapseTopIndices(referenceWheel, spinResult.TopIndices, collapsingRemoves); var collapsingAdds = CollapsingBonusEngine.GetCollapseAddItems(referenceWheel, newTopIndices, collapsingRemoves); for (var widthIndex = 0; widthIndex < spinResult.Wheel.Width; widthIndex++) { var referenceReel = referenceWheel[widthIndex]; var targetReel = collapsingAdds[widthIndex]; Assert.IsTrue(!targetReel.Except(referenceReel).Any()); } }
public void EngineShouldGenerateCorrectNewTopIndices(int level) { var config = new Configuration(); var spinResult = GenerateNonWinningSpinResult(level); var referenceWheel = MainGameEngine.GetTargetWheel(level, config); var removedWinPositions = CollapsingBonusEngine.GetRemoveWinPositions(spinResult.WinPositions); var collapsingRemoves = CollapsingBonusEngine.GetCollapseRemoveItems(removedWinPositions); var newTopIndices = CollapsingBonusEngine.GetCollapseTopIndices(referenceWheel, spinResult.TopIndices, collapsingRemoves); for (var widthIndex = 0; widthIndex < spinResult.Wheel.Width; widthIndex++) { var previousTopIndex = spinResult.TopIndices[widthIndex]; var currentTopIndex = newTopIndices[widthIndex]; var tempIndex = previousTopIndex - collapsingRemoves[widthIndex].Count; var expectedNewTopIndex = tempIndex >= 0 ? tempIndex : referenceWheel[widthIndex].Count + tempIndex; Assert.AreEqual(expectedNewTopIndex, currentTopIndex); } }
public void EngineShouldGenerateCorrectNewTopIndices(int level) { var config = new Configuration(); var referenceWheel = MainGameEngine.GetTargetWheel(level, config); var spinResult = GenerateWinningNonBonusSpinResult(level); var removedWinPositions = CollapsingBonusEngine.GetRemoveWinPositions(spinResult.WinPositions); var matchingSymbolPositions = MainGameEngine.GenerateMatchingSymbolPositions(config.SymbolCollapsePairs, spinResult.WinPositions.Select(wp => wp.Symbol).ToList(), spinResult.Wheel); var bombAndStopperPositions = MainGameEngine.GenerateBombAndStopperPositions(spinResult.Wheel, spinResult.WinPositions); var collapsingRemoves = CollapsingBonusEngine.GetCollapseRemoveItems(removedWinPositions, matchingSymbolPositions, bombAndStopperPositions); var newTopIndices = CollapsingBonusEngine.GetCollapseTopIndices(referenceWheel, spinResult.TopIndices, collapsingRemoves); for (var widthIndex = 0; widthIndex < spinResult.Wheel.Width; widthIndex++) { var previousTopIndex = spinResult.TopIndices[widthIndex]; var currentTopIndex = newTopIndices[widthIndex]; var tempIndex = previousTopIndex - collapsingRemoves[widthIndex].Count; var expectedNewTopIndex = tempIndex >= 0 ? tempIndex : referenceWheel[widthIndex].Count + tempIndex; Assert.AreEqual(expectedNewTopIndex, currentTopIndex); } }
public void EngineShouldCreateCollapsingSpinResultWithCorrectMultiplier(int level) { var config = new Configuration(); var spinResult = GenerateWinningSpinResult(level); var targetWheel = MainGameEngine.GetTargetWheel(level, config, spinResult.Wheel.ReelStripsId); CollapsingSpinResult collapsingSpinResult = null; do { collapsingSpinResult = CollapsingBonusEngine.CreateCollapsingSpinResult(spinResult, targetWheel, config.BonusConfig.Collapse.Multipliers, config.Payline, config.PayTable); if (collapsingSpinResult.Win > 0) { spinResult = collapsingSpinResult; } } while (collapsingSpinResult.Win > 0); var targetMultiplier = CollapsingBonusEngine.GetCollapseMultiplier(config.BonusConfig.Collapse.Multipliers, collapsingSpinResult.CollapsingSpinCount - 1); Assert.IsTrue(spinResult.AvalancheMultiplier == targetMultiplier); }
public void EngineShouldGetCorrectCollapseRemoveItems(string wheelString, int level) { var config = new Configuration(); var wheel = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString.ToFormattedWheelString()); var winPositions = MainGameEngine.GenerateWinPositions( config.Payline, config.PayTable, wheel, 1, Game.Lines, config.BonusConfig.Collapse.Multipliers.First()); var bonusPositions = MainGameEngine.GenerateBonusPositions(wheel); var removedWinPositions = CollapsingBonusEngine.GetRemoveWinPositions(winPositions, bonusPositions); var collapsingRemoves = CollapsingBonusEngine.GetCollapseRemoveItems(removedWinPositions); for (var widthIndex = 0; widthIndex < wheel.Width; widthIndex++) { var removeRowPositions = CollapsingBonusEngine.GetRemoveRowPositions(removedWinPositions, widthIndex); Assert.IsTrue(!collapsingRemoves[widthIndex].Except(removeRowPositions).Any()); } }
public void EngineShouldGetCorrectCollapseRemoveItems(string wheelString, int level) { var config = new Configuration(); var wheel = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString.ToFormattedWheelString()); var winPositions = MainGameEngine.GenerateWinPositions(config.Payline, config.PayTable, wheel, 1, 1); var removedWinPositions = CollapsingBonusEngine.GetRemoveWinPositions(winPositions); var collapsingRemoves = CollapsingBonusEngine.GetCollapseRemoveItems(removedWinPositions); for (var widthIndex = 0; widthIndex < wheel.Width; widthIndex++) { var removeRowPositionsCollection = new List <int>(); for (var heightIndex = 0; heightIndex < Game.WheelHeight; heightIndex++) { var index = (widthIndex * Game.WheelHeight) + heightIndex; var removeRowPositions = CollapsingBonusEngine.GetRemoveRowPositions(removedWinPositions, index); removeRowPositionsCollection.AddRange(removeRowPositions); } Assert.IsTrue(!collapsingRemoves[widthIndex].Except(removeRowPositionsCollection).Any()); } }
public void EngineShouldCreateCollapsingFreeSpinResultWithCorrectMultiplier(int level) { var config = new Configuration(); var freeSpinResult = GenerateWinningFreeSpinResult(level) as Games.FrostDragon.Models.GameResults.Spins.SpinResult; var targetWheel = MainGameEngine.GetTargetWheel(level, config, freeSpinResult.Wheel.ReelStripsId); FreeSpinCollapsingResult freeSpinCollapsingResult = null; do { freeSpinCollapsingResult = FreeSpinBonusEngine.CreateFreeSpinCollapsingResult(freeSpinResult, targetWheel, config.BonusConfig.FreeSpin.Multipliers, config.Payline, config.PayTable); if (freeSpinCollapsingResult.Win > 0) { freeSpinResult = freeSpinCollapsingResult; } } while (freeSpinCollapsingResult.Win > 0); var targetMultiplier = CollapsingBonusEngine.GetCollapseMultiplier(config.BonusConfig.FreeSpin.Multipliers, freeSpinCollapsingResult.CollapsingSpinCount - 1); Assert.IsTrue(freeSpinResult.AvalancheMultiplier == targetMultiplier); }
public void EngineShouldGetCorrectCollapseRemoveItems(string wheelString, int level) { var config = new Configuration(); var wheel = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString); var winPositions = MainGameEngine.GenerateWinPositions( config.Payline, config.PayTable, wheel, 1, Game.Lines, 1); var matchingSymbolPositions = MainGameEngine.GenerateMatchingSymbolPositions(config.SymbolCollapsePairs, winPositions.Select(wp => wp.Symbol).ToList(), wheel); var bombAndStopperPositions = MainGameEngine.GenerateBombAndStopperPositions(wheel, winPositions); var removedWinPositions = CollapsingBonusEngine.GetRemoveWinPositions(winPositions); var collapsingRemoves = CollapsingBonusEngine.GetCollapseRemoveItems(removedWinPositions, matchingSymbolPositions, bombAndStopperPositions); for (var widthIndex = 0; widthIndex < wheel.Width; widthIndex++) { var removeRowPositions = CollapsingBonusEngine.GetRemoveRowPositions(removedWinPositions, matchingSymbolPositions, bombAndStopperPositions, widthIndex); Assert.IsTrue(!collapsingRemoves[widthIndex].Except(removeRowPositions).Any()); } }
public void EngineShouldIncreaseWinPositionMultiplierOnSpinCollapse(int level) { var config = new Configuration(); var spinResult = GenerateWinningSpinResult(level); var targetWheel = MainGameEngine.GetTargetWheel(level, config, spinResult.Wheel.ReelStripsId); CollapsingSpinResult collapsingSpinResult = null; do { collapsingSpinResult = CollapsingBonusEngine.CreateCollapsingSpinResult(spinResult, targetWheel, config.BonusConfig.Collapse.Multipliers, config.Payline, config.PayTable); if (collapsingSpinResult.Win > 0) { spinResult = collapsingSpinResult; } } while (collapsingSpinResult.Win > 0); var targetMultiplier = spinResult.AvalancheMultiplier; var targetWinPosition = spinResult.WinPositions.FirstOrDefault(); var symbolMultiplier = config.PayTable.GetOdds(targetWinPosition.Symbol, targetWinPosition.Count); Assert.IsTrue(symbolMultiplier * targetMultiplier == targetWinPosition.Multiplier); }