public async Task InvokeAsync(HttpContext context)
        {
            var originalContent = GetBodyFromRequest(context.Request).Result;
            var symbolMap       = JsonConvert.DeserializeObject <SymbolMap>(originalContent);
            var winLinesBuilder = new WinLinesBuilder(symbolMap);

            // todo: write logs here
            if (!VerifyLine(winLinesBuilder.TopLine))
            {
                throw new InvalidDataException("Data in Top-Line has wrong type of the symbols");
            }

            if (!VerifyLine(winLinesBuilder.CenterLine))
            {
                throw new InvalidDataException("Data in Center-Line has wrong type of the symbols");
            }

            if (!VerifyLine(winLinesBuilder.BottomLine))
            {
                throw new InvalidDataException("Data in Bottom-Line has wrong type of the symbols");
            }

            var json = new StringContent(originalContent, Encoding.UTF8, "application/json");

            context.Request.Body = await json.ReadAsStreamAsync();

            await _next(context);
        }
        public void GetScore_ThreeCherriesOnTheThreeLines_ReturnZero()
        {
            var builder = new WinLinesBuilder(_helper.SymbolMapWithThreeCherries);
            var rules   = new CombinationRules(ref builder);
            var result  = rules.GetScore();

            Assert.That(result, Is.EqualTo(0));
        }
        public void GetScore_OneOrTwoBarsOnThreeLines_ReturnScore()
        {
            var builder = new WinLinesBuilder(_helper.SymbolMapWithOneOrTwoBars);
            var rules   = new CombinationRules(ref builder);
            var result  = rules.GetScore();

            Assert.That(result, Is.EqualTo(15));
        }
        public void GetScore_CherryAndSevenOnThreeLines_ReturnScore()
        {
            var builder = new WinLinesBuilder(_helper.SymbolMapWithCherryAndSeven);
            var rules   = new CombinationRules(ref builder);
            var result  = rules.GetScore();

            Assert.That(result, Is.EqualTo(225));
        }
Ejemplo n.º 5
0
        public void GetScore_ThreeSevensOnTheThreeLines_ReturnScore()
        {
            var builder = new WinLinesBuilder(_helper.SymbolMapWithThreeSevens);
            var rules   = new SevenRules(ref builder);
            var result  = rules.GetScore();

            Assert.That(result, Is.EqualTo(450));
        }
Ejemplo n.º 6
0
        public void GetScore_ThreeDoubleBarsOnThreeLines_ReturnScore()
        {
            var builder = new WinLinesBuilder(_helper.SymbolMapWithThreeDoubleBars);
            var rules   = new BarRules(ref builder);
            var result  = rules.GetScore();

            Assert.That(result, Is.EqualTo(60));
        }
Ejemplo n.º 7
0
        public Score Calculate(SymbolMap map)
        {
            var score = 0;

            var winLinesBuilder = new WinLinesBuilder(map);

            score += new CherryRules(ref winLinesBuilder).GetScore();
            score += new SevenRules(ref winLinesBuilder).GetScore();
            score += new BarRules(ref winLinesBuilder).GetScore();
            score += new CombinationRules(ref winLinesBuilder).GetScore();

            return(new Score {
                Value = score
            });
        }