// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.gui.conflict.pair;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import org.junit.Rule;
import org.junit.Test;
import org.openstreetmap.josm.command.SequenceCommand;
import org.openstreetmap.josm.data.conflict.Conflict;
import org.openstreetmap.josm.data.coor.LatLon;
import org.openstreetmap.josm.data.osm.Node;
import org.openstreetmap.josm.data.osm.Relation;
import org.openstreetmap.josm.data.osm.Way;
import org.openstreetmap.josm.testutils.JOSMTestRules;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
/**
* Unit tests of {@link ConflictResolver} class.
*/
public class ConflictResolverTest {
/**
* Setup test.
*/
@Rule
@SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
public JOSMTestRules test = new JOSMTestRules().preferences();
/**
* Unit test of {@link ConflictResolver#buildResolveCommand} - empty case.
*/
@Test
public void testBuildResolveCommandEmpty() {
assertNotNull(new ConflictResolver().buildResolveCommand());
}
/**
* Unit test of {@link ConflictResolver#buildResolveCommand} - node case.
*/
@Test
public void testBuildResolveCommandNode() {
ConflictResolver resolver = new ConflictResolver();
Node n1 = new Node(LatLon.SOUTH_POLE);
n1.put("source", "my");
Node n2 = new Node(LatLon.NORTH_POLE);
n2.put("source", "theirs");
resolver.populate(new Conflict<>(n1, n2));
resolver.decideRemaining(MergeDecisionType.KEEP_MINE);
assertFalse(((SequenceCommand) resolver.buildResolveCommand()).getChildren().isEmpty());
}
/**
* Unit test of {@link ConflictResolver#buildResolveCommand} - way case.
*/
@Test
public void testBuildResolveCommandWay() {
ConflictResolver resolver = new ConflictResolver();
Way w1 = new Way();
w1.put("source", "my");
Way w2 = new Way();
w2.put("source", "theirs");
resolver.populate(new Conflict<>(w1, w2));
resolver.decideRemaining(MergeDecisionType.KEEP_MINE);
assertFalse(((SequenceCommand) resolver.buildResolveCommand()).getChildren().isEmpty());
}
/**
* Unit test of {@link ConflictResolver#buildResolveCommand} - relation case.
*/
@Test
public void testBuildResolveCommandRelation() {
ConflictResolver resolver = new ConflictResolver();
Relation r1 = new Relation();
r1.put("source", "my");
Relation r2 = new Relation();
r2.put("source", "theirs");
resolver.populate(new Conflict<>(r1, r2));
resolver.decideRemaining(MergeDecisionType.KEEP_MINE);
assertFalse(((SequenceCommand) resolver.buildResolveCommand()).getChildren().isEmpty());
}
}