Пример #1
0
        public static bool TryParse(string value, out ExpressionUnit expressionUnit)
        {
            expressionUnit = null;

            var regex = RegexService.GetRegex_FindExpressionParts();
            var match = regex.Match(value);

            if (match.Success)
            {
                if (!TryParseValueUnit(match.Groups["firstValue"].Value, out var firstValue))
                    return false;

                if (!TryParseOperation(match.Groups["operation"].Value, out var operation))
                    return false;

                if (!TryParseValueUnit(match.Groups["secondValue"].Value, out var secondValue))
                    return false;

                expressionUnit = new ExpressionUnit(firstValue, operation, secondValue);

                return true;
            }

            // лучше заменить на логирование
            throw new Exception($"regex match is unsuccessfull, value: \'{value}\'");
        }
Пример #2
0
        public void RegexReturnsEmptyStringDueToNoMatch()
        {
            var textToMatch = "http://steamcommunity.com/openid/id/notASteamId";
            var match       = new RegexService().GetFirstGroupMatch(_regex, textToMatch, false);

            Assert.Equal(string.Empty, match);
        }
Пример #3
0
        public static string RemoveExcessSpacebar(this string value)
        {
            var regex  = RegexService.GetRegex_FindMultipleSpacebars();
            var result = regex.Replace(value, " ");

            return(result);
        }
Пример #4
0
        public void FindExpessionForBracersAdding_FindPlusExpression_OneValueReplaced()
        {
            var regex   = RegexService.GetRegex_FindExpessionForBracersAdding(false);
            var input   = "13 + \"1\" * \"2\"";
            var matches = regex.Matches(input);

            Assert.AreEqual(1, matches.Count);
            Assert.AreEqual("13 + \"1\"", matches[0].Value);
        }
Пример #5
0
        public void FindExpessionForBracersAdding_FindMultiplyExpression()
        {
            var regex   = RegexService.GetRegex_FindExpessionForBracersAdding();
            var input   = "10 * 3 + 1";
            var matches = regex.Matches(input);

            Assert.AreEqual(1, matches.Count);
            Assert.AreEqual("10 * 3", matches[0].Value);
        }
Пример #6
0
        public void FindExpessionForBracersAdding_FindMultiplyExpression_OneValueReplaced()
        {
            var regex   = RegexService.GetRegex_FindExpessionForBracersAdding();
            var input   = "13 + 66 * \"0\"";
            var matches = regex.Matches(input);

            Assert.AreEqual(1, matches.Count);
            Assert.AreEqual("66 * \"0\"", matches[0].Value);
        }
Пример #7
0
        public void FindMultipleSpacebars()
        {
            var regex     = RegexService.GetRegex_FindMultipleSpacebars();
            var spacebars = "          ";
            var input     = $"a{spacebars}b";
            var matches   = regex.Matches(input);

            Assert.AreEqual(1, matches.Count);
            Assert.AreEqual(spacebars, matches[0].Value);
        }
Пример #8
0
        public void FindExpressionParts_ExpressionMultiplyValue()
        {
            var regex  = RegexService.GetRegex_FindExpressionParts();
            var input  = "(1000 * 3) * 4321.1";
            var groups = regex.Match(input).Groups;

            Assert.AreEqual("(1000 * 3)", groups["firstValue"].Value);
            Assert.AreEqual("*", groups["operation"].Value);
            Assert.AreEqual("4321.1", groups["secondValue"].Value);
        }
Пример #9
0
        public void FindExpressionParts_ValueDivExpression()
        {
            var regex  = RegexService.GetRegex_FindExpressionParts();
            var input  = "3.9 / (2 / 4)";
            var groups = regex.Match(input).Groups;

            Assert.AreEqual("3.9", groups["firstValue"].Value);
            Assert.AreEqual("/", groups["operation"].Value);
            Assert.AreEqual("(2 / 4)", groups["secondValue"].Value);
        }
Пример #10
0
        public void FindExpressionParts_ExpressionMinusExpression()
        {
            var regex  = RegexService.GetRegex_FindExpressionParts();
            var input  = "(1 * 3.1) - (2.5 / 4.01)";
            var groups = regex.Match(input).Groups;

            Assert.AreEqual("(1 * 3.1)", groups["firstValue"].Value);
            Assert.AreEqual("-", groups["operation"].Value);
            Assert.AreEqual("(2.5 / 4.01)", groups["secondValue"].Value);
        }
Пример #11
0
        public void FindExpressionParts_ValueDivRemValue()
        {
            var regex  = RegexService.GetRegex_FindExpressionParts();
            var input  = "50 % 221";
            var groups = regex.Match(input).Groups;

            Assert.AreEqual("50", groups["firstValue"].Value);
            Assert.AreEqual("%", groups["operation"].Value);
            Assert.AreEqual("221", groups["secondValue"].Value);
        }
Пример #12
0
        public void FindExpressionParts_ValuePlusValue()
        {
            var regex  = RegexService.GetRegex_FindExpressionParts();
            var input  = "1 + 2";
            var groups = regex.Match(input).Groups;

            Assert.AreEqual("1", groups["firstValue"].Value);
            Assert.AreEqual("+", groups["operation"].Value);
            Assert.AreEqual("2", groups["secondValue"].Value);
        }
Пример #13
0
        public void IsChinese_ChineseValue_Ture()
        {
            //Arrange
            RegexService regexService = new RegexService();
            bool         expected     = true;
            //Acaual
            bool actual = regexService.IsChinese("林菘彬");

            //Assert
            Assert.AreEqual(expected, actual);
        }
Пример #14
0
        public void RegexService_True_IfTenValidDigitsPassed()
        {
            var egnToTest    = "7811167244";
            var regexService = new RegexService();

            var result = regexService.IsStringValid(egnToTest, PATTERN);

            result
            .Should()
            .BeTrue();
        }
Пример #15
0
        public void RegexService_False_IfMonthBiggerFiftyNine()
        {
            var egnToTest    = "7860167244";
            var regexService = new RegexService();

            var result = regexService.IsStringValid(egnToTest, PATTERN);

            result
            .Should()
            .BeFalse();
        }
Пример #16
0
        public void RegexService_False_IfLengthBiggerThanTen()
        {
            var egnToTest    = "784578781236";
            var regexService = new RegexService();

            var result = regexService.IsStringValid(egnToTest, PATTERN);

            result
            .Should()
            .BeFalse();
        }
Пример #17
0
        public void IsChinese_EnglishValue_False()
        {
            //Arrange
            RegexService regexService = new RegexService();
            bool         expected     = false;
            //Acaual
            bool actual = regexService.IsChinese("English");

            //Assert
            Assert.AreEqual(expected, actual);
        }
Пример #18
0
        public void IsChinese_MixEnglishIAfterChinese_Ture()
        {
            //Arrange
            RegexService regexService = new RegexService();
            bool         expected     = false;
            //Acaual
            bool actual = regexService.IsChinese("林菘彬Lin");

            //Assert
            Assert.AreEqual(expected, actual);
        }
Пример #19
0
        public void IsChinese_NumberValue_Ture()
        {
            //Arrange
            RegexService regexService = new RegexService();
            bool         expected     = false;
            //Acaual
            bool actual = regexService.IsChinese("1234");

            //Assert
            Assert.AreEqual(expected, actual);
        }
Пример #20
0
        public void RegexService_False_IfAnyLetteraInString()
        {
            var egnToTest    = "8114523A66";
            var regexService = new RegexService();

            var result = regexService.IsStringValid(egnToTest, PATTERN);

            result
            .Should()
            .BeFalse();
        }
Пример #21
0
        public void RegexService_False_IfTenInvalidDigitsPassed()
        {
            var egnToTest    = "9999999999";
            var regexService = new RegexService();

            var result = regexService.IsStringValid(egnToTest, PATTERN);

            result
            .Should()
            .BeFalse();
        }
Пример #22
0
        public void FindMultipleMinusSymbol()
        {
            var regex    = RegexService.GetRegex_FindMultipleMinusSymbol();
            var minuses1 = "--";
            var minuses2 = "-------";
            var input    = $"{minuses1}a{minuses2}b";
            var matches  = regex.Matches(input);

            Assert.AreEqual(2, matches.Count);
            Assert.AreEqual(minuses1, matches[0].Value);
            Assert.AreEqual(minuses2, matches[1].Value);
        }
Пример #23
0
        public RegexParserTests()
        {
            var configMock = new Mock <IConfiguration>();

            configMock.Setup(config => config["RegexPattern"]).Returns(@"(.{1,3})(\b|.{3}),([\d]*),(\d*\.?\d*$)");

            var inputValidatorMock = new Mock <IInputValidatorService>();

            inputValidatorMock.Setup(validator => validator.Validate(It.IsAny <string>())).Returns(true);

            _regexService = new RegexService(configMock.Object, inputValidatorMock.Object);
        }
Пример #24
0
        private async Task GetNameAndImagesForCsgo()
        {
            _logger.Info($"Starting image fetchin for CSGO");
            var request       = new RequestMessage(HttpMethod.Get, $"http://api.csgo.steamlytics.xyz/v1/items?key={_configuration.ApiKey}");
            var imageResponse = await _httpRequestParser.ExecuteRawAsync(request);

            var response  = CsgoSteamlyticsResource.FromJson(imageResponse);
            var listCount = response.NumItems;
            var list      = response.Items;
            var regex     = new Regex("\\/\\/steamcommunity-a.akamaihd.net\\/economy\\/image\\/(.+)");

            var csgoPricing = await _pricingRepository.GetAllAsync(SteamGames.Csgo);

            var regExService = new RegexService();

            for (var index = 0; index < listCount; index++)
            {
                var item = list[index];
                var name = item.MarketHashName;
                if (string.IsNullOrEmpty(item.IconUrl))
                {
                    continue;
                }

                string regExMatch;
                try
                {
                    regExMatch = regExService.GetFirstGroupMatch(regex, item.IconUrl);
                }
                catch (Exception e)
                {
                    e.Data.Add("name", name);
                    throw;
                }

                var imgUrl = regExMatch;
                foreach (var csgoItem in csgoPricing.Items)
                {
                    if (csgoItem.MarketHashName != name)
                    {
                        continue;
                    }
                    csgoItem.IconUrl = imgUrl;
                    break;
                }
            }

            await _pricingRepository.InsertOrUpdateAsync(csgoPricing);

            _logger.Info($"Images for CSGO done");
        }
Пример #25
0
        private async Task GetNameAndImagesForPubg()
        {
            _logger.Info($"Starting image fetchin for PUBG");

            var nameAndImages = await _steamMarketScraperService.Scrape(SteamPaymentMethodToAppId.ToInt(SteamGames.Pubg));

            var regex = new Regex("/economy\\/image\\/([^/]*)");

            var pubgPricing = await _pricingRepository.GetAllAsync(SteamGames.Pubg);

            var regExService = new RegexService();

            for (var index = 0; index < nameAndImages.Count; index++)
            {
                var item = nameAndImages[index];
                var name = item.Name;
                if (string.IsNullOrEmpty(item.ImageSrc))
                {
                    continue;
                }

                string regExMatch;
                try
                {
                    regExMatch = regExService.GetFirstGroupMatch(regex, item.ImageSrc);
                }
                catch (Exception e)
                {
                    e.Data.Add("name", name);
                    throw;
                }

                var imgUrl = regExMatch;

                foreach (var pubgItem in pubgPricing.Items)
                {
                    if (pubgItem.MarketHashName != name)
                    {
                        continue;
                    }
                    pubgItem.IconUrl = imgUrl;
                    break;
                }
            }

            await _pricingRepository.InsertOrUpdateAsync(pubgPricing);

            _logger.Info($"Images for PUBG done");
        }
Пример #26
0
        private static async Task <string> GetMovie(string movieUrl)
        {
            string pattern1 = "/movie/trailer.*[0-9]\"";
            string pattern2 = "http.*.mp4";
            string temp     = await HttpServices.SendGetRequestAsync(movieUrl);

            string regular = RegexService.RegexAdapt(pattern1, temp);

            movieUrl  = movieUrl.Remove(20);
            movieUrl += regular.Remove(regular.LastIndexOf("\""));
            temp      = await HttpServices.SendGetRequestAsync(movieUrl);

            regular = RegexService.RegexAdapt(pattern2, temp);
            return(regular);
        }
Пример #27
0
 private void ContinueButton_Click(object sender, EventArgs e)
 {
     if (!RegexService.CheckNum(distanceTextBox.Text))
     {
         MessageBox.Show(
             "Введите дистанцию",
             "Ошибка",
             MessageBoxButtons.OK,
             MessageBoxIcon.Error);
     }
     else
     {
         DialogResult = DialogResult.OK;
         Close();
     }
 }
Пример #28
0
        /// <summary>
        ///     Пока что работает только на знаки "-"
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public static string RemoveExcessLeadingSign(this string value)
        {
            var regex = RegexService.GetRegex_FindMultipleMinusSymbol();
            var match = regex.Match(value);

            if (match.Success)
            {
                if (match.Length % 2 > 0)
                {
                    return(regex.Replace(value, "-"));
                }
                return(regex.Replace(value, ""));
            }

            return(value);
        }
Пример #29
0
        static void Main(string[] args)
        {
            string[] result = new string[5];

            List <IMyRegex> regices = new List <IMyRegex>();

            regices.Add(new ARegex());
            regices.Add(new BRegex());

            // 從外部決定 哪些 Regex 要判斷,由建構子傳入
            RegexService regexService = new RegexService(regices);

            regexService.GetResult("AAA", result);

            Console.ReadLine();
        }
Пример #30
0
        public Menu()
        {
            regexService  = new RegexService();
            nameGenerator = new FileNameGenerator();

            studentConfigurationService  = new FileConfigurationService <Student>();
            doctorConfigurationService   = new FileConfigurationService <Doctor>();
            mechanicConfigurationService = new FileConfigurationService <Mechanic>();

            name              = "data";
            extension         = "txt";
            studentReadWrite  = studentConfigurationService.ConfigureFileService(name, extension, "student", nameGenerator);
            doctorReadWrite   = doctorConfigurationService.ConfigureFileService(name, extension, "doctor", nameGenerator);
            mechanicReadWrite = mechanicConfigurationService.ConfigureFileService(name, extension, "mechanic", nameGenerator);

            PrintMenu();
        }