http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/3295bcc0/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/antlr/TestLexer.java
----------------------------------------------------------------------
diff --git 
a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/antlr/TestLexer.java
 
b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/antlr/TestLexer.java
deleted file mode 100644
index 6102fd8..0000000
--- 
a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/antlr/TestLexer.java
+++ /dev/null
@@ -1,323 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.server.core.uri.antlr;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import org.apache.olingo.server.core.uri.parser.UriTokenizer;
-import org.apache.olingo.server.core.uri.parser.UriTokenizer.TokenKind;
-import org.junit.Test;
-
-/**
- * Tests originally written for the ANTLR lexer.
- */
-public class TestLexer {
-
-  private TokenValidator test = null;
-
-  // The last two chars are not in cPCT_ENCODED_UNESCAPED.
-  private static final String cPCT_ENCODED = "%45%46%47" + "%22" + "%5C";
-  private static final String cUNRESERVED = "ABCabc123-._~";
-  private static final String cOTHER_DELIMS = "!()*+,;";
-  private static final String cSUB_DELIMS = "$&'=" + cOTHER_DELIMS;
-
-  private static final String cPCHAR = cUNRESERVED + cPCT_ENCODED + 
cSUB_DELIMS + ":@";
-
-  public TestLexer() {
-    test = new TokenValidator();
-  }
-
-  @Test
-  public void unary() {
-    test.run("-a eq a").has(TokenKind.MinusOperator, 
TokenKind.ODataIdentifier, TokenKind.EqualsOperator,
-        TokenKind.ODataIdentifier).isInput();
-  }
-
-  @Test
-  public void uriTokens() {
-//    test.run("#").isType(TokenKind.FRAGMENT).isInput();
-    test.run("$count").has(TokenKind.COUNT).isInput();
-    test.run("$ref").has(TokenKind.REF).isInput();
-    test.run("$value").has(TokenKind.VALUE).isInput();
-  }
-
-  @Test
-  public void queryOptionsTokens() {
-    test.run("$skip=1").has(TokenKind.SKIP, TokenKind.EQ, 
TokenKind.IntegerValue).isInput();
-    test.run("$skip=2").has(TokenKind.SKIP, TokenKind.EQ, 
TokenKind.IntegerValue).isInput();
-    test.run("$skip=123").has(TokenKind.SKIP, TokenKind.EQ, 
TokenKind.IntegerValue).isInput();
-
-    test.run("$top=1").has(TokenKind.TOP, TokenKind.EQ, 
TokenKind.IntegerValue).isInput();
-    test.run("$top=2").has(TokenKind.TOP, TokenKind.EQ, 
TokenKind.IntegerValue).isInput();
-    test.run("$top=123").has(TokenKind.TOP, TokenKind.EQ, 
TokenKind.IntegerValue).isInput();
-
-    test.run("$levels=1").has(TokenKind.LEVELS, TokenKind.EQ, 
TokenKind.IntegerValue).isInput();
-    test.run("$levels=2").has(TokenKind.LEVELS, TokenKind.EQ, 
TokenKind.IntegerValue).isInput();
-    test.run("$levels=123").has(TokenKind.LEVELS, TokenKind.EQ, 
TokenKind.IntegerValue).isInput();
-    test.run("$levels=max").has(TokenKind.LEVELS, TokenKind.EQ, 
TokenKind.MAX).isInput();
-
-//    test.run("$format=atom").has(TokenKind.FORMAT, TokenKind.EQ, 
TokenKind.ODataIdentifier).isInput();
-//    test.run("$format=json").has(TokenKind.FORMAT, TokenKind.EQ, 
TokenKind.ODataIdentifier).isInput();
-//    test.run("$format=xml").has(TokenKind.FORMAT,, TokenKind.EQ, 
TokenKind.ODataIdentifier).isInput();
-//    test.run("$format=abc/def").has(TokenKind.FORMAT, TokenKind.EQ,
-//        TokenKind.ODataIdentifier, TokenKind.SLASH, 
TokenKind.ODataIdentifier).isInput();
-
-//    test.run("$id=123").has(TokenKind.ID, TokenKind.EQ, 
TokenKind.IntegerValue).isInput();
-//    test.run("$id=ABC").has(TokenKind.ID, TokenKind.EQ, 
TokenKind.ODataIdentifier).isInput();
-
-//    test.run("$skiptoken=ABC").has(TokenKind.SKIPTOKEN, TokenKind.EQ, 
TokenKind.ODataIdentifier).isInput();
-//    test.run("$skiptoken=ABC").has(TokenKind.SKIPTOKEN, TokenKind.EQ, 
TokenKind.ODataIdentifier).isInput();
-
-    test.run("$search=\"ABC\"").has(TokenKind.SEARCH, TokenKind.EQ, 
TokenKind.Phrase).isInput();
-    test.run("$search=ABC").has(TokenKind.SEARCH, TokenKind.EQ, 
TokenKind.Word).isInput();
-    test.run("$search=\"A%20B%20C\"").has(TokenKind.SEARCH, TokenKind.EQ, 
TokenKind.Phrase).isInput();
-    test.run("$search=Test Test").has(TokenKind.SEARCH, TokenKind.EQ, 
TokenKind.Word,
-        TokenKind.AndOperatorSearch, TokenKind.Word).isInput();
-    test.run("$search=Test&$filter=ABC eq 1").has(TokenKind.SEARCH, 
TokenKind.EQ, TokenKind.Word);
-  }
-
-  @Test
-  public void queryOptionsDefaultMode() {
-    test.run("$expand=ABC($skip=1)").has(TokenKind.EXPAND, TokenKind.EQ, 
TokenKind.ODataIdentifier,
-        TokenKind.OPEN, TokenKind.SKIP, TokenKind.EQ, TokenKind.IntegerValue, 
TokenKind.CLOSE).isInput();
-    test.run("$expand=ABC($skip=123)").has(TokenKind.EXPAND, TokenKind.EQ, 
TokenKind.ODataIdentifier,
-        TokenKind.OPEN, TokenKind.SKIP, TokenKind.EQ, TokenKind.IntegerValue, 
TokenKind.CLOSE).isInput();
-    test.run("$expand=ABC($search=abc)").has(TokenKind.EXPAND, TokenKind.EQ, 
TokenKind.ODataIdentifier,
-        TokenKind.OPEN, TokenKind.SEARCH, TokenKind.EQ, TokenKind.Word, 
TokenKind.CLOSE).isInput();
-    test.run("$expand=ABC($search=\"123\")").has(TokenKind.EXPAND, 
TokenKind.EQ, TokenKind.ODataIdentifier,
-        TokenKind.OPEN, TokenKind.SEARCH, TokenKind.EQ, TokenKind.Phrase, 
TokenKind.CLOSE).isInput();
-    test.run("$expand=ABC($top=1)").has(TokenKind.EXPAND, TokenKind.EQ, 
TokenKind.ODataIdentifier,
-        TokenKind.OPEN, TokenKind.TOP, TokenKind.EQ, TokenKind.IntegerValue, 
TokenKind.CLOSE).isInput();
-    test.run("$expand=ABC($top=123)").has(TokenKind.EXPAND, TokenKind.EQ, 
TokenKind.ODataIdentifier,
-        TokenKind.OPEN, TokenKind.TOP, TokenKind.EQ, TokenKind.IntegerValue, 
TokenKind.CLOSE).isInput();
-
-    test.run("$expand=ABC($expand=DEF($skip=1))").has(TokenKind.EXPAND, 
TokenKind.EQ, TokenKind.ODataIdentifier,
-        TokenKind.OPEN, TokenKind.EXPAND, TokenKind.EQ, 
TokenKind.ODataIdentifier,
-        TokenKind.OPEN, TokenKind.SKIP, TokenKind.EQ, TokenKind.IntegerValue, 
TokenKind.CLOSE, TokenKind.CLOSE)
-        .isInput();
-    test.run("$expand=ABC($expand=DEF($skip=123))").has(TokenKind.EXPAND, 
TokenKind.EQ, TokenKind.ODataIdentifier,
-        TokenKind.OPEN, TokenKind.EXPAND, TokenKind.EQ, 
TokenKind.ODataIdentifier,
-        TokenKind.OPEN, TokenKind.SKIP, TokenKind.EQ, TokenKind.IntegerValue, 
TokenKind.CLOSE, TokenKind.CLOSE)
-        .isInput();
-
-    test.run("$expand=ABC($expand=DEF($top=1))").has(TokenKind.EXPAND, 
TokenKind.EQ, TokenKind.ODataIdentifier,
-        TokenKind.OPEN, TokenKind.EXPAND, TokenKind.EQ, 
TokenKind.ODataIdentifier,
-        TokenKind.OPEN, TokenKind.TOP, TokenKind.EQ, TokenKind.IntegerValue, 
TokenKind.CLOSE, TokenKind.CLOSE)
-        .isInput();
-    test.run("$expand=ABC($expand=DEF($top=123))").has(TokenKind.EXPAND, 
TokenKind.EQ, TokenKind.ODataIdentifier,
-        TokenKind.OPEN, TokenKind.EXPAND, TokenKind.EQ, 
TokenKind.ODataIdentifier,
-        TokenKind.OPEN, TokenKind.TOP, TokenKind.EQ, TokenKind.IntegerValue, 
TokenKind.CLOSE, TokenKind.CLOSE)
-        .isInput();
-
-    test.run("$expand=ABC($expand=DEF($search=Test Test))")
-        .has(TokenKind.EXPAND, TokenKind.EQ, TokenKind.ODataIdentifier,
-            TokenKind.OPEN, TokenKind.EXPAND, TokenKind.EQ, 
TokenKind.ODataIdentifier,
-            TokenKind.OPEN, TokenKind.SEARCH, TokenKind.EQ, TokenKind.Word,
-            TokenKind.AndOperatorSearch, TokenKind.Word, TokenKind.CLOSE, 
TokenKind.CLOSE)
-        .isInput();
-    test.run("$expand=ABC($expand=DEF($search=\"Test\" \"Test\"))")
-        .has(TokenKind.EXPAND, TokenKind.EQ, TokenKind.ODataIdentifier,
-            TokenKind.OPEN, TokenKind.EXPAND, TokenKind.EQ, 
TokenKind.ODataIdentifier,
-            TokenKind.OPEN, TokenKind.SEARCH, TokenKind.EQ, TokenKind.Phrase,
-            TokenKind.AndOperatorSearch, TokenKind.Phrase, TokenKind.CLOSE, 
TokenKind.CLOSE)
-        .isInput();
-    test.run("$expand=ABC($expand=DEF($search=\"Test\" 
\"Test\";$filter=PropertyInt16 eq 0;$orderby=PropertyInt16))")
-        .has(TokenKind.EXPAND, TokenKind.EQ, TokenKind.ODataIdentifier,
-            TokenKind.OPEN, TokenKind.EXPAND, TokenKind.EQ, 
TokenKind.ODataIdentifier,
-            TokenKind.OPEN, TokenKind.SEARCH, TokenKind.EQ, TokenKind.Phrase,
-            TokenKind.AndOperatorSearch, TokenKind.Phrase, TokenKind.SEMI,
-            TokenKind.FILTER, TokenKind.EQ, TokenKind.ODataIdentifier, 
TokenKind.EqualsOperator,
-            TokenKind.IntegerValue, TokenKind.SEMI,
-            TokenKind.ORDERBY, TokenKind.EQ, TokenKind.ODataIdentifier, 
TokenKind.CLOSE, TokenKind.CLOSE)
-        .isInput();
-  }
-
-  @Test
-  public void queryExpressions() {
-    test.run("$it").has(TokenKind.IT).isText("$it");
-
-    test.run("$filter=contains(").has(TokenKind.FILTER, TokenKind.EQ, 
TokenKind.ContainsMethod).isText("contains(");
-
-    test.run("$filter=containsabc").has(TokenKind.FILTER, TokenKind.EQ, 
TokenKind.ODataIdentifier)
-        .isText("containsabc");
-
-    test.run("$filter=startswith(").has(TokenKind.FILTER, TokenKind.EQ, 
TokenKind.StartswithMethod)
-        .isText("startswith(");
-    test.run("$filter=endswith(").has(TokenKind.FILTER, TokenKind.EQ, 
TokenKind.EndswithMethod).isText("endswith(");
-    test.run("$filter=length(").has(TokenKind.FILTER, TokenKind.EQ, 
TokenKind.LengthMethod).isText("length(");
-    test.run("$filter=indexof(").has(TokenKind.FILTER, TokenKind.EQ, 
TokenKind.IndexofMethod).isText("indexof(");
-    test.run("$filter=substring(").has(TokenKind.FILTER, TokenKind.EQ, 
TokenKind.SubstringMethod).isText("substring(");
-    test.run("$filter=tolower(").has(TokenKind.FILTER, TokenKind.EQ, 
TokenKind.TolowerMethod).isText("tolower(");
-    test.run("$filter=toupper(").has(TokenKind.FILTER, TokenKind.EQ, 
TokenKind.ToupperMethod).isText("toupper(");
-    test.run("$filter=trim(").has(TokenKind.FILTER, TokenKind.EQ, 
TokenKind.TrimMethod).isText("trim(");
-    test.run("$filter=concat(").has(TokenKind.FILTER, TokenKind.EQ, 
TokenKind.ConcatMethod).isText("concat(");
-  }
-
-  @Test
-  public void literalDataValues() {
-    // null
-    test.run("null").has(TokenKind.NULL).isInput();
-
-    // binary
-    test.run("binary'ABCD'").has(TokenKind.BinaryValue).isInput();
-    test.run("BiNaRy'ABCD'").has(TokenKind.BinaryValue).isInput();
-
-    // boolean
-    test.run("true").has(TokenKind.BooleanValue).isInput();
-    test.run("false").has(TokenKind.BooleanValue).isInput();
-    test.run("TrUe").has(TokenKind.BooleanValue).isInput();
-    test.run("FaLsE").has(TokenKind.BooleanValue).isInput();
-
-    // Lexer rule INT
-    test.run("123").has(TokenKind.IntegerValue).isInput();
-    test.run("123456789").has(TokenKind.IntegerValue).isInput();
-    test.run("+123").has(TokenKind.IntegerValue).isInput();
-    test.run("+123456789").has(TokenKind.IntegerValue).isInput();
-    test.run("-123").has(TokenKind.IntegerValue).isInput();
-    test.run("-123456789").has(TokenKind.IntegerValue).isInput();
-
-    // Lexer rule DECIMAL
-    test.run("0.1").has(TokenKind.DecimalValue).isInput();
-    test.run("1.1").has(TokenKind.DecimalValue).isInput();
-    test.run("+0.1").has(TokenKind.DecimalValue).isInput();
-    test.run("+1.1").has(TokenKind.DecimalValue).isInput();
-    test.run("-0.1").has(TokenKind.DecimalValue).isInput();
-    test.run("-1.1").has(TokenKind.DecimalValue).isInput();
-
-    // Lexer rule EXP
-    test.run("1.1e+1").has(TokenKind.DoubleValue).isInput();
-    test.run("1.1e-1").has(TokenKind.DoubleValue).isInput();
-
-    test.run("NaN").has(TokenKind.DoubleValue).isInput();
-    test.run("-INF").has(TokenKind.DoubleValue).isInput();
-    test.run("INF").has(TokenKind.DoubleValue).isInput();
-
-    // Lexer rule GUID
-    
test.run("1234ABCD-12AB-23CD-45EF-123456780ABC").has(TokenKind.GuidValue).isInput();
-    
test.run("1234ABCD-12AB-23CD-45EF-123456780ABC").has(TokenKind.GuidValue).isInput();
-
-    // Lexer rule DATE
-    test.run("2013-11-15").has(TokenKind.DateValue).isInput();
-
-    // Lexer rule DATETIMEOFFSET
-    test.run("2013-11-15T13:35Z").has(TokenKind.DateTimeOffsetValue).isInput();
-    
test.run("2013-11-15T13:35:10Z").has(TokenKind.DateTimeOffsetValue).isInput();
-    
test.run("2013-11-15T13:35:10.1234Z").has(TokenKind.DateTimeOffsetValue).isInput();
-
-    
test.run("2013-11-15T13:35:10.1234+01:30").has(TokenKind.DateTimeOffsetValue).isInput();
-    
test.run("2013-11-15T13:35:10.1234-01:12").has(TokenKind.DateTimeOffsetValue).isInput();
-
-    test.run("2013-11-15T13:35Z").has(TokenKind.DateTimeOffsetValue).isInput();
-
-    // Lexer rule DURATION
-    test.run("duration'PT67S'").has(TokenKind.DurationValue).isInput();
-    test.run("duration'PT67.89S'").has(TokenKind.DurationValue).isInput();
-
-    test.run("duration'PT5M'").has(TokenKind.DurationValue).isInput();
-    test.run("duration'PT5M67S'").has(TokenKind.DurationValue).isInput();
-    test.run("duration'PT5M67.89S'").has(TokenKind.DurationValue).isInput();
-
-    test.run("duration'PT4H'").has(TokenKind.DurationValue).isInput();
-    test.run("duration'PT4H67S'").has(TokenKind.DurationValue).isInput();
-    test.run("duration'PT4H67.89S'").has(TokenKind.DurationValue).isInput();
-    test.run("duration'PT4H5M'").has(TokenKind.DurationValue).isInput();
-    test.run("duration'PT4H5M67S'").has(TokenKind.DurationValue).isInput();
-    test.run("duration'PT4H5M67.89S'").has(TokenKind.DurationValue).isInput();
-
-    test.run("duration'P3D'").has(TokenKind.DurationValue).isInput();
-    test.run("duration'P3DT67S'").has(TokenKind.DurationValue).isInput();
-    test.run("duration'P3DT67.89S'").has(TokenKind.DurationValue).isInput();
-    test.run("duration'P3DT5M'").has(TokenKind.DurationValue).isInput();
-    test.run("duration'P3DT5M67S'").has(TokenKind.DurationValue).isInput();
-    test.run("duration'P3DT5M67.89S'").has(TokenKind.DurationValue).isInput();
-    test.run("duration'P3DT4H'").has(TokenKind.DurationValue).isInput();
-    test.run("duration'P3DT4H67S'").has(TokenKind.DurationValue).isInput();
-    test.run("duration'P3DT4H67.89S'").has(TokenKind.DurationValue).isInput();
-    test.run("duration'P3DT4H5M'").has(TokenKind.DurationValue).isInput();
-    test.run("duration'P3DT4H5M67S'").has(TokenKind.DurationValue).isInput();
-    
test.run("duration'P3DT4H5M67.89S'").has(TokenKind.DurationValue).isInput();
-
-    
test.run("DuRaTiOn'P3DT4H5M67.89S'").has(TokenKind.DurationValue).isInput();
-    
test.run("DuRaTiOn'-P3DT4H5M67.89S'").has(TokenKind.DurationValue).isInput();
-
-    test.run("20:00").has(TokenKind.TimeOfDayValue).isInput();
-    test.run("20:15:01").has(TokenKind.TimeOfDayValue).isInput();
-    test.run("20:15:01.02").has(TokenKind.TimeOfDayValue).isInput();
-
-    test.run("20:15:01.02").has(TokenKind.TimeOfDayValue).isInput();
-
-    // String
-    test.run("'ABC'").has(TokenKind.StringValue).isInput();
-    test.run("'A%20C'").has(TokenKind.StringValue).isInput();
-    test.run("'%20%20%20ABC'").has(TokenKind.StringValue).isInput();
-  }
-
-  @Test
-  public void delims() {
-    final String reserved = "/";
-    // Test lexer rule UNRESERVED
-//    test.run("$format=A/" + cUNRESERVED).has(TokenKind.FORMAT).isInput();
-//    test.run("$format=A/" + cUNRESERVED + 
reserved).has(TokenKind.FORMAT).isText(cUNRESERVED);
-    // Test lexer rule PCT_ENCODED
-//    test.run("$format=A/" + cPCT_ENCODED).has(TokenKind.FORMAT).isInput();
-//    test.run("$format=A/" + cPCT_ENCODED + 
reserved).has(TokenKind.FORMAT).isText(cPCT_ENCODED);
-    // Test lexer rule SUB_DELIMS
-//    test.run("$format=A/" + cSUB_DELIMS).has(TokenKind.FORMAT).isInput();
-//    test.run("$format=A/" + cSUB_DELIMS + 
reserved).has(TokenKind.FORMAT).isText("$");
-    // Test lexer rule PCHAR rest
-//    test.run("$format=A/:@").has(TokenKind.FORMAT).isInput();
-//    test.run("$format=A/:@" + reserved).has(TokenKind.FORMAT).isText(":@");
-    // Test lexer rule PCHAR all
-//    test.run("$format=" + cPCHAR + "/" + 
cPCHAR).has(TokenKind.FORMAT).isInput();
-  }
-
-  public class TokenValidator {
-
-    private String input = null;
-    private UriTokenizer tokenizer = null;
-    private String curText = null;
-
-    public TokenValidator run(final String uri) {
-      input = uri;
-      tokenizer = new UriTokenizer(uri);
-      curText = "";
-      return this;
-    }
-
-    public TokenValidator has(final TokenKind... expected) {
-      for (final TokenKind kind : expected) {
-        assertTrue(tokenizer.next(kind));
-        curText += tokenizer.getText();
-      }
-      return this;
-    }
-
-    public TokenValidator isText(final String expected) {
-      assertEquals(expected, tokenizer.getText());
-      return this;
-    }
-
-    public TokenValidator isInput() {
-      assertEquals(input, curText);
-      assertTrue(tokenizer.next(TokenKind.EOF));
-      return this;
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/3295bcc0/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/antlr/TestUriParserImpl.java
----------------------------------------------------------------------
diff --git 
a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/antlr/TestUriParserImpl.java
 
b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/antlr/TestUriParserImpl.java
deleted file mode 100644
index dd517f9..0000000
--- 
a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/antlr/TestUriParserImpl.java
+++ /dev/null
@@ -1,1046 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.server.core.uri.antlr;
-
-import java.util.Arrays;
-import java.util.Collections;
-
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.server.api.OData;
-import org.apache.olingo.server.api.edmx.EdmxReference;
-import org.apache.olingo.server.api.uri.UriInfoKind;
-import org.apache.olingo.server.api.uri.UriResourceKind;
-import org.apache.olingo.server.api.uri.queryoption.expression.MethodKind;
-import org.apache.olingo.server.core.uri.parser.UriParserSemanticException;
-import org.apache.olingo.server.core.uri.testutil.FilterValidator;
-import org.apache.olingo.server.core.uri.testutil.ResourceValidator;
-import org.apache.olingo.server.core.uri.testutil.TestUriValidator;
-import org.apache.olingo.server.core.uri.validator.UriValidationException;
-import org.apache.olingo.server.tecsvc.provider.ActionProvider;
-import org.apache.olingo.server.tecsvc.provider.ComplexTypeProvider;
-import org.apache.olingo.server.tecsvc.provider.ContainerProvider;
-import org.apache.olingo.server.tecsvc.provider.EdmTechProvider;
-import org.apache.olingo.server.tecsvc.provider.EntityTypeProvider;
-import org.apache.olingo.server.tecsvc.provider.PropertyProvider;
-import org.junit.Ignore;
-import org.junit.Test;
-
-public class TestUriParserImpl {
-  private final Edm edm = OData.newInstance().createServiceMetadata(
-      new EdmTechProvider(), Collections.<EdmxReference> emptyList()).getEdm();
-  private final TestUriValidator testUri = new TestUriValidator().setEdm(edm);
-  private final ResourceValidator testRes = new 
ResourceValidator().setEdm(edm);
-  private final FilterValidator testFilter = new FilterValidator().setEdm(edm);
-
-  private final String PropertyBoolean = "PropertyBoolean=true";
-  private final String PropertyByte = "PropertyByte=1";
-  private final String PropertyDate = "PropertyDate=2013-09-25";
-  private final String PropertyDateTimeOffset = 
"PropertyDateTimeOffset=2002-10-10T12:00:00-05:00";
-  private final String PropertyDecimal = "PropertyDecimal=12";
-  private final String PropertyDuration = 
"PropertyDuration=duration'P50903316DT2H25M4S'";
-  private final String PropertyGuid = 
"PropertyGuid=12345678-1234-1234-1234-123456789012";
-  private final String PropertyInt16 = "PropertyInt16=1";
-  private final String PropertyInt32 = "PropertyInt32=12";
-  private final String PropertyInt64 = "PropertyInt64=64";
-  private final String PropertySByte = "PropertySByte=1";
-  private final String PropertyString = "PropertyString='ABC'";
-  private final String PropertyTimeOfDay = "PropertyTimeOfDay=12:34:55";
-
-  private final String allKeys = PropertyString + "," + PropertyInt16 + "," + 
PropertyBoolean + "," + PropertyByte
-      + "," + PropertySByte + "," + PropertyInt32 + "," + PropertyInt64 + "," 
+ PropertyDecimal + "," + PropertyDate
-      + "," + PropertyDateTimeOffset + "," + PropertyDuration + "," + 
PropertyGuid + "," + PropertyTimeOfDay;
-
-  @Test
-  public void boundFunctionImport_VarParameters() {
-    // no input
-    testRes.run("ESKeyNav(1)/olingo.odata.test1.BFCETKeyNavRTETKeyNav()")
-    .at(0).isUriPathInfoKind(UriResourceKind.entitySet)
-    .at(1).isUriPathInfoKind(UriResourceKind.function);
-
-    // one input
-    
testRes.run("ESTwoKeyNav/olingo.odata.test1.BFCESTwoKeyNavRTESTwoKeyNav(ParameterString='ABC')")
-    .at(0).isUriPathInfoKind(UriResourceKind.entitySet)
-    .at(1).isUriPathInfoKind(UriResourceKind.function)
-    .isParameter(0, "ParameterString", "'ABC'");
-
-    // two input
-    
testRes.run("FICRTESMixPrimCollCompTwoParam(ParameterInt16=1,ParameterString='2')")
-    .at(0)
-    .isUriPathInfoKind(UriResourceKind.function)
-    .isParameter(0, "ParameterInt16", "1")
-    .isParameter(1, "ParameterString", "'2'");
-  }
-
-  @Test
-  public void functionBound_varReturnType() {
-    final String esTwoKeyNav = 
"ESTwoKeyNav(PropertyInt16=1,PropertyString='ABC')";
-
-    // returning primitive
-    testRes.run("ESTwoKeyNav/olingo.odata.test1.BFCESTwoKeyNavRTString()")
-    .at(0)
-    .isUriPathInfoKind(UriResourceKind.entitySet)
-    .isType(EntityTypeProvider.nameETTwoKeyNav, true)
-    .at(1)
-    .isUriPathInfoKind(UriResourceKind.function)
-    .isType(PropertyProvider.nameString, false);
-
-    // returning collection of primitive
-    testRes.run("ESTwoKeyNav/olingo.odata.test1.BFCESTwoKeyNavRTCollString()")
-    .at(0)
-    .isUriPathInfoKind(UriResourceKind.entitySet)
-    .isType(EntityTypeProvider.nameETTwoKeyNav, true)
-    .at(1)
-    .isUriPathInfoKind(UriResourceKind.function)
-    .isType(PropertyProvider.nameString, true);
-
-    // returning single complex
-    testRes.run("ESTwoKeyNav/olingo.odata.test1.BFCESTwoKeyNavRTCTTwoPrim()")
-    .at(0)
-    .isUriPathInfoKind(UriResourceKind.entitySet)
-    .isType(EntityTypeProvider.nameETTwoKeyNav, true)
-    .at(1)
-    .isUriPathInfoKind(UriResourceKind.function)
-    .isType(ComplexTypeProvider.nameCTTwoPrim, false);
-
-    // returning collection of complex
-    
testRes.run("ESTwoKeyNav/olingo.odata.test1.BFCESTwoKeyNavRTCollCTTwoPrim()")
-    .at(0)
-    .isUriPathInfoKind(UriResourceKind.entitySet)
-    .isType(EntityTypeProvider.nameETTwoKeyNav, true)
-    .at(1)
-    .isUriPathInfoKind(UriResourceKind.function)
-    .isType(ComplexTypeProvider.nameCTTwoPrim, true);
-
-    // returning single entity
-    testRes.run(
-        esTwoKeyNav + 
"/olingo.odata.test1.ETBaseTwoKeyNav/olingo.odata.test1.BFCETBaseTwoKeyNavRTETTwoKeyNav()")
-        .at(0)
-        .isUriPathInfoKind(UriResourceKind.entitySet)
-        .isType(EntityTypeProvider.nameETTwoKeyNav, false)
-        .isTypeFilterOnEntry(EntityTypeProvider.nameETBaseTwoKeyNav)
-        .at(1)
-        .isUriPathInfoKind(UriResourceKind.function)
-        .isType(EntityTypeProvider.nameETTwoKeyNav, false);
-
-    // returning collection of entity (aka entitySet)
-    testRes.run(esTwoKeyNav + "/olingo.odata.test1.BFCSINavRTESTwoKeyNav()")
-    .at(0)
-    .isUriPathInfoKind(UriResourceKind.entitySet)
-    .isType(EntityTypeProvider.nameETTwoKeyNav, false)
-    .at(1)
-    .isUriPathInfoKind(UriResourceKind.function)
-    .isType(EntityTypeProvider.nameETTwoKeyNav, true);
-  }
-
-  @Test
-  public void actionImport_VarReturnType() {
-    testRes.run(ContainerProvider.AIRT_STRING).isKind(UriInfoKind.resource)
-    .first()
-    .isActionImport(ContainerProvider.AIRT_STRING)
-    .isAction(ActionProvider.nameUARTString.getName())
-    .isType(PropertyProvider.nameString, false);
-
-    
testRes.run(ContainerProvider.AIRT_COLL_STRING_TWO_PARAM).isKind(UriInfoKind.resource)
-        .first()
-        .isActionImport(ContainerProvider.AIRT_COLL_STRING_TWO_PARAM)
-        .isAction(ActionProvider.nameUARTCollStringTwoParam.getName())
-        .isType(PropertyProvider.nameString, true);
-
-    
testRes.run(ContainerProvider.AIRTCT_TWO_PRIM_PARAM).isKind(UriInfoKind.resource)
-    .first()
-    .isActionImport(ContainerProvider.AIRTCT_TWO_PRIM_PARAM)
-    .isAction(ActionProvider.nameUARTCTTwoPrimParam.getName())
-    .isType(ComplexTypeProvider.nameCTTwoPrim, false);
-
-    
testRes.run(ContainerProvider.AIRT_COLL_CT_TWO_PRIM_PARAM).isKind(UriInfoKind.resource)
-    .first()
-    .isActionImport(ContainerProvider.AIRT_COLL_CT_TWO_PRIM_PARAM)
-    .isAction(ActionProvider.nameUARTCollCTTwoPrimParam.getName())
-    .isType(ComplexTypeProvider.nameCTTwoPrim, true);
-
-    
testRes.run(ContainerProvider.AIRTET_TWO_KEY_TWO_PRIM_PARAM).isKind(UriInfoKind.resource)
-    .first()
-    .isActionImport(ContainerProvider.AIRTET_TWO_KEY_TWO_PRIM_PARAM)
-    .isAction(ActionProvider.nameUARTETTwoKeyTwoPrimParam.getName())
-    .isType(EntityTypeProvider.nameETTwoKeyTwoPrim, false);
-
-    testUri.runEx(ContainerProvider.AIRT_STRING + "/invalidElement")
-        
.isExValidation(UriValidationException.MessageKeys.UNALLOWED_RESOURCE_PATH);
-  }
-
-  @Test
-  public void count() {
-    // count entity set
-    testRes.run("ESAllPrim/$count")
-    .at(0)
-    .isUriPathInfoKind(UriResourceKind.entitySet)
-    .isType(EntityTypeProvider.nameETAllPrim, true)
-    .at(1)
-    .isUriPathInfoKind(UriResourceKind.count);
-
-    // count on collection of complex
-    testRes.run("ESKeyNav(1)/CollPropertyComp/$count")
-    .at(0)
-    .isType(EntityTypeProvider.nameETKeyNav)
-    .at(1)
-    .isType(ComplexTypeProvider.nameCTPrimComp, true)
-    .at(2)
-    .isUriPathInfoKind(UriResourceKind.count);
-
-    // count on collection of primitive
-    testRes.run("ESCollAllPrim(1)/CollPropertyString/$count")
-    .at(1)
-    .isType(PropertyProvider.nameString, true)
-    .at(2)
-    .isUriPathInfoKind(UriResourceKind.count);
-  }
-
-  @Test
-  public void crossJoin() throws Exception {
-    testUri.run("$crossjoin(ESAllKey)")
-    .isKind(UriInfoKind.crossjoin)
-    .isCrossJoinEntityList(Arrays.asList("ESAllKey"));
-
-    testUri.run("$crossjoin(ESAllKey,ESTwoPrim)")
-    .isKind(UriInfoKind.crossjoin)
-    .isCrossJoinEntityList(Arrays.asList("ESAllKey", "ESTwoPrim"));
-  }
-
-  @Test
-  public void entityFailOnValidation() throws Exception {
-    // simple entity set; with qualifiedentityTypeName; with filter
-    testUri.runEx("$entity/olingo.odata.test1.ETTwoPrim", 
"$filter=PropertyInt16 eq 123&$id=ESAllKey")
-        
.isExValidation(UriValidationException.MessageKeys.SYSTEM_QUERY_OPTION_NOT_ALLOWED);
-  }
-
-  @Test
-  public void entity() throws Exception {
-    // simple entity set
-    testUri.run("$entity", "$id=ESAllPrim").isKind(UriInfoKind.entityId)
-    .isKind(UriInfoKind.entityId)
-    .isIdText("ESAllPrim");
-
-    // simple entity set; $format before $id
-    testUri.run("$entity", 
"$format=xml&$id=ETAllPrim").isKind(UriInfoKind.entityId)
-    .isFormatText("xml")
-    .isIdText("ETAllPrim");
-
-    testUri.run("$entity", 
"$format=xml&abc=123&$id=ESAllKey").isKind(UriInfoKind.entityId)
-    .isFormatText("xml")
-    .isCustomParameter(0, "abc", "123")
-    .isIdText("ESAllKey");
-
-    // simple entity set; $format after $id
-    testUri.run("$entity", 
"$id=ETAllPrim&$format=xml").isKind(UriInfoKind.entityId)
-    .isIdText("ETAllPrim")
-    .isFormatText("xml");
-
-    // simple entity set; $format and custom parameter after $id
-    testUri.run("$entity", 
"$id=ETAllPrim&$format=xml&abc=123").isKind(UriInfoKind.entityId)
-    .isIdText("ETAllPrim")
-    .isFormatText("xml")
-    .isCustomParameter(0, "abc", "123");
-
-    // simple entity set; $format before $id and custom parameter after $id
-    testUri.run("$entity", 
"$format=xml&$id=ETAllPrim&abc=123").isKind(UriInfoKind.entityId)
-    .isFormatText("xml")
-    .isIdText("ETAllPrim")
-    .isCustomParameter(0, "abc", "123");
-
-    // simple entity set; with qualifiedentityTypeName
-    testUri.run("$entity/olingo.odata.test1.ETTwoPrim", "$id=ESBase")
-    .isEntityType(EntityTypeProvider.nameETTwoPrim)
-    .isIdText("ESBase");
-
-    // simple entity set; with qualifiedentityTypeName;
-    testUri.run("$entity/olingo.odata.test1.ETBase", "$id=ESTwoPrim")
-    .isEntityType(EntityTypeProvider.nameETBase)
-    .isKind(UriInfoKind.entityId)
-    .isIdText("ESTwoPrim");
-
-    // simple entity set; with qualifiedentityTypeName; with format
-    testUri.run("$entity/olingo.odata.test1.ETBase", 
"$id=ESTwoPrim&$format=atom")
-    .isKind(UriInfoKind.entityId)
-    .isEntityType(EntityTypeProvider.nameETBase)
-    .isIdText("ESTwoPrim")
-    .isFormatText("atom");
-
-    // simple entity set; with qualifiedentityTypeName; with select
-    testUri.run("$entity/olingo.odata.test1.ETBase", "$id=ESTwoPrim&$select=*")
-    .isKind(UriInfoKind.entityId)
-    .isEntityType(EntityTypeProvider.nameETBase)
-    .isIdText("ESTwoPrim")
-    .isSelectItemStar(0);
-
-    // simple entity set; with qualifiedentityTypeName; with expand
-    testUri.run("$entity/olingo.odata.test1.ETBase", "$id=ESTwoPrim&$expand=*")
-    .isKind(UriInfoKind.entityId)
-    .isEntityType(EntityTypeProvider.nameETBase)
-    .isIdText("ESTwoPrim")
-    .goExpand().first().isSegmentStar();
-  }
-
-  @Test
-  public void entitySet() throws Exception {
-    // plain entity set
-    testRes.run("ESAllPrim")
-    .isEntitySet("ESAllPrim")
-    .isType(EntityTypeProvider.nameETAllPrim);
-
-    // with one key; simple key notation
-    testRes.run("ESAllPrim(1)")
-    .isEntitySet("ESAllPrim")
-    .isType(EntityTypeProvider.nameETAllPrim)
-    .isKeyPredicate(0, "PropertyInt16", "1");
-
-    // with one key; name value key notation
-    testRes.run("ESAllPrim(PropertyInt16=1)")
-    .isEntitySet("ESAllPrim")
-    .isKeyPredicate(0, "PropertyInt16", "1");
-
-    // with two keys
-    testRes.run("ESTwoKeyTwoPrim(PropertyInt16=1,PropertyString='ABC')")
-    .isEntitySet("ESTwoKeyTwoPrim")
-    .isKeyPredicate(0, "PropertyInt16", "1")
-    .isKeyPredicate(1, "PropertyString", "'ABC'");
-
-    // with all keys
-    testRes.run("ESAllKey(" + allKeys + ")")
-    .isEntitySet("ESAllKey")
-    .isKeyPredicate(0, "PropertyString", "'ABC'")
-    .isKeyPredicate(1, "PropertyInt16", "1")
-    .isKeyPredicate(2, "PropertyBoolean", "true")
-    .isKeyPredicate(3, "PropertyByte", "1")
-    .isKeyPredicate(4, "PropertySByte", "1")
-    .isKeyPredicate(5, "PropertyInt32", "12")
-    .isKeyPredicate(6, "PropertyInt64", "64")
-    .isKeyPredicate(7, "PropertyDecimal", "12")
-    .isKeyPredicate(8, "PropertyDate", "2013-09-25")
-    .isKeyPredicate(9, "PropertyDateTimeOffset", "2002-10-10T12:00:00-05:00")
-    .isKeyPredicate(10, "PropertyDuration", "duration'P50903316DT2H25M4S'")
-    .isKeyPredicate(11, "PropertyGuid", "12345678-1234-1234-1234-123456789012")
-    .isKeyPredicate(12, "PropertyTimeOfDay", "12:34:55");
-  }
-
-  @Test
-  public void entitySet_NavigationProperty() {
-    // with navigation property
-    testRes.run("ESKeyNav(1)/NavPropertyETTwoKeyNavOne")
-    .at(0)
-    .isEntitySet("ESKeyNav")
-    .isType(EntityTypeProvider.nameETKeyNav)
-    .isKeyPredicate(0, "PropertyInt16", "1")
-    .at(1)
-    .isNavProperty("NavPropertyETTwoKeyNavOne", 
EntityTypeProvider.nameETTwoKeyNav, false)
-    .isType(EntityTypeProvider.nameETTwoKeyNav);
-
-    // with navigation property -> property
-    testRes.run("ESKeyNav(1)/NavPropertyETTwoKeyNavOne/PropertyString")
-    .at(0)
-    .isEntitySet("ESKeyNav")
-    .isType(EntityTypeProvider.nameETKeyNav, false)
-    .isKeyPredicate(0, "PropertyInt16", "1")
-    .at(1)
-    .isNavProperty("NavPropertyETTwoKeyNavOne", 
EntityTypeProvider.nameETTwoKeyNav, false)
-    .at(2)
-    .isPrimitiveProperty("PropertyString", PropertyProvider.nameString, false);
-
-    // with navigation property -> navigation property -> navigation property
-    testRes.run("ESKeyNav(1)/NavPropertyETTwoKeyNavOne/NavPropertyETKeyNavOne")
-    .at(0)
-    .isEntitySet("ESKeyNav")
-    .isType(EntityTypeProvider.nameETKeyNav)
-    .isKeyPredicate(0, "PropertyInt16", "1")
-    .at(1)
-    .isNavProperty("NavPropertyETTwoKeyNavOne", 
EntityTypeProvider.nameETTwoKeyNav, false)
-    .isType(EntityTypeProvider.nameETTwoKeyNav)
-    .at(2)
-    .isNavProperty("NavPropertyETKeyNavOne", EntityTypeProvider.nameETKeyNav, 
false)
-    .isType(EntityTypeProvider.nameETKeyNav);
-
-    // with navigation property(key)
-    testRes.run("ESKeyNav(1)/NavPropertyETKeyNavMany(1)")
-    .at(0)
-    .isEntitySet("ESKeyNav")
-    .at(1)
-    .isNavProperty("NavPropertyETKeyNavMany", EntityTypeProvider.nameETKeyNav, 
false)
-    .isKeyPredicate(0, "PropertyInt16", "1");
-
-    // with navigation property(key) -> property
-    testRes.run("ESKeyNav(1)/NavPropertyETKeyNavMany(1)/PropertyString").at(0)
-    .at(0)
-    .isEntitySet("ESKeyNav")
-    .at(1)
-    .isNavProperty("NavPropertyETKeyNavMany", EntityTypeProvider.nameETKeyNav, 
false)
-    .isKeyPredicate(0, "PropertyInt16", "1")
-    .at(2)
-    .isPrimitiveProperty("PropertyString", PropertyProvider.nameString, false);
-
-    // with navigation property(key) -> navigation property
-    
testRes.run("ESKeyNav(1)/NavPropertyETKeyNavMany(1)/NavPropertyETKeyNavOne")
-    .isEntitySet("ESKeyNav")
-    .at(1)
-    .isNavProperty("NavPropertyETKeyNavMany", EntityTypeProvider.nameETKeyNav, 
false)
-    .isKeyPredicate(0, "PropertyInt16", "1")
-    .at(2)
-    .isNavProperty("NavPropertyETKeyNavOne", EntityTypeProvider.nameETKeyNav, 
false);
-
-    // with navigation property(key) -> navigation property(key)
-    
testRes.run("ESKeyNav(1)/NavPropertyETKeyNavMany(1)/NavPropertyETKeyNavMany(1)")
-    .isEntitySet("ESKeyNav")
-    .isType(EntityTypeProvider.nameETKeyNav)
-    .at(1)
-    .isNavProperty("NavPropertyETKeyNavMany", EntityTypeProvider.nameETKeyNav, 
false)
-    .isKeyPredicate(0, "PropertyInt16", "1")
-    .at(2)
-    .isNavProperty("NavPropertyETKeyNavMany", EntityTypeProvider.nameETKeyNav, 
false)
-    .isKeyPredicate(0, "PropertyInt16", "1");
-
-    // with navigation property(key) -> navigation property -> property
-    
testRes.run("ESKeyNav(1)/NavPropertyETKeyNavMany(1)/NavPropertyETKeyNavOne/PropertyString")
-    .at(0)
-    .isEntitySet("ESKeyNav")
-    .isType(EntityTypeProvider.nameETKeyNav)
-    .at(1)
-    .isNavProperty("NavPropertyETKeyNavMany", EntityTypeProvider.nameETKeyNav, 
false)
-    .isKeyPredicate(0, "PropertyInt16", "1")
-    .at(2)
-    .isNavProperty("NavPropertyETKeyNavOne", EntityTypeProvider.nameETKeyNav, 
false)
-    .isType(EntityTypeProvider.nameETKeyNav)
-    .at(3)
-    .isPrimitiveProperty("PropertyString", PropertyProvider.nameString, false);
-
-    // with navigation property(key) -> navigation property(key) -> property
-    
testRes.run("ESKeyNav(1)/NavPropertyETKeyNavMany(1)/NavPropertyETKeyNavMany(1)/PropertyString")
-    .at(0)
-    .isEntitySet("ESKeyNav")
-    .isType(EntityTypeProvider.nameETKeyNav)
-    .at(1)
-    .isNavProperty("NavPropertyETKeyNavMany", EntityTypeProvider.nameETKeyNav, 
false)
-    .isKeyPredicate(0, "PropertyInt16", "1")
-    .at(2)
-    .isNavProperty("NavPropertyETKeyNavMany", EntityTypeProvider.nameETKeyNav, 
false)
-    .isKeyPredicate(0, "PropertyInt16", "1")
-    .at(3)
-    .isPrimitiveProperty("PropertyString", PropertyProvider.nameString, false);
-
-  }
-
-  @Test
-  public void entitySet_Property() {
-    // with property
-    testRes.run("ESAllPrim(1)/PropertyString")
-    .at(0)
-    .isEntitySet("ESAllPrim")
-    .isKeyPredicate(0, "PropertyInt16", "1")
-    .at(1)
-    .isPrimitiveProperty("PropertyString", PropertyProvider.nameString, false);
-
-    // with complex property
-    testRes.run("ESCompAllPrim(1)/PropertyComp")
-    .at(0)
-    .isEntitySet("ESCompAllPrim")
-    .isKeyPredicate(0, "PropertyInt16", "1")
-    .at(1)
-    .isComplexProperty("PropertyComp", ComplexTypeProvider.nameCTAllPrim, 
false);
-
-    // with two properties
-    testRes.run("ESCompAllPrim(1)/PropertyComp/PropertyString")
-    .at(0)
-    .isEntitySet("ESCompAllPrim")
-    .isKeyPredicate(0, "PropertyInt16", "1")
-    .at(1)
-    .isComplexProperty("PropertyComp", ComplexTypeProvider.nameCTAllPrim, 
false)
-    .at(2)
-    .isPrimitiveProperty("PropertyString", PropertyProvider.nameString, false);
-  }
-
-  @Test
-  public void entitySet_TypeFilter() {
-    // filter
-    testRes.run("ESTwoPrim/olingo.odata.test1.ETBase")
-    .at(0)
-    .isEntitySet("ESTwoPrim")
-    .isType(EntityTypeProvider.nameETTwoPrim, true)
-    .isTypeFilterOnCollection(EntityTypeProvider.nameETBase)
-    .isTypeFilterOnEntry(null);
-
-    // filter before key predicate
-    testRes.run("ESTwoPrim/olingo.odata.test1.ETBase(PropertyInt16=1)")
-    .at(0)
-    .isEntitySet("ESTwoPrim")
-    .isUriPathInfoKind(UriResourceKind.entitySet)
-    .isType(EntityTypeProvider.nameETTwoPrim)
-    .isTypeFilterOnCollection(EntityTypeProvider.nameETBase)
-    .isTypeFilterOnEntry(null)
-    .at(0)
-    .isType(EntityTypeProvider.nameETTwoPrim, false)
-    .isKeyPredicate(0, "PropertyInt16", "1");
-
-    // filter before key predicate; property of sub type
-    
testRes.run("ESTwoPrim/olingo.odata.test1.ETBase(PropertyInt16=1)/AdditionalPropertyString_5")
-    .at(0)
-    .isEntitySet("ESTwoPrim")
-    .isUriPathInfoKind(UriResourceKind.entitySet)
-    .isType(EntityTypeProvider.nameETTwoPrim)
-    .isTypeFilterOnCollection(EntityTypeProvider.nameETBase)
-    .isTypeFilterOnEntry(null)
-    .isKeyPredicate(0, "PropertyInt16", "1")
-    .at(1)
-    .isType(PropertyProvider.nameString)
-    .isPrimitiveProperty("AdditionalPropertyString_5", 
PropertyProvider.nameString, false);
-
-    // filter after key predicate
-    testRes.run("ESTwoPrim(PropertyInt16=1)/olingo.odata.test1.ETBase")
-    .at(0)
-    .isEntitySet("ESTwoPrim")
-    .isUriPathInfoKind(UriResourceKind.entitySet)
-    .isType(EntityTypeProvider.nameETTwoPrim, false)
-    .isTypeFilterOnCollection(null)
-    .isTypeFilterOnEntry(EntityTypeProvider.nameETBase)
-    .isKeyPredicate(0, "PropertyInt16", "1");
-
-    // filter after key predicate; property of sub type
-    
testRes.run("ESTwoPrim(PropertyInt16=1)/olingo.odata.test1.ETBase/AdditionalPropertyString_5")
-    .at(0)
-    .isEntitySet("ESTwoPrim")
-    .isUriPathInfoKind(UriResourceKind.entitySet)
-    .isType(EntityTypeProvider.nameETTwoPrim)
-    .isTypeFilterOnCollection(null)
-    .isTypeFilterOnEntry(EntityTypeProvider.nameETBase)
-    .isKeyPredicate(0, "PropertyInt16", "1")
-    .at(1)
-    .isPrimitiveProperty("AdditionalPropertyString_5", 
PropertyProvider.nameString, false)
-    .isType(PropertyProvider.nameString);
-  }
-
-  @Test
-  public void unary() throws Exception {
-    testFilter.runOnETAllPrim("not PropertyBoolean").is("<not 
<PropertyBoolean>>");
-    testFilter.runOnETAllPrim("-PropertyInt16 eq PropertyInt16").is("<<- 
<PropertyInt16>> eq <PropertyInt16>>");
-  }
-
-  @Test
-  public void filterComplexMixedPriority() throws Exception {
-    testFilter.runOnETAllPrim("PropertyBoolean or true and false")
-        .is("<<PropertyBoolean> or <<true> and <false>>>");
-    testFilter.runOnETAllPrim("PropertyBoolean or true and PropertyInt64 eq 
PropertyByte")
-        .is("<<PropertyBoolean> or <<true> and <<PropertyInt64> eq 
<PropertyByte>>>>");
-    testFilter.runOnETAllPrim("PropertyBoolean or PropertyInt32 eq 
PropertyInt64 and true")
-        .is("<<PropertyBoolean> or <<<PropertyInt32> eq <PropertyInt64>> and 
<true>>>");
-    testFilter.runOnETAllPrim("PropertyBoolean or PropertyInt32 eq 
PropertyInt64 and PropertyByte eq PropertySByte")
-        .is("<<PropertyBoolean> or <<<PropertyInt32> eq <PropertyInt64>> "
-            + "and <<PropertyByte> eq <PropertySByte>>>>");
-    testFilter.runOnETAllPrim("PropertyInt16 eq PropertyInt32 or 
PropertyBoolean and true")
-        .is("<<<PropertyInt16> eq <PropertyInt32>> or <<PropertyBoolean> and 
<true>>>");
-    testFilter.runOnETAllPrim("PropertyInt16 eq PropertyInt32 or 
PropertyBoolean and PropertyByte eq PropertySByte")
-        .is("<<<PropertyInt16> eq <PropertyInt32>> "
-            + "or <<PropertyBoolean> and <<PropertyByte> eq 
<PropertySByte>>>>");
-    testFilter.runOnETAllPrim("PropertyInt16 eq PropertyInt32 or PropertyInt64 
eq PropertyByte and PropertyBoolean")
-        .is("<<<PropertyInt16> eq <PropertyInt32>> "
-            + "or <<<PropertyInt64> eq <PropertyByte>> and 
<PropertyBoolean>>>");
-    testFilter.runOnETAllPrim("PropertyInt16 eq PropertyInt32 or PropertyInt64 
eq PropertyByte "
-        + "and PropertySByte eq PropertyDecimal")
-        .is("<<<PropertyInt16> eq <PropertyInt32>> or <<<PropertyInt64> eq 
<PropertyByte>> "
-            + "and <<PropertySByte> eq <PropertyDecimal>>>>");
-  }
-
-  @Test
-  public void filterSimpleSameBinaryBinaryBinaryPriority() throws Exception {
-    testFilter.runOnETAllPrim("1 add 2 add 3 add 4 ge 0").isCompr("<<<< <1> 
add   <2>> add  <3>>  add <4>> ge <0>>");
-    testFilter.runOnETAllPrim("1 add 2 add 3 div 4 ge 0").isCompr("<<<  <1> 
add   <2>> add <<3>   div <4>>> ge <0>>");
-    testFilter.runOnETAllPrim("1 add 2 div 3 add 4 ge 0").isCompr("<<<  <1> 
add  <<2>  div  <3>>> add <4>> ge <0>>");
-    testFilter.runOnETAllPrim("1 add 2 div 3 div 4 ge 0").isCompr("<<   <1> 
add <<<2>  div  <3>>  div <4>>> ge <0>>");
-    testFilter.runOnETAllPrim("1 div 2 add 3 add 4 ge 0").isCompr("<<<< <1> 
div   <2>> add  <3>>  add <4>> ge <0>>");
-    testFilter.runOnETAllPrim("1 div 2 add 3 div 4 ge 0").isCompr("<<<  <1> 
div   <2>> add <<3>   div <4>>> ge <0>>");
-    testFilter.runOnETAllPrim("1 div 2 div 3 add 4 ge 0").isCompr("<<<< <1> 
div   <2>> div  <3>>  add <4>> ge <0>>");
-    testFilter.runOnETAllPrim("1 div 2 div 3 div 4 ge 0").isCompr("<<<< <1> 
div   <2>> div  <3>>  div <4>> ge <0>>");
-  }
-
-  @Test
-  public void functionImport_VarParameters() {
-    // no input
-    testRes.run("FINRTInt16()")
-    .isFunctionImport("FINRTInt16")
-    .isFunction("UFNRTInt16")
-    .isType(PropertyProvider.nameInt16);
-
-    // one input
-    testRes.run("FICRTETTwoKeyNavParam(ParameterInt16=1)")
-    .isFunctionImport("FICRTETTwoKeyNavParam")
-    .isFunction("UFCRTETTwoKeyNavParam")
-    .isType(EntityTypeProvider.nameETTwoKeyNav);
-
-    // two input
-    testRes.run("FICRTStringTwoParam(ParameterString='ABC',ParameterInt16=1)")
-    .isFunctionImport("FICRTStringTwoParam")
-    .isFunction("UFCRTStringTwoParam")
-    .isType(PropertyProvider.nameString);
-  }
-
-  @Test
-  public void functionImport_VarReturning() {
-    // returning primitive
-    testRes.run("FINRTInt16()")
-    .isFunctionImport("FINRTInt16")
-    .isFunction("UFNRTInt16")
-    .isType(PropertyProvider.nameInt16, false);
-
-    // returning collection of primitive
-    
testRes.run("FICRTCollStringTwoParam(ParameterString='ABC',ParameterInt16=1)")
-    .isFunctionImport("FICRTCollStringTwoParam")
-    .isFunction("UFCRTCollStringTwoParam")
-    .isType(PropertyProvider.nameString, true);
-
-    // returning single complex
-    
testRes.run("FICRTCTAllPrimTwoParam(ParameterString='ABC',ParameterInt16=1)")
-    .isFunctionImport("FICRTCTAllPrimTwoParam")
-    .isFunction("UFCRTCTAllPrimTwoParam")
-    .isType(ComplexTypeProvider.nameCTAllPrim, false);
-
-    // returning collection of complex
-    testRes.run("FICRTCollCTTwoPrim()")
-    .isFunctionImport("FICRTCollCTTwoPrim")
-    .isFunction("UFCRTCollCTTwoPrim")
-    .isType(ComplexTypeProvider.nameCTTwoPrim, true);
-
-    // returning single entity
-    testRes.run("FICRTETTwoKeyNavParam(ParameterInt16=1)")
-    .isFunctionImport("FICRTETTwoKeyNavParam")
-    .isFunction("UFCRTETTwoKeyNavParam")
-    .isType(EntityTypeProvider.nameETTwoKeyNav, false);
-
-    // returning collection of entity (aka entitySet)
-    testRes.run("FICRTCollESTwoKeyNavParam(ParameterInt16=1)")
-    .isFunctionImport("FICRTCollESTwoKeyNavParam")
-    .isFunction("UFCRTCollETTwoKeyNavParam")
-    .isType(EntityTypeProvider.nameETTwoKeyNav, true);
-  }
-
-  @Test
-  public void functionImportChain() {
-    // test chain; returning single complex
-    
testRes.run("FICRTCTAllPrimTwoParam(ParameterString='ABC',ParameterInt16=1)/PropertyInt16")
-    .at(0)
-    .isFunctionImport("FICRTCTAllPrimTwoParam")
-    .isFunction("UFCRTCTAllPrimTwoParam")
-    .isType(ComplexTypeProvider.nameCTAllPrim, false)
-    .isParameter(0, "ParameterString", "'ABC'")
-    .isParameter(1, "ParameterInt16", "1")
-    .at(1)
-    .isPrimitiveProperty("PropertyInt16", PropertyProvider.nameInt16, false);
-
-    // test chains; returning single entity
-    testRes.run("FICRTETTwoKeyNavParam(ParameterInt16=1)/PropertyInt16")
-    .at(0)
-    .isFunctionImport("FICRTETTwoKeyNavParam")
-    .isFunction("UFCRTETTwoKeyNavParam")
-    .isType(EntityTypeProvider.nameETTwoKeyNav, false)
-    .isParameter(0, "ParameterInt16", "1")
-    .at(1)
-    .isPrimitiveProperty("PropertyInt16", PropertyProvider.nameInt16, false);
-
-    // test chains; returning collection of entity (aka entitySet)
-    
testRes.run("FICRTCollESTwoKeyNavParam(ParameterInt16=1)(PropertyInt16=1,PropertyString='ABC')")
-    .at(0)
-    .isFunctionImport("FICRTCollESTwoKeyNavParam")
-    .isFunction("UFCRTCollETTwoKeyNavParam")
-    .isType(EntityTypeProvider.nameETTwoKeyNav, false)
-    .isParameter(0, "ParameterInt16", "1")
-    .isKeyPredicate(0, "PropertyInt16", "1")
-    .isKeyPredicate(1, "PropertyString", "'ABC'");
-
-    // test chains; returning collection of entity (aka entitySet)
-    
testRes.run("FICRTCollESTwoKeyNavParam(ParameterInt16=1)(PropertyInt16=1,PropertyString='ABC')/PropertyInt16")
-    .at(0)
-    .isFunctionImport("FICRTCollESTwoKeyNavParam")
-    .isFunction("UFCRTCollETTwoKeyNavParam")
-    .isType(EntityTypeProvider.nameETTwoKeyNav, false)
-    .isParameter(0, "ParameterInt16", "1")
-    .isKeyPredicate(0, "PropertyInt16", "1")
-    .isKeyPredicate(1, "PropertyString", "'ABC'")
-    .at(1)
-    .isPrimitiveProperty("PropertyInt16", PropertyProvider.nameInt16, false);
-  }
-
-  @Test
-  public void metaData() throws Exception {
-    // Parsing the fragment may be used if a uri has to be parsed on the 
consumer side.
-    // On the producer side this feature is currently not supported, so the 
context fragment
-    // part is only available as text.
-
-    testUri.run("$metadata")
-    .isKind(UriInfoKind.metadata);
-
-    testUri.run("$metadata", "$format=atom")
-    .isKind(UriInfoKind.metadata)
-    .isFormatText("atom");
-
-    // with context (client usage)
-
-    testUri.run("$metadata", null, "$ref")
-    .isKind(UriInfoKind.metadata)
-    .isFragmentText("$ref");
-
-    testUri.run("$metadata", "$format=atom", "$ref")
-    .isKind(UriInfoKind.metadata)
-    .isFormatText("atom")
-    .isFragmentText("$ref");
-
-    testUri.run("$metadata", "$format=atom", "Collection($ref)")
-    .isKind(UriInfoKind.metadata)
-    .isFormatText("atom")
-    .isFragmentText("Collection($ref)");
-
-    testUri.run("$metadata", "$format=atom", "Collection(Edm.EntityType)")
-    .isKind(UriInfoKind.metadata)
-    .isFormatText("atom")
-    .isFragmentText("Collection(Edm.EntityType)");
-
-    testUri.run("$metadata", "$format=atom", "Collection(Edm.ComplexType)")
-    .isKind(UriInfoKind.metadata)
-    .isFormatText("atom")
-    .isFragmentText("Collection(Edm.ComplexType)");
-
-    testUri.run("$metadata", "$format=atom", "SINav")
-    .isKind(UriInfoKind.metadata)
-    .isFormatText("atom")
-    .isFragmentText("SINav");
-
-    testUri.run("$metadata", "$format=atom", "SINav/PropertyInt16")
-    .isKind(UriInfoKind.metadata)
-    .isFormatText("atom")
-    .isFragmentText("SINav/PropertyInt16");
-
-    testUri.run("$metadata", "$format=atom", "SINav/NavPropertyETKeyNavOne")
-    .isKind(UriInfoKind.metadata)
-    .isFormatText("atom")
-    .isFragmentText("SINav/NavPropertyETKeyNavOne");
-
-    testUri.run("$metadata", "$format=atom", 
"SINav/NavPropertyETKeyNavMany(1)")
-    .isKind(UriInfoKind.metadata)
-    .isFormatText("atom")
-    .isFragmentText("SINav/NavPropertyETKeyNavMany(1)");
-
-    testUri.run("$metadata", "$format=atom", 
"SINav/NavPropertyETKeyNavOne/PropertyInt16")
-    .isKind(UriInfoKind.metadata)
-    .isFormatText("atom")
-    .isFragmentText("SINav/NavPropertyETKeyNavOne/PropertyInt16");
-
-    testUri.run("$metadata", "$format=atom", 
"SINav/NavPropertyETKeyNavMany(1)/PropertyInt16")
-    .isKind(UriInfoKind.metadata)
-    .isFormatText("atom")
-    .isFragmentText("SINav/NavPropertyETKeyNavMany(1)/PropertyInt16");
-
-    testUri.run("$metadata", "$format=atom", 
"SINav/olingo.odata.test1.ETTwoPrim/NavPropertyETKeyNavOne/PropertyInt16")
-    .isKind(UriInfoKind.metadata)
-    .isFormatText("atom")
-    
.isFragmentText("SINav/olingo.odata.test1.ETTwoPrim/NavPropertyETKeyNavOne/PropertyInt16");
-
-    testUri.run("$metadata", "$format=atom",
-        
"SINav/olingo.odata.test1.ETTwoPrim/NavPropertyETKeyNavMany(1)/PropertyInt16")
-        .isKind(UriInfoKind.metadata)
-        .isFormatText("atom")
-        
.isFragmentText("SINav/olingo.odata.test1.ETTwoPrim/NavPropertyETKeyNavMany(1)/PropertyInt16");
-
-    testUri.run("$metadata", "$format=atom", "olingo.odata.test1.ETAllKey")
-    .isKind(UriInfoKind.metadata)
-    .isFormatText("atom")
-    .isFragmentText("olingo.odata.test1.ETAllKey");
-
-    testUri.run("$metadata", "$format=atom", "ESTwoPrim/$deletedEntity")
-    .isKind(UriInfoKind.metadata)
-    .isFormatText("atom")
-    .isFragmentText("ESTwoPrim/$deletedEntity");
-
-    testUri.run("$metadata", "$format=atom", "ESTwoPrim/$link")
-    .isKind(UriInfoKind.metadata)
-    .isFormatText("atom")
-    .isFragmentText("ESTwoPrim/$link");
-
-    testUri.run("$metadata", "$format=atom", "ESTwoPrim/$deletedLink")
-    .isKind(UriInfoKind.metadata)
-    .isFormatText("atom")
-    .isFragmentText("ESTwoPrim/$deletedLink");
-
-    testUri.run("$metadata", "$format=atom", "ESKeyNav")
-    .isKind(UriInfoKind.metadata)
-    .isFormatText("atom")
-    .isFragmentText("ESKeyNav");
-
-    testUri.run("$metadata", "$format=atom", "ESKeyNav/PropertyInt16")
-    .isKind(UriInfoKind.metadata)
-    .isFormatText("atom")
-    .isFragmentText("ESKeyNav/PropertyInt16");
-
-    testUri.run("$metadata", "$format=atom", "ESKeyNav/NavPropertyETKeyNavOne")
-    .isKind(UriInfoKind.metadata)
-    .isFormatText("atom")
-    .isFragmentText("ESKeyNav/NavPropertyETKeyNavOne");
-
-    testUri.run("$metadata", "$format=atom", 
"ESKeyNav/NavPropertyETKeyNavMany(1)")
-    .isKind(UriInfoKind.metadata)
-    .isFormatText("atom")
-    .isFragmentText("ESKeyNav/NavPropertyETKeyNavMany(1)");
-
-    testUri.run("$metadata", "$format=atom", 
"ESKeyNav/NavPropertyETKeyNavOne/PropertyInt16")
-    .isKind(UriInfoKind.metadata)
-    .isFormatText("atom")
-    .isFragmentText("ESKeyNav/NavPropertyETKeyNavOne/PropertyInt16");
-
-    testUri.run("$metadata", "$format=atom", 
"ESKeyNav/NavPropertyETKeyNavMany(1)/PropertyInt16")
-    .isKind(UriInfoKind.metadata)
-    .isFormatText("atom")
-    .isFragmentText("ESKeyNav/NavPropertyETKeyNavMany(1)/PropertyInt16");
-
-    testUri.run("$metadata", "$format=atom",
-        
"ESKeyNav/olingo.odata.test1.ETTwoPrim/NavPropertyETKeyNavOne/PropertyInt16")
-        .isKind(UriInfoKind.metadata)
-        .isFormatText("atom")
-        
.isFragmentText("ESKeyNav/olingo.odata.test1.ETTwoPrim/NavPropertyETKeyNavOne/PropertyInt16");
-
-    testUri.run(
-        "$metadata", "$format=atom", 
"ESKeyNav/olingo.odata.test1.ETTwoPrim/NavPropertyETKeyNavMany(1)/PropertyInt16")
-        .isKind(UriInfoKind.metadata)
-        .isFormatText("atom")
-        
.isFragmentText("ESKeyNav/olingo.odata.test1.ETTwoPrim/NavPropertyETKeyNavMany(1)/PropertyInt16");
-
-    testUri.run("$metadata", "$format=atom", 
"ESKeyNav(PropertyInt16,PropertyString)")
-    .isKind(UriInfoKind.metadata)
-    .isFormatText("atom")
-    .isFragmentText("ESKeyNav(PropertyInt16,PropertyString)");
-
-    testUri.run("$metadata", "$format=atom", "ESKeyNav/$entity")
-    .isKind(UriInfoKind.metadata)
-    .isFormatText("atom")
-    .isFragmentText("ESKeyNav/$entity");
-
-    testUri.run("$metadata", "$format=atom", "ESKeyNav/$delta")
-    .isKind(UriInfoKind.metadata)
-    .isFormatText("atom")
-    .isFragmentText("ESKeyNav/$delta");
-
-    testUri.run("$metadata", "$format=atom", 
"ESKeyNav/(PropertyInt16,PropertyString)/$delta")
-    .isKind(UriInfoKind.metadata)
-    .isFormatText("atom")
-    .isFragmentText("ESKeyNav/(PropertyInt16,PropertyString)/$delta");
-
-  }
-
-  @Test
-  public void ref() throws Exception {
-    testUri.run("ESKeyNav(1)/NavPropertyETTwoKeyNavOne/$ref");
-  }
-
-  @Test
-  public void singleton() {
-    // plain singleton
-    testRes.run("SINav")
-    .isSingleton("SINav")
-    .isType(EntityTypeProvider.nameETTwoKeyNav);
-  }
-
-  @Test
-  public void navigationProperty() {
-    // with navigation property
-    testRes.run("ESKeyNav(1)/NavPropertyETTwoKeyNavOne")
-    .at(0).isEntitySet("ESKeyNav")
-    .at(1).isNavProperty("NavPropertyETTwoKeyNavOne", 
EntityTypeProvider.nameETTwoKeyNav, false);
-
-    // with navigation property -> property
-    testRes.run("ESKeyNav(1)/NavPropertyETTwoKeyNavOne/PropertyString")
-    .at(0).isEntitySet("ESKeyNav")
-    .at(1).isNavProperty("NavPropertyETTwoKeyNavOne", 
EntityTypeProvider.nameETTwoKeyNav, false)
-    .at(2).isPrimitiveProperty("PropertyString", PropertyProvider.nameString, 
false);
-
-    // with navigation property -> navigation property -> navigation property
-    testRes.run("ESKeyNav(1)/NavPropertyETTwoKeyNavOne/NavPropertyETKeyNavOne")
-    .at(0).isEntitySet("ESKeyNav")
-    .at(1).isNavProperty("NavPropertyETTwoKeyNavOne", 
EntityTypeProvider.nameETTwoKeyNav, false)
-    .at(2).isNavProperty("NavPropertyETKeyNavOne", 
EntityTypeProvider.nameETKeyNav, false);
-
-    // with navigation property(key)
-    
testRes.run("ESKeyNav(1)/NavPropertyETTwoKeyNavMany(PropertyInt16=1,PropertyString='1')")
-    .at(0).isEntitySet("ESKeyNav")
-    .at(1).isNavProperty("NavPropertyETTwoKeyNavMany", 
EntityTypeProvider.nameETTwoKeyNav, false)
-    .isKeyPredicate(0, "PropertyInt16", "1")
-    .isKeyPredicate(1, "PropertyString", "'1'");
-
-    // with navigation property(key) -> property
-    
testRes.run("ESKeyNav(1)/NavPropertyETTwoKeyNavMany(PropertyInt16=1,PropertyString='1')/PropertyString")
-    .at(0).isEntitySet("ESKeyNav")
-    .at(1).isNavProperty("NavPropertyETTwoKeyNavMany", 
EntityTypeProvider.nameETTwoKeyNav, false)
-    .isKeyPredicate(0, "PropertyInt16", "1")
-    .isKeyPredicate(1, "PropertyString", "'1'")
-    .at(2).isPrimitiveProperty("PropertyString", PropertyProvider.nameString, 
false);
-
-    // with navigation property(key) -> navigation property
-    
testRes.run("ESKeyNav(1)/NavPropertyETTwoKeyNavMany(PropertyInt16=1,PropertyString='1')/NavPropertyETKeyNavOne")
-    .at(0).isEntitySet("ESKeyNav")
-    .at(1).isNavProperty("NavPropertyETTwoKeyNavMany", 
EntityTypeProvider.nameETTwoKeyNav, false)
-    .isKeyPredicate(0, "PropertyInt16", "1")
-    .isKeyPredicate(1, "PropertyString", "'1'")
-    .at(2).isNavProperty("NavPropertyETKeyNavOne", 
EntityTypeProvider.nameETKeyNav, false);
-
-    // with navigation property(key) -> navigation property(key)
-    
testRes.run("ESKeyNav(1)/NavPropertyETTwoKeyNavMany(PropertyInt16=1,PropertyString='1')"
-        + "/NavPropertyETKeyNavMany(1)")
-        .at(0).isEntitySet("ESKeyNav")
-        .at(1).isNavProperty("NavPropertyETTwoKeyNavMany", 
EntityTypeProvider.nameETTwoKeyNav, false)
-        .isKeyPredicate(0, "PropertyInt16", "1")
-        .isKeyPredicate(1, "PropertyString", "'1'")
-        .at(2).isNavProperty("NavPropertyETKeyNavMany", 
EntityTypeProvider.nameETKeyNav, false)
-        .isKeyPredicate(0, "PropertyInt16", "1");
-
-    // with navigation property(key) -> navigation property -> property
-    
testRes.run("ESKeyNav(1)/NavPropertyETTwoKeyNavMany(PropertyInt16=1,PropertyString='1')"
-        + "/NavPropertyETKeyNavOne/PropertyString")
-        .at(0).isEntitySet("ESKeyNav")
-        .at(1).isNavProperty("NavPropertyETTwoKeyNavMany", 
EntityTypeProvider.nameETTwoKeyNav, false)
-        .isKeyPredicate(0, "PropertyInt16", "1")
-        .isKeyPredicate(1, "PropertyString", "'1'")
-        .at(2).isNavProperty("NavPropertyETKeyNavOne", 
EntityTypeProvider.nameETKeyNav, false)
-        .at(3).isPrimitiveProperty("PropertyString", 
PropertyProvider.nameString, false);
-
-    // with navigation property(key) -> navigation property(key) -> property
-    
testRes.run("ESKeyNav(1)/NavPropertyETTwoKeyNavMany(PropertyInt16=1,PropertyString='1')"
-        + "/NavPropertyETKeyNavMany(1)/PropertyString")
-        .at(0).isEntitySet("ESKeyNav")
-        .at(1).isNavProperty("NavPropertyETTwoKeyNavMany", 
EntityTypeProvider.nameETTwoKeyNav, false)
-        .isKeyPredicate(0, "PropertyInt16", "1")
-        .isKeyPredicate(1, "PropertyString", "'1'")
-        .at(2).isNavProperty("NavPropertyETKeyNavMany", 
EntityTypeProvider.nameETKeyNav, false)
-        .isKeyPredicate(0, "PropertyInt16", "1")
-        .at(3).isPrimitiveProperty("PropertyString", 
PropertyProvider.nameString, false);
-  }
-
-  @Test
-  public void singleton_Property() {
-    // with property
-    testRes.run("SINav/PropertyInt16")
-    .at(0)
-    .isSingleton("SINav")
-    .isType(EntityTypeProvider.nameETTwoKeyNav)
-    .at(1)
-    .isPrimitiveProperty("PropertyInt16", PropertyProvider.nameInt16, false);
-
-    // with complex property
-    testRes.run("SINav/PropertyComp")
-    .at(0)
-    .isSingleton("SINav")
-    .isType(EntityTypeProvider.nameETTwoKeyNav)
-    .at(1)
-    .isComplexProperty("PropertyComp", ComplexTypeProvider.nameCTPrimComp, 
false);
-
-    // with two properties
-    testRes.run("SINav/PropertyComp/PropertyInt16")
-    .at(0)
-    .isSingleton("SINav")
-    .isType(EntityTypeProvider.nameETTwoKeyNav)
-    .at(1)
-    .isComplexProperty("PropertyComp", ComplexTypeProvider.nameCTPrimComp, 
false)
-    .at(2)
-    .isPrimitiveProperty("PropertyInt16", PropertyProvider.nameInt16, false);
-
-  }
-
-  @Test
-  public void value() throws Exception {
-    testUri.run("ESAllPrim(1)/PropertyString/$value");
-  }
-
-  @Test
-  public void memberStartingWithCastFailOnValidation1() throws Exception {
-    // on EntityType entry
-    testUri.runEx("ESTwoKeyNav(Property16=1,PropertyString='ABC')",
-        "$filter=olingo.odata.test1.ETBaseTwoKeyNav/PropertyDate")
-        
.isExValidation(UriValidationException.MessageKeys.INVALID_KEY_PROPERTY);
-  }
-
-  @Test
-  public void memberStartingWithCastFailOnValidation2() throws Exception {
-    
testUri.runEx("FICRTCTTwoPrimTwoParam(ParameterInt16=1,ParameterString='2')",
-        "$filter=olingo.odata.test1.CTBase/AdditionalPropString")
-        
.isExSemantic(UriParserSemanticException.MessageKeys.TYPES_NOT_COMPATIBLE);
-  }
-
-  @Test
-  public void memberStartingWithCast() throws Exception {
-    // on EntityType collection
-    
testFilter.runOnETTwoKeyNav("olingo.odata.test1.ETBaseTwoKeyNav/PropertyDate eq 
null")
-    .left()
-    .isMember()
-    .isMemberStartType(EntityTypeProvider.nameETBaseTwoKeyNav).goPath()
-    .at(0).isType(PropertyProvider.nameDate);
-
-    // on Complex collection
-    
testUri.run("FICRTCollCTTwoPrimTwoParam(ParameterInt16=1,ParameterString='2')",
-        "$filter=olingo.odata.test1.CTBase/AdditionalPropString eq null")
-        .goFilter().left().isMember()
-        .isMemberStartType(ComplexTypeProvider.nameCTBase).goPath()
-        .at(0).isType(PropertyProvider.nameString);
-  }
-
-  @Test
-  public void complexTypeCastFollowingAsCollection() throws Exception {
-    
testUri.run("FICRTCollCTTwoPrimTwoParam(ParameterInt16=1,ParameterString='2')/olingo.odata.test1.CTBase");
-  }
-
-  @Test
-  public void alias() throws Exception {
-    testFilter.runOnETAllPrim("PropertyInt16 eq @p1&@p1=1")
-        .is("<<PropertyInt16> eq <@p1>>");
-  }
-
-  @Test
-  public void lambda() throws Exception {
-    testFilter.runOnETTwoKeyNav("CollPropertyComp/all(l:true)")
-        .is("<CollPropertyComp/<ALL;<true>>>");
-
-    testFilter.runOnETTwoKeyNav("CollPropertyComp/all(x:x/PropertyInt16 eq 2)")
-        .is("<CollPropertyComp/<ALL;<<x/PropertyInt16> eq <2>>>>");
-
-    testFilter.runOnETTwoKeyNav("CollPropertyComp/any(l:true)")
-        .is("<CollPropertyComp/<ANY;<true>>>");
-    testFilter.runOnETTwoKeyNav("CollPropertyComp/any()")
-        .is("<CollPropertyComp/<ANY;>>");
-  }
-
-  @Test
-  public void customQueryOption() throws Exception {
-    testUri.run("ESTwoKeyNav", "custom")
-        .isCustomParameter(0, "custom", "");
-    testUri.run("ESTwoKeyNav", "custom=ABC")
-        .isCustomParameter(0, "custom", "ABC");
-  }
-
-  @Test
-  @Ignore("Geo types are not supported yet.")
-  public void geo() throws Exception {
-    testFilter.runOnETAllPrim("geo.distance(PropertySByte,PropertySByte)")
-        .is("<geo.distance(<PropertySByte>,<PropertySByte>)>")
-        .isMethod(MethodKind.GEODISTANCE, 2);
-    testFilter.runOnETAllPrim("geo.length(PropertySByte)")
-        .is("<geo.length(<PropertySByte>)>")
-        .isMethod(MethodKind.GEOLENGTH, 1);
-    testFilter.runOnETAllPrim("geo.intersects(PropertySByte,PropertySByte)")
-        .is("<geo.intersects(<PropertySByte>,<PropertySByte>)>")
-        .isMethod(MethodKind.GEOINTERSECTS, 2);
-  }
-}

Reply via email to