// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.gui.conflict.tags;
import org.junit.*;
import org.openstreetmap.josm.data.osm.Node;
import org.openstreetmap.josm.gui.conflict.pair.MergeDecisionType;
import org.openstreetmap.josm.gui.conflict.pair.tags.TagMergeItem;
import static org.junit.Assert.*;
public class TagMergeItemTest {
@Test
public void test_TagMergeItem() {
TagMergeItem item = new TagMergeItem("key", "myvalue", "theirvalue");
assertEquals("key", item.getKey());
assertEquals("myvalue", item.getMyTagValue());
assertEquals("theirvalue", item.getTheirTagValue());
assertEquals(MergeDecisionType.UNDECIDED, item.getMergeDecision());
}
@Test
public void test_TagMergeItem_2() {
Node n1 = new Node(1);
Node n2 = new Node(1);
n1.put("key", "myvalue");
n2.put("key", "theirvalue");
TagMergeItem item = new TagMergeItem("key", n1, n2);
assertEquals("key", item.getKey());
assertEquals("myvalue", item.getMyTagValue());
assertEquals("theirvalue", item.getTheirTagValue());
assertEquals(MergeDecisionType.UNDECIDED, item.getMergeDecision());
}
@Test
public void test_TagMergeItem_3() {
Node n1 = new Node(1);
Node n2 = new Node(1);
n1.put("key", "myvalue");
// n2 does not have this key
TagMergeItem item = new TagMergeItem("key", n1, n2);
assertEquals("key", item.getKey());
assertEquals("myvalue", item.getMyTagValue());
assertNull(item.getTheirTagValue());
assertEquals(MergeDecisionType.UNDECIDED, item.getMergeDecision());
}
@Test
public void test_TagMergeItem_4() {
Node n1 = new Node(1);
Node n2 = new Node(1);
// n1 does not have this key
// n1.put("key", "myvalue");
n2.put("key", "theirvalue");
TagMergeItem item = new TagMergeItem("key", n1, n2);
assertEquals("key", item.getKey());
assertNull(item.getMyTagValue());
assertEquals("theirvalue",item.getTheirTagValue());
assertEquals(MergeDecisionType.UNDECIDED, item.getMergeDecision());
}
@Test
public void test_decide() {
TagMergeItem item = new TagMergeItem("key", "myvalue", "theirvalue");
item.decide(MergeDecisionType.KEEP_MINE);
assertEquals(MergeDecisionType.KEEP_MINE, item.getMergeDecision());
}
@Test()
public void test_decide_1() {
TagMergeItem item = new TagMergeItem("key", "myvalue", "theirvalue");
try {
item.decide(null);
fail("expected IllegalArgumentException not thrown");
} catch(IllegalArgumentException e) {
// OK
}
}
@Test()
public void test_applyToMyPrimitive() {
TagMergeItem item = new TagMergeItem("key", "myvalue", "theirvalue");
item.decide(MergeDecisionType.KEEP_MINE);
Node n1 = new Node(1);
n1.put("key", "oldvalue");
item.applyToMyPrimitive(n1);
assertEquals("myvalue", n1.get("key"));
n1 = new Node(1);
item.applyToMyPrimitive(n1);
assertEquals("myvalue", n1.get("key"));
}
@Test()
public void test_applyToMyPrimitive_2() {
TagMergeItem item = new TagMergeItem("key", "myvalue", "theirvalue");
item.decide(MergeDecisionType.KEEP_THEIR);
Node n1 = new Node(1);
n1.put("key", "oldvalue");
item.applyToMyPrimitive(n1);
assertEquals("theirvalue", n1.get("key"));
n1 = new Node(1);
item.applyToMyPrimitive(n1);
assertEquals("theirvalue", n1.get("key"));
}
@Test()
public void test_applyToMyPrimitive_3() {
TagMergeItem item = new TagMergeItem("key", "myvalue", "theirvalue");
// item is undecided
// item.decide(MergeDecisionType.KEEP_THEIR);
Node n1 = new Node(1);
n1.put("key", "oldvalue");
try {
item.applyToMyPrimitive(n1);
fail("expected IllegalStateException");
} catch(IllegalStateException e) {
// OK
}
}
@Test()
public void test_applyToMyPrimitive_4() {
TagMergeItem item = new TagMergeItem("key", "myvalue", "theirvalue");
try {
item.applyToMyPrimitive(null);
fail("expected IllegalArgumentException");
} catch(IllegalArgumentException e) {
// OK
}
}
}