Make valid language tag regex case sensitive (#1117)

pull/1121/head
Michael Barry 2024-11-30 11:36:31 -05:00 zatwierdzone przez GitHub
rodzic 3d14afdd6b
commit c2c8cbe6ef
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: B5690EEEBB952194
2 zmienionych plików z 39 dodań i 23 usunięć

Wyświetl plik

@ -10,7 +10,7 @@ public class LanguageUtils {
// See https://wiki.openstreetmap.org/wiki/Multilingual_names // See https://wiki.openstreetmap.org/wiki/Multilingual_names
public static final Predicate<String> VALID_NAME_TAGS = public static final Predicate<String> VALID_NAME_TAGS =
Pattern Pattern
.compile("^name:[a-z]{2,3}(-[a-z]{4})?([-_](x-)?[a-z]{2,})?(-([a-z]{2}|\\d{3}))?$", Pattern.CASE_INSENSITIVE) .compile("^name:[a-z]{2,3}(-[A-Z][a-z]{3})?([-_](x-)?[a-z]{2,})?(-([A-Z]{2}|\\d{3}))?$")
.asMatchPredicate(); .asMatchPredicate();
// See https://github.com/onthegomap/planetiler/issues/86 // See https://github.com/onthegomap/planetiler/issues/86
// Match strings that only contain latin characters. // Match strings that only contain latin characters.

Wyświetl plik

@ -1,9 +1,12 @@
package com.onthegomap.planetiler.util; package com.onthegomap.planetiler.util;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource; import org.junit.jupiter.params.provider.CsvSource;
import org.junit.jupiter.params.provider.ValueSource;
class LanguageUtilsTest { class LanguageUtilsTest {
@ -26,28 +29,41 @@ class LanguageUtilsTest {
} }
@ParameterizedTest @ParameterizedTest
@CsvSource(value = { @ValueSource(strings = {
"name:es, true", "name:es",
"name:en-US, true", "name:en-US",
"name:fr-x-gallo, true", "name:en-001",
"name:ko-Latn, true", "name:fr-x-gallo",
"name:be-tarask, true", "name:ko-Latn",
"name:ja_rm, true", "name:be-tarask",
"name:ja_kana, true", "name:ja_rm",
"name:vls, true", "name:ja_kana",
"name:zh-hant-CN, true", "name:vls",
"name:zh_pinyin, true", "name:zh-hant-CN",
"name:zh_zhuyin, true", "name:zh_pinyin",
"name:zh-Latn-tongyong, true", "name:zh_zhuyin",
"name:zh-Latn-pinyin, true", "name:zh-Latn-tongyong",
"name:zh-Latn-wadegiles, true", "name:zh-Latn-pinyin",
"name:yue-Latn-jyutping, true", "name:zh-Latn-wadegiles",
"nombre, false", "name:yue-Latn-jyutping",
"name:, false", "name:tec",
"name:xxxxx, false", "name:be-tarask",
}, nullValues = "null") "name:nan-Latn-pehoeji",
void testIsValidOsmNameTag(String in, boolean out) { "name:zh-Latn-pinyin",
assertEquals(out, LanguageUtils.isValidOsmNameTag(in)); })
void testIsValidOsmNameTag(String in) {
assertTrue(LanguageUtils.isValidOsmNameTag(in));
}
@ParameterizedTest
@ValueSource(strings = {
"nombre",
"name:",
"name:xxxxx",
"name:TEC",
})
void testIsNotValidOsmNameTag(String in) {
assertFalse(LanguageUtils.isValidOsmNameTag(in));
} }
} }