*/
package org.opendaylight.yangtools.yang.xpath.impl;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.isA;
import static org.junit.Assert.assertEquals;
import com.google.common.collect.ImmutableBiMap;
-import java.net.URI;
import javax.xml.xpath.XPathExpressionException;
import org.eclipse.jdt.annotation.Nullable;
import org.junit.Before;
import org.junit.Test;
import org.opendaylight.yangtools.yang.common.BiMapYangNamespaceContext;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.XMLNamespace;
import org.opendaylight.yangtools.yang.common.YangNamespaceContext;
+import org.opendaylight.yangtools.yang.xpath.api.YangBinaryExpr;
+import org.opendaylight.yangtools.yang.xpath.api.YangBinaryOperator;
import org.opendaylight.yangtools.yang.xpath.api.YangBooleanConstantExpr;
import org.opendaylight.yangtools.yang.xpath.api.YangExpr;
+import org.opendaylight.yangtools.yang.xpath.api.YangLocationPath;
+import org.opendaylight.yangtools.yang.xpath.api.YangXPathAxis;
import org.opendaylight.yangtools.yang.xpath.api.YangXPathMathMode;
@SuppressWarnings("null")
public class XPathParserTest {
- private static final QNameModule DEFNS = QNameModule.create(URI.create("defaultns"));
+ private static final QNameModule DEFNS = QNameModule.create(XMLNamespace.of("defaultns"));
private static final YangNamespaceContext CONTEXT = new BiMapYangNamespaceContext(ImmutableBiMap.of(
"def", DEFNS,
- "foo", QNameModule.create(URI.create("foo")),
- "bar", QNameModule.create(URI.create("bar"))));
+ "foo", QNameModule.create(XMLNamespace.of("foo")),
+ "bar", QNameModule.create(XMLNamespace.of("bar"))));
private @Nullable AntlrXPathParser parser;
assertEquals(YangBooleanConstantExpr.TRUE, parseExpr("2 = (1 + 1)"));
}
+ @Test
+ public void testGreaterEqualReference() throws XPathExpressionException {
+ final YangExpr expr = parseExpr(". >= ../lower-port");
+ assertThat(expr, isA(YangBinaryExpr.class));
+
+ final YangBinaryExpr binary = (YangBinaryExpr) expr;
+ assertEquals(YangBinaryOperator.GTE, binary.getOperator());
+ assertEquals(YangLocationPath.self(), binary.getLeftExpr());
+ assertEquals(YangLocationPath.relative(YangXPathAxis.PARENT.asStep(),
+ YangXPathAxis.CHILD.asStep(QName.create(DEFNS, "lower-port"))), binary.getRightExpr());
+ }
+
private YangExpr parseExpr(final String xpath) throws XPathExpressionException {
return parser.parseExpression(xpath).getRootExpr();
}