// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.data.validation.tests; import static org.junit.Assert.assertEquals; import java.util.List; import org.junit.Rule; import org.junit.Test; import org.openstreetmap.josm.data.osm.OsmUtils; import org.openstreetmap.josm.data.validation.TestError; import org.openstreetmap.josm.testutils.JOSMTestRules; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; /** * JUnit Test of "Name mismatch" validation test. */ public class NameMismatchTest { /** * Setup test. */ @Rule @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD") public JOSMTestRules test = new JOSMTestRules(); List<TestError> test(String primitive) { final NameMismatch test = new NameMismatch(); test.check(OsmUtils.createPrimitive(primitive)); return test.getErrors(); } /** * Test "A name is missing, even though name:* exists." */ @Test public void testCase0() { final List<TestError> errors = test("node name:de=Europa"); assertEquals(1, errors.size()); assertEquals("A name is missing, even though name:* exists.", errors.get(0).getMessage()); } /** * Test "Missing name:*={0}. Add tag with correct language key." */ @Test public void testCase1() { final List<TestError> errors = test("node name=Europe name:de=Europa"); assertEquals(1, errors.size()); assertEquals("Missing name:*=Europe. Add tag with correct language key.", errors.get(0).getDescription()); } /** * Test no error */ @Test public void testCase2() { final List<TestError> errors = test("node name=Europe name:de=Europa name:en=Europe"); assertEquals(0, errors.size()); } /** * Various other tests */ @Test public void testCase3() { List<TestError> errors; errors = test("node \"name\"=\"Italia - Italien - Italy\""); assertEquals(0, errors.size()); errors = test("node name=\"Italia - Italien - Italy\" name:it=Italia"); assertEquals(2, errors.size()); errors = test("node name=\"Italia - Italien - Italy\" name:it=Italia name:de=Italien"); assertEquals(1, errors.size()); assertEquals("Missing name:*=Italy. Add tag with correct language key.", errors.get(0).getDescription()); errors = test("node name=\"Italia - Italien - Italy\" name:it=Italia name:de=Italien name:en=Italy"); assertEquals(0, errors.size()); } /** * Test that {@code name:etymology:wikidata} does not count. */ @Test public void testEtymologyWikidata() { final List<TestError> errors = test("node name=Foo name:etymology:wikidata=Bar"); assertEquals(0, errors.size()); } }