private void xPathGetter(String resourceName) throws Exception {
Document doc = XmlUtils.loadXml(JuUrl.resource().relativeTo(XmlUtilsTest.class).get(resourceName));
XPathGetter xg = new XPathGetter(doc);
assertEquals("XPathGetter[node=#document,nodeValue=<null>]", xg.toString());
assertArrayEquals(xg.getArray("//a1/*/@text"), new String[] {"B2", "B2", "B3"});
assertArrayEquals(xg.getArrayLong("//*/@value"), new Long[] {1L, 2L, 2L});
assertArrayEquals(xg.getDistinctArray("//b3/*/@value"), new String[] {"2"});
assertArrayEquals(xg.getDistinctArrayLong("//b3/*/@value"), new Long[] {2L});
assertEquals(xg.getGetter("//b3").getSingle("@text"), "B3");
XPathGetter xgSubs[] = xg.getGetters("//b3/*");
assertEquals(xgSubs.length, 2);
assertEquals(xgSubs[0].getSingle("@text"), "C2");
assertEquals("XPathGetter[node=c2,nodeValue=<null>]", xgSubs[0].toString());
assertEquals(xgSubs[1].getSingle("@text"), "C3");
assertEquals("XPathGetter[node=c3,nodeValue=<null>]", xgSubs[1].toString());
assertEquals(xg.getNode("root"), doc.getDocumentElement());
Node bNodes[] = xg.getNodes("//a1/*");
assertEquals(bNodes.length, 3);
assertEquals(bNodes[2].getNodeName(), "b3");
assertEquals(xg.getSingle("/root/a1/@text"), "A1");
assertEquals(xg.getSingleLong("/root/a1/b2/c1/@value"), new Long(1));
assertEquals(3, xg.getCount("//a1/*"));
}