OnionGrief / Chipollino

преобразования регулярных выражений и конечных автоматов
Other
19 stars 4 forks source link

Обновление и расширение модуля тестов test_arden #302

Open AngelicHedgehog opened 9 months ago

AngelicHedgehog commented 9 months ago

Требуется обновить тесты преобразования КА в регулярку на более содержательные, пограничные и верные

@xendalm says:

Сохранение языка повлияет на тестирование. Я заметил, что мы когда-то написали глупый тест, который не будет ничего проверять.

Regex reg(rgx_str);
ASSERT_TRUE(Regex::equivalent(reg, reg.to_thompson().to_regex()));

Здесь to_regex() будет возвращать нам регулярку в языке исходной. А значит метод equivalent, который проверяет на равенство как раз минимальные автоматы, не будет их строить и просто вернет истину. Должно быть что-то типа такого:

auto test_equivalence = [](const string& rgx_str) {
  Regex r1(rgx_str), r2(rgx_str);
  ASSERT_TRUE(Regex::equivalent(r1, r2.to_thompson().to_regex()));
  ASSERT_TRUE(Regex::equivalent(r1, r2.to_glushkov().to_regex()));
  ASSERT_TRUE(Regex::equivalent(r1, r2.to_ilieyu().to_regex()));
  ASSERT_TRUE(Regex::equivalent(r1, r2.to_antimirov().to_regex()));
};

Понимаю, что это совсем не очевидно на первый взгляд. Можно будет потом как-нибудь ввести тестовый режим, при котором, кэширование отключается.

xendalm commented 9 months ago

Тесты могут быть не обязательно на эквивалентность. Краевые кейсы ардена, наверное, логичнее проверять через to_txt() == "..."

xendalm commented 9 months ago

Из юнитов все же ещё надо убрать лишнее и дополнить осмысленными кейсами