// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.data.osm.history;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.junit.Rule;
import org.junit.Test;
import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
import org.openstreetmap.josm.data.osm.RelationMemberData;
import org.openstreetmap.josm.data.osm.User;
import org.openstreetmap.josm.gui.DefaultNameFormatter;
import org.openstreetmap.josm.testutils.JOSMTestRules;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
/**
* Unit tests for class {@link HistoryRelation}.
*/
public class HistoryRelationTest {
/**
* Setup test.
*/
@Rule
@SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
public JOSMTestRules test = new JOSMTestRules();
private static HistoryRelation create(Date d) {
return new HistoryRelation(
1, // id
2, // version
true, // visible
User.createOsmUser(3, "testuser"),
4, // changesetId
d // timestamp
);
}
/**
* Unit test for {@link HistoryRelation#HistoryRelation}.
*/
@Test
public void testHistoryRelation() {
Date d = new Date();
HistoryRelation rel = create(d);
assertEquals(1, rel.getId());
assertEquals(2, rel.getVersion());
assertTrue(rel.isVisible());
assertEquals("testuser", rel.getUser().getName());
assertEquals(3, rel.getUser().getId());
assertEquals(4, rel.getChangesetId());
assertEquals(d, rel.getTimestamp());
}
/**
* Unit test for {@link HistoryRelation#getType}.
*/
@Test
public void testGetType() {
assertEquals(OsmPrimitiveType.RELATION, create(new Date()).getType());
}
/**
* Unit test for {@link HistoryRelation#getDisplayName}.
*/
@Test
public void testGetDisplayName() {
HistoryNameFormatter hnf = DefaultNameFormatter.getInstance();
HistoryRelation rel0 = create(new Date()); // 0 member
HistoryRelation rel1 = create(new Date()); // 1 member
HistoryRelation rel2 = create(new Date()); // 2 members
rel1.addMember(new RelationMemberData(null, OsmPrimitiveType.NODE, 1));
rel2.addMember(new RelationMemberData(null, OsmPrimitiveType.NODE, 1));
rel2.addMember(new RelationMemberData(null, OsmPrimitiveType.NODE, 2));
// CHECKSTYLE.OFF: SingleSpaceSeparator
assertEquals("relation (1, 0 members)", rel0.getDisplayName(hnf));
assertEquals("relation (1, 1 member)", rel1.getDisplayName(hnf));
assertEquals("relation (1, 2 members)", rel2.getDisplayName(hnf));
Map<String, String> map = new HashMap<>();
map.put("name", "RelName");
rel0.setTags(map);
rel1.setTags(map);
rel2.setTags(map);
assertEquals("relation (\"RelName\", 0 members)", rel0.getDisplayName(hnf));
assertEquals("relation (\"RelName\", 1 member)", rel1.getDisplayName(hnf));
assertEquals("relation (\"RelName\", 2 members)", rel2.getDisplayName(hnf));
// CHECKSTYLE.ON: SingleSpaceSeparator
}
}