diff --git a/src/test/java/org/codehaus/plexus/util/xml/Xpp3DomTest.java b/src/test/java/org/codehaus/plexus/util/xml/Xpp3DomTest.java index db390ef3..ec4f4ee3 100644 --- a/src/test/java/org/codehaus/plexus/util/xml/Xpp3DomTest.java +++ b/src/test/java/org/codehaus/plexus/util/xml/Xpp3DomTest.java @@ -153,7 +153,7 @@ public void testShouldPerformSelfOverrideAtTopLevel() *

testShouldMergeValuesAtTopLevelByDefault.

*/ @Test - public void testShouldMergeValuesAtTopLevelByDefault() + public void testShouldNotMergeValuesAtTopLevelByDefault() { // create the dominant DOM Xpp3Dom t1 = new Xpp3Dom( "top" ); @@ -172,15 +172,15 @@ public void testShouldMergeValuesAtTopLevelByDefault() // this is still 2, since we're not using the merge-control attribute. assertEquals( 2, result.getAttributeNames().length ); - assertEquals( result.getValue(), t2.getValue() ); - assertEquals( "t2top", result.getInputLocation() ); + assertEquals( result.getValue(), t1.getValue() ); + assertEquals( "t1top", result.getInputLocation() ); } /** *

testShouldMergeValuesAtTopLevel.

*/ @Test - public void testShouldMergeValuesAtTopLevel() + public void testShouldNotMergeValues() { // create the dominant DOM Xpp3Dom t1 = new Xpp3Dom( "top" ); @@ -197,7 +197,7 @@ public void testShouldMergeValuesAtTopLevel() Xpp3Dom result = Xpp3Dom.mergeXpp3Dom( t1, t2 ); assertEquals( 3, result.getAttributeNames().length ); - assertEquals( result.getValue(), t2.getValue() ); + assertNull( result.getValue(), t1.getValue() ); } /** diff --git a/src/test/java/org/codehaus/plexus/util/xml/Xpp3DomUtilsTest.java b/src/test/java/org/codehaus/plexus/util/xml/Xpp3DomUtilsTest.java index 9e244f19..74c08baf 100644 --- a/src/test/java/org/codehaus/plexus/util/xml/Xpp3DomUtilsTest.java +++ b/src/test/java/org/codehaus/plexus/util/xml/Xpp3DomUtilsTest.java @@ -17,6 +17,7 @@ */ import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; import java.io.IOException; import java.io.StringReader; @@ -150,6 +151,57 @@ public void testIsNotEmptyNegatesIsEmpty() assertEquals( !Xpp3DomUtils.isEmpty( "someValue" ), Xpp3DomUtils.isNotEmpty( "someValue" ) ); } + /** + *

testShouldMergeValuesAtTopLevelByDefault.

+ */ + @Test + public void testShouldNotMergeValuesAtTopLevelByDefault() + { + // create the dominant DOM + Xpp3Dom t1 = new Xpp3Dom( "top" ); + t1.setAttribute( "attr", "value" ); + t1.setInputLocation( "t1top" ); + + // create the recessive DOM + Xpp3Dom t2 = new Xpp3Dom( "top" ); + t2.setAttribute( "attr2", "value2" ); + t2.setValue( "t2Value" ); + t2.setInputLocation( "t2top" ); + + // merge and check results. + Xpp3Dom result = Xpp3DomUtils.mergeXpp3Dom( t1, t2 ); + + // this is still 2, since we're not using the merge-control attribute. + assertEquals( 2, result.getAttributeNames().length ); + + assertEquals( result.getValue(), t1.getValue() ); + assertEquals( "t1top", result.getInputLocation() ); + } + + /** + *

testShouldMergeValuesAtTopLevel.

+ */ + @Test + public void testShouldNotMergeValues() + { + // create the dominant DOM + Xpp3Dom t1 = new Xpp3Dom( "top" ); + t1.setAttribute( "attr", "value" ); + + t1.setAttribute( Xpp3Dom.SELF_COMBINATION_MODE_ATTRIBUTE, Xpp3Dom.SELF_COMBINATION_MERGE ); + + // create the recessive DOM + Xpp3Dom t2 = new Xpp3Dom( "top" ); + t2.setAttribute( "attr2", "value2" ); + t2.setValue( "t2Value" ); + + // merge and check results. + Xpp3Dom result = Xpp3DomUtils.mergeXpp3Dom( t1, t2 ); + + assertEquals( 3, result.getAttributeNames().length ); + assertNull( result.getValue(), t1.getValue() ); + } + private static class FixedInputLocationBuilder implements Xpp3DomBuilder.InputLocationBuilder {