// 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.coor.LatLon;
import org.openstreetmap.josm.data.osm.Node;
import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
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 HistoryNode}.
*/
public class HistoryNodeTest {
/**
* Setup test.
*/
@Rule
@SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
public JOSMTestRules test = new JOSMTestRules();
private static HistoryNode create(Date d) {
return new HistoryNode(
1L, // id
2L, // version
true, // visible
User.createOsmUser(3, "testuser"),
4L, // changesetId
d, // timestamp
LatLon.ZERO
);
}
/**
* Unit test for {@link HistoryNode#HistoryNode}.
*/
@Test
public void testHistoryNode() {
Date d = new Date();
HistoryNode node = create(d);
assertEquals(1, node.getId());
assertEquals(2, node.getVersion());
assertTrue(node.isVisible());
assertEquals("testuser", node.getUser().getName());
assertEquals(3, node.getUser().getId());
assertEquals(4, node.getChangesetId());
assertEquals(d, node.getTimestamp());
}
/**
* Unit test for {@link HistoryNode#getType}.
*/
@Test
public void testGetType() {
assertEquals(OsmPrimitiveType.NODE, create(new Date()).getType());
}
/**
* Unit test for {@link HistoryNode#getCoords}.
*/
@Test
public void testGetCoords() {
Node n = new Node(new LatLon(45, 0));
n.setOsmId(1, 2);
n.setUser(User.createOsmUser(3, "testuser"));
n.setChangesetId(4);
assertEquals(n.getCoor(), new HistoryNode(n).getCoords());
}
/**
* Unit test for {@link HistoryNode#getDisplayName}.
*/
@Test
public void testGetDisplayName() {
HistoryNode node = create(new Date());
HistoryNameFormatter hnf = DefaultNameFormatter.getInstance();
assertEquals("1 (0.0, 0.0)", node.getDisplayName(hnf));
LatLon ll = node.getCoords();
node.setCoords(null);
assertEquals("1", node.getDisplayName(hnf));
node.setCoords(ll);
Map<String, String> map = new HashMap<>();
map.put("name", "NodeName");
node.setTags(map);
assertEquals("NodeName (0.0, 0.0)", node.getDisplayName(hnf));
node.setCoords(null);
assertEquals("NodeName", node.getDisplayName(hnf));
}
}