From fe167c76fde7cd3f3d3b6546b8efdad82f981d57 Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Sat, 26 Sep 2020 08:38:07 +0200 Subject: [PATCH] just make sure #197 isn't caused by conditional ElementSelector --- .../xmlunit/diff/DefaultNodeMatcherTest.java | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/xmlunit-core/src/test/java/org/xmlunit/diff/DefaultNodeMatcherTest.java b/xmlunit-core/src/test/java/org/xmlunit/diff/DefaultNodeMatcherTest.java index 9d7bfeb3..e9e2bb76 100644 --- a/xmlunit-core/src/test/java/org/xmlunit/diff/DefaultNodeMatcherTest.java +++ b/xmlunit-core/src/test/java/org/xmlunit/diff/DefaultNodeMatcherTest.java @@ -44,7 +44,7 @@ public void elementSelectorsAreQueriedInSequence() { control1.appendChild(doc.createTextNode("foo")); Element control2 = doc.createElement("a"); control2.appendChild(doc.createTextNode("bar")); - + Element test1 = doc.createElement("a"); test1.appendChild(doc.createTextNode("baz")); Element test2 = doc.createElement("a"); @@ -65,4 +65,34 @@ public void elementSelectorsAreQueriedInSequence() { assertSame(control2, result.get(1).getKey()); assertSame(test1, result.get(1).getValue()); } + + @Test + // https://github.com/xmlunit/xmlunit/issues/197 + public void elementSelectorsAreQueriedInSequenceWithConditionalSelector() { + Element control1 = doc.createElement("a"); + control1.appendChild(doc.createTextNode("foo")); + Element control2 = doc.createElement("a"); + control2.appendChild(doc.createTextNode("bar")); + + Element test1 = doc.createElement("a"); + test1.appendChild(doc.createTextNode("baz")); + Element test2 = doc.createElement("a"); + test2.appendChild(doc.createTextNode("foo")); + + DefaultNodeMatcher m = + new DefaultNodeMatcher(ElementSelectors.selectorForElementNamed("a", ElementSelectors.byNameAndText), + ElementSelectors.byName); + List> result = + Linqy.asList(m.match(Arrays.asList(control1, control2), + Arrays.asList(test1, test2))); + assertEquals(2, result.size()); + + // byNameAndText + assertSame(control1, result.get(0).getKey()); + assertSame(test2, result.get(0).getValue()); + + // byName + assertSame(control2, result.get(1).getKey()); + assertSame(test1, result.get(1).getValue()); + } }