NodeWrapper implements SiblingCountingNode { @Override public int getSiblingPosition() { int index = 0; try { final NodeReadTrx rtx = createRtxAndMove(); while (rtx.hasLeftSibling()) { rtx.moveToLeftSibling(); index++; } rtx.close(); } catch (final SirixException e) { LOGGER.error(e.getMessage(), e); } return index; } NodeWrapper(final DocumentWrapper docWrapper, final long nodeKeyToStart); @Override Value atomize(); @Override int compareOrder(final NodeInfo node); void copy(final Receiver out, final int copyOption,
			final int locationId); @Override void generateId(final FastStringBuffer buf); @Override String getAttributeValue(final int fingerprint); @Override String getBaseURI(); @Override int getColumnNumber(); @Override Configuration getConfiguration(); @Override int[] getDeclaredNamespaces(final int[] buffer); @Override String getDisplayName(); @Override long getDocumentNumber(); @Override DocumentInfo getDocumentRoot(); @Override int getFingerprint(); @Override int getLineNumber(); @Override String getLocalPart(); @Override int getNameCode(); @Override NamePool getNamePool(); @Override int getNodeKind(); @Override NodeInfo getParent(); @Override String getPrefix(); @Override NodeInfo getRoot(); @Override final String getStringValue(); @Override final CharSequence getStringValueCS(); @Override String getSystemId(); int getTypeAnnotation(); @Override String getURI(); @Override boolean hasChildNodes(); @Override boolean isId(); @Override boolean isIdref(); @Override boolean isNilled(); @Override boolean isSameNodeInfo(final NodeInfo pOther); @Override AxisIterator iterateAxis(final byte axisNumber); @Override AxisIterator iterateAxis(final byte axisNumber, final NodeTest nodeTest); @Override void setSystemId(final String systemId); @Override SequenceIterator getTypedValue(); @Override int getSiblingPosition(); long getKey();  }
@Test public void testGetSiblingPosition() { final AxisIterator iterator = node.iterateAxis(Axis.DESCENDANT); node = (NodeWrapper) iterator.next(); node = (NodeWrapper) iterator.next(); assertEquals(0, node.getSiblingPosition()); node = (NodeWrapper) iterator.next(); assertEquals(1, node.getSiblingPosition()); node = (NodeWrapper) iterator.next(); assertEquals(0, node.getSiblingPosition()); node = (NodeWrapper) iterator.next(); assertEquals(1, node.getSiblingPosition()); node = (NodeWrapper) iterator.next(); assertEquals(2, node.getSiblingPosition()); node = (NodeWrapper) iterator.next(); assertEquals(3, node.getSiblingPosition()); node = (NodeWrapper) iterator.next(); assertEquals(0, node.getSiblingPosition()); node = (NodeWrapper) iterator.next(); assertEquals(1, node.getSiblingPosition()); node = (NodeWrapper) iterator.next(); assertEquals(4, node.getSiblingPosition()); }