При выполнении теста своего метода, для заполнения Dictionary , он полностью забивает память. Тест не может остановиться

Подскажите ошибку в коде. Мне необходимо создать Dictionary и заполнить её странами с ключом это код страны , например RU, а значение это наименование Россия. Я использую RegionInfo, CultureInfo , просто прохожусь циклом и идет заполнение. Второй метод , принимает текст и ищет там коды стран , после чего должен вывести их значения. Пробую использовать xUnit (первый раз, нету опыта с ним) , когда запускаю метод , то он просто бесконечно грузит и в итоге переполняет память , что все виснет.

Тест:

 public class UnitTest1
    {
        [Fact]
        public void ItShould_UnderTesting()
        { 
            //Arrange
            var sut = new CountriesFilter();

            //Act
           var d = sut.Text_Regul("gh bbff swvw'RU', 'DE' ggg ");

            //Assert

            Assert.NotNull(d);

        }

Код:

      public class CountriesFilter
            {
                public static IDictionary<string, string> GettingTextReg()
                {
                    var allCultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures);
                    
        
        
                    var codeandname = new Dictionary<string, string>(allCultures.Length);
        
                    foreach(var i in allCultures)
                    {
                        RegionInfo regionInfo = new RegionInfo(i.Name);
                        if (codeandname.Count(x => x.Key == regionInfo.TwoLetterISORegionName) == 0)
                        {
        
                            codeandname.Add(regionInfo.TwoLetterISORegionName, regionInfo.DisplayName);
                        }
                    }
        
                    return codeandname;
                }
    
    public List<string> Text_Regul(string text)
            {
    
                List<string> coun = null;
                try
                {
                    var list = GettingTextReg();
    
                    string pattern = string.Format("\'({0})\'", string.Join("|", list.Keys));
    
                    Match mat = Regex.Match(text, pattern);
    
                    coun = new List<string>();
    
                    while (mat.Success)
                    {
                        coun.Add(mat.Value);
                    }
    
                    
    
                } catch(ArgumentNullException e)
                {
    
                    throw new ArgumentNullException(e.Message);
                }
    
               return coun;
          

  }
      } 
    }

Ответы (1 шт):

Автор решения: VladD
while (mat.Success)
{
    coun.Add(mat.Value);
}

— это бесконечный цикл. Вы всё время добавляете одно и то же значение, ничего не меняется между итерациями.

Вероятно, вы хотели написать

foreach (Match mat in Regex.Matches(text, pattern))
{
    coun.Add(mat.Value);
}
→ Ссылка