package ru.pdguard.detect; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; /** Словарь населённых пунктов — не только города, но и сёла, посёлки, деревни, хутора. */ class ToponymDictionaryTest { @Test void recognisesNominativeCase() { assertTrue(ToponymDictionary.isKnownSettlement("Москва")); assertTrue(ToponymDictionary.isKnownSettlement("Казань")); assertTrue(ToponymDictionary.isKnownSettlement("Санкт-Петербург")); } @Test void recognisesInflectedForms() { assertTrue(ToponymDictionary.isKnownSettlement("Москве"), "дательный падеж города на гласную"); assertTrue( ToponymDictionary.isKnownSettlement("Тамбове"), "предложный падеж города на согласную"); assertTrue(ToponymDictionary.isKnownSettlement("Казани"), "родительный падеж"); } @Test void recognisesCisCapitals() { assertTrue(ToponymDictionary.isKnownSettlement("Минск")); assertTrue(ToponymDictionary.isKnownSettlement("Алматы")); } @Test void rejectsMadeUpWord() { assertFalse(ToponymDictionary.isKnownSettlement("Ерунда")); assertFalse(ToponymDictionary.isKnownSettlement("Бла-бла")); } @Test void isCaseInsensitive() { assertTrue(ToponymDictionary.isKnownSettlement("МОСКВА")); assertTrue(ToponymDictionary.isKnownSettlement("москва")); } /** * Из переписи 2020–2021, не из ручного списка городов: сёла, посёлки, деревни, хутора, станицы, * аулы, аалы — ровно то, чего не было, пока словарь ограничивался официальными городами. Примеры * из ТЗ («рп. Ильинское», «с. Кукуево») и по одному реальному названию на тип населённого пункта. */ @Test void recognisesSettlementsFromCensusNotJustOfficialCities() { assertTrue(ToponymDictionary.isKnownSettlement("Ильинское"), "рп. Ильинское — пример из ТЗ"); assertTrue(ToponymDictionary.isKnownSettlement("Кукуево"), "с. Кукуево — пример из ТЗ"); assertTrue(ToponymDictionary.isKnownSettlement("Прогресс"), "хутор"); assertTrue(ToponymDictionary.isKnownSettlement("Гиагинская"), "станица"); assertTrue(ToponymDictionary.isKnownSettlement("Блечепсин"), "аул"); assertTrue(ToponymDictionary.isKnownSettlement("Энем"), "посёлок городского типа"); assertTrue(ToponymDictionary.isKnownSettlement("Аксеновка"), "деревня"); assertTrue(ToponymDictionary.isKnownSettlement("Екатериновка"), "слобода"); assertTrue(ToponymDictionary.isKnownSettlement("Сартыков"), "аал (Хакасия)"); } }