@@ -44,7 +44,7 @@ public void elementSelectorsAreQueriedInSequence() {
4444 control1 .appendChild (doc .createTextNode ("foo" ));
4545 Element control2 = doc .createElement ("a" );
4646 control2 .appendChild (doc .createTextNode ("bar" ));
47-
47+
4848 Element test1 = doc .createElement ("a" );
4949 test1 .appendChild (doc .createTextNode ("baz" ));
5050 Element test2 = doc .createElement ("a" );
@@ -65,4 +65,34 @@ public void elementSelectorsAreQueriedInSequence() {
6565 assertSame (control2 , result .get (1 ).getKey ());
6666 assertSame (test1 , result .get (1 ).getValue ());
6767 }
68+
69+ @ Test
70+ // https://github.com/xmlunit/xmlunit/issues/197
71+ public void elementSelectorsAreQueriedInSequenceWithConditionalSelector () {
72+ Element control1 = doc .createElement ("a" );
73+ control1 .appendChild (doc .createTextNode ("foo" ));
74+ Element control2 = doc .createElement ("a" );
75+ control2 .appendChild (doc .createTextNode ("bar" ));
76+
77+ Element test1 = doc .createElement ("a" );
78+ test1 .appendChild (doc .createTextNode ("baz" ));
79+ Element test2 = doc .createElement ("a" );
80+ test2 .appendChild (doc .createTextNode ("foo" ));
81+
82+ DefaultNodeMatcher m =
83+ new DefaultNodeMatcher (ElementSelectors .selectorForElementNamed ("a" , ElementSelectors .byNameAndText ),
84+ ElementSelectors .byName );
85+ List <Map .Entry <Node , Node >> result =
86+ Linqy .asList (m .match (Arrays .<Node >asList (control1 , control2 ),
87+ Arrays .<Node >asList (test1 , test2 )));
88+ assertEquals (2 , result .size ());
89+
90+ // byNameAndText
91+ assertSame (control1 , result .get (0 ).getKey ());
92+ assertSame (test2 , result .get (0 ).getValue ());
93+
94+ // byName
95+ assertSame (control2 , result .get (1 ).getKey ());
96+ assertSame (test1 , result .get (1 ).getValue ());
97+ }
6898}
0 commit comments