Add XMLNamespace
[yangtools.git] / yang / yang-xpath-impl / src / test / java / org / opendaylight / yangtools / yang / xpath / impl / XPathParserTest.java
index c4196b546cbb58780d232c03734689843a7bd45a..ecd55ddcaa6d59d008ea5e48177bed79b192e57a 100644 (file)
@@ -7,28 +7,35 @@
  */
 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;
 
@@ -102,6 +109,18 @@ public class XPathParserTest {
         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();
     }