You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ch...@apache.org on 2013/12/06 15:51:44 UTC

[08/21] [OLINGO-77] Refactored java package names

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/82ae6060/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/FunctionMapKeyTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/FunctionMapKeyTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/FunctionMapKeyTest.java
new file mode 100644
index 0000000..775dc8a
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/FunctionMapKeyTest.java
@@ -0,0 +1,250 @@
+/*******************************************************************************
+ * 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.odata4.commons.core.edm;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotSame;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.olingo.odata4.commons.api.edm.helper.FullQualifiedName;
+import org.junit.Test;
+
+public class FunctionMapKeyTest {
+
+  private final FullQualifiedName fqn = new FullQualifiedName("namespace", "name");
+  private final FullQualifiedName fqnType = new FullQualifiedName("namespace2", "name2");
+
+  @Test
+  public void testEqualsPositive() {
+    FunctionMapKey key = new FunctionMapKey(fqn, null, null, null);
+    FunctionMapKey someKey = new FunctionMapKey(fqn, null, null, null);
+    assertEquals(key, someKey);
+
+    key = new FunctionMapKey(fqn, null, true, null);
+    someKey = new FunctionMapKey(fqn, null, true, null);
+    assertEquals(key, someKey);
+
+    key = new FunctionMapKey(fqn, fqnType, true, null);
+    someKey = new FunctionMapKey(fqn, fqnType, true, null);
+    assertEquals(key, someKey);
+
+    key = new FunctionMapKey(fqn, fqnType, false, null);
+    someKey = new FunctionMapKey(fqn, fqnType, false, null);
+    assertEquals(key, someKey);
+
+    key = new FunctionMapKey(fqn, fqnType, false, new ArrayList<String>());
+    someKey = new FunctionMapKey(fqn, fqnType, false, new ArrayList<String>());
+    assertEquals(key, someKey);
+
+    List<String> keyList = new ArrayList<String>();
+    keyList.add("Employee");
+    List<String> someKeyList = new ArrayList<String>();
+    someKeyList.add("Employee");
+    key = new FunctionMapKey(fqn, fqnType, false, keyList);
+    someKey = new FunctionMapKey(fqn, fqnType, false, someKeyList);
+    assertEquals(key, someKey);
+
+    key = new FunctionMapKey(fqn, null, null, new ArrayList<String>());
+    someKey = new FunctionMapKey(fqn, null, null, new ArrayList<String>());
+    assertEquals(key, someKey);
+
+    keyList = new ArrayList<String>();
+    keyList.add("Employee");
+    someKeyList = new ArrayList<String>();
+    someKeyList.add("Employee");
+    key = new FunctionMapKey(fqn, null, null, keyList);
+    someKey = new FunctionMapKey(fqn, null, null, someKeyList);
+    assertEquals(key, someKey);
+  }
+
+  @Test
+  public void testEqualsNegative() {
+    FunctionMapKey key = new FunctionMapKey(fqn, null, null, null);
+    FunctionMapKey someKey = new FunctionMapKey(fqn, null, true, null);
+    assertNotSame(key, someKey);
+
+    key = new FunctionMapKey(fqn, null, true, null);
+    someKey = new FunctionMapKey(fqn, null, false, null);
+    assertNotSame(key, someKey);
+
+    key = new FunctionMapKey(fqn, fqnType, true, null);
+    someKey = new FunctionMapKey(fqn, null, true, null);
+    assertNotSame(key, someKey);
+
+    key = new FunctionMapKey(fqn, null, false, null);
+    someKey = new FunctionMapKey(fqn, fqnType, true, null);
+    assertNotSame(key, someKey);
+
+    key = new FunctionMapKey(fqn, fqnType, false, null);
+    someKey = new FunctionMapKey(fqn, fqnType, false, new ArrayList<String>());
+    assertNotSame(key, someKey);
+
+    List<String> keyList = new ArrayList<String>();
+    keyList.add("Employee");
+    List<String> someKeyList = new ArrayList<String>();
+    someKeyList.add("Employee2");
+    key = new FunctionMapKey(fqn, fqnType, false, keyList);
+    someKey = new FunctionMapKey(fqn, fqnType, false, someKeyList);
+    assertNotSame(key, someKey);
+
+    key = new FunctionMapKey(fqn, null, null, new ArrayList<String>());
+    someKey = new FunctionMapKey(fqn, null, null, new ArrayList<String>());
+    assertNotSame(key, someKey);
+
+    keyList = new ArrayList<String>();
+    keyList.add("Employee");
+    someKeyList = new ArrayList<String>();
+    someKeyList.add("Employee2");
+    key = new FunctionMapKey(fqn, null, null, keyList);
+    someKey = new FunctionMapKey(fqn, null, null, someKeyList);
+    assertNotSame(key, someKey);
+
+    key = new FunctionMapKey(fqn, null, null, new ArrayList<String>());
+    someKey = new FunctionMapKey(fqn, null, null, null);
+    assertNotSame(key, someKey);
+
+    keyList = new ArrayList<String>();
+    keyList.add("Employee");
+    someKeyList = new ArrayList<String>();
+    key = new FunctionMapKey(fqn, null, null, keyList);
+    someKey = new FunctionMapKey(fqn, null, null, someKeyList);
+    assertNotSame(key, someKey);
+
+    keyList = new ArrayList<String>();
+    keyList.add("Employee");
+    someKeyList = new ArrayList<String>();
+    someKeyList.add("EmpLoYeE");
+    key = new FunctionMapKey(fqn, null, null, keyList);
+    someKey = new FunctionMapKey(fqn, null, null, someKeyList);
+    assertNotSame(key, someKey);
+  }
+
+  @Test
+  public void testHashCodePositive() {
+    FunctionMapKey key = new FunctionMapKey(fqn, null, null, null);
+    FunctionMapKey someKey = new FunctionMapKey(fqn, null, null, null);
+    assertEquals(key.hashCode(), someKey.hashCode());
+
+    key = new FunctionMapKey(fqn, null, true, null);
+    someKey = new FunctionMapKey(fqn, null, true, null);
+    assertEquals(key.hashCode(), someKey.hashCode());
+
+    key = new FunctionMapKey(fqn, fqnType, true, null);
+    someKey = new FunctionMapKey(fqn, fqnType, true, null);
+    assertEquals(key.hashCode(), someKey.hashCode());
+
+    key = new FunctionMapKey(fqn, fqnType, false, null);
+    someKey = new FunctionMapKey(fqn, fqnType, false, null);
+    assertEquals(key.hashCode(), someKey.hashCode());
+
+    key = new FunctionMapKey(fqn, fqnType, false, new ArrayList<String>());
+    someKey = new FunctionMapKey(fqn, fqnType, false, new ArrayList<String>());
+    assertEquals(key.hashCode(), someKey.hashCode());
+
+    List<String> keyList = new ArrayList<String>();
+    keyList.add("Employee");
+    List<String> someKeyList = new ArrayList<String>();
+    someKeyList.add("Employee");
+    key = new FunctionMapKey(fqn, fqnType, false, keyList);
+    someKey = new FunctionMapKey(fqn, fqnType, false, someKeyList);
+    assertEquals(key.hashCode(), someKey.hashCode());
+
+    key = new FunctionMapKey(fqn, null, null, new ArrayList<String>());
+    someKey = new FunctionMapKey(fqn, null, null, new ArrayList<String>());
+    assertEquals(key.hashCode(), someKey.hashCode());
+
+    keyList = new ArrayList<String>();
+    keyList.add("Employee");
+    someKeyList = new ArrayList<String>();
+    someKeyList.add("Employee");
+    key = new FunctionMapKey(fqn, null, null, keyList);
+    someKey = new FunctionMapKey(fqn, null, null, someKeyList);
+    assertEquals(key.hashCode(), someKey.hashCode());
+
+    keyList = new ArrayList<String>();
+    keyList.add("Employee");
+    keyList.add("employee");
+    someKeyList = new ArrayList<String>();
+    someKeyList.add("Employee");
+    someKeyList.add("employee");
+    key = new FunctionMapKey(fqn, null, null, keyList);
+    someKey = new FunctionMapKey(fqn, null, null, someKeyList);
+    assertEquals(key.hashCode(), someKey.hashCode());
+
+    keyList = new ArrayList<String>();
+    keyList.add("Employee");
+    keyList.add("Employee2");
+    someKeyList = new ArrayList<String>();
+    someKeyList.add("Employee2");
+    someKeyList.add("Employee");
+    key = new FunctionMapKey(fqn, null, null, keyList);
+    someKey = new FunctionMapKey(fqn, null, null, someKeyList);
+    assertEquals(key.hashCode(), someKey.hashCode());
+  }
+
+  @Test
+  public void testHashCodeNegative() {
+    FunctionMapKey key = new FunctionMapKey(fqn, null, null, null);
+    FunctionMapKey someKey = new FunctionMapKey(fqn, null, true, null);
+    assertNotSame(key.hashCode(), someKey.hashCode());
+
+    key = new FunctionMapKey(fqn, null, true, null);
+    someKey = new FunctionMapKey(fqn, null, false, null);
+    assertNotSame(key.hashCode(), someKey.hashCode());
+
+    key = new FunctionMapKey(fqn, fqnType, true, null);
+    someKey = new FunctionMapKey(fqn, null, true, null);
+    assertNotSame(key.hashCode(), someKey.hashCode());
+
+    key = new FunctionMapKey(fqn, null, false, null);
+    someKey = new FunctionMapKey(fqn, fqnType, true, null);
+    assertNotSame(key.hashCode(), someKey.hashCode());
+
+    key = new FunctionMapKey(fqn, fqnType, false, null);
+    someKey = new FunctionMapKey(fqn, fqnType, false, new ArrayList<String>());
+    assertNotSame(key.hashCode(), someKey.hashCode());
+
+    List<String> keyList = new ArrayList<String>();
+    keyList.add("Employee");
+    List<String> someKeyList = new ArrayList<String>();
+    someKeyList.add("Employee2");
+    key = new FunctionMapKey(fqn, fqnType, false, keyList);
+    someKey = new FunctionMapKey(fqn, fqnType, false, someKeyList);
+    assertNotSame(key.hashCode(), someKey.hashCode());
+
+    key = new FunctionMapKey(fqn, null, null, new ArrayList<String>());
+    someKey = new FunctionMapKey(fqn, null, null, new ArrayList<String>());
+    assertNotSame(key.hashCode(), someKey.hashCode());
+
+    keyList = new ArrayList<String>();
+    keyList.add("Employee");
+    someKeyList = new ArrayList<String>();
+    someKeyList.add("Employee2");
+    key = new FunctionMapKey(fqn, null, null, keyList);
+    someKey = new FunctionMapKey(fqn, null, null, someKeyList);
+    assertNotSame(key.hashCode(), someKey.hashCode());
+
+    key = new FunctionMapKey(fqn, null, null, new ArrayList<String>());
+    someKey = new FunctionMapKey(fqn, null, null, null);
+    assertNotSame(key.hashCode(), someKey.hashCode());
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/82ae6060/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/CommonPrimitiveTypeTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/CommonPrimitiveTypeTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/CommonPrimitiveTypeTest.java
new file mode 100644
index 0000000..a1325e6
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/CommonPrimitiveTypeTest.java
@@ -0,0 +1,172 @@
+/*******************************************************************************
+ * 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.odata4.commons.core.edm.primitivetype;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.math.BigDecimal;
+import java.util.Calendar;
+import java.util.UUID;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveType;
+import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
+import org.junit.Test;
+
+public class CommonPrimitiveTypeTest extends PrimitiveTypeBaseTest {
+
+  @Test
+  public void nameSpace() throws Exception {
+    assertEquals(EdmPrimitiveType.SYSTEM_NAMESPACE, Uint7.getInstance().getNamespace());
+
+    assertEquals(EdmPrimitiveType.EDM_NAMESPACE, EdmNull.getInstance().getNamespace());
+    for (EdmPrimitiveTypeKind kind : EdmPrimitiveTypeKind.values()) {
+      final EdmPrimitiveType instance = kind.getEdmPrimitiveTypeInstance();
+      assertEquals(EdmPrimitiveType.EDM_NAMESPACE, instance.getNamespace());
+    }
+  }
+
+  @Test
+  public void names() throws Exception {
+    assertEquals("Uint7", Uint7.getInstance().getName());
+
+    assertEquals("Null", EdmNull.getInstance().getName());
+    assertEquals("Binary", EdmPrimitiveTypeKind.Binary.getEdmPrimitiveTypeInstance().getName());
+    assertEquals("Boolean", EdmPrimitiveTypeKind.Boolean.getEdmPrimitiveTypeInstance().getName());
+    assertEquals("Byte", EdmPrimitiveTypeKind.Byte.getEdmPrimitiveTypeInstance().getName());
+    assertEquals("Date", EdmPrimitiveTypeKind.Date.getEdmPrimitiveTypeInstance().getName());
+    assertEquals("DateTimeOffset", EdmPrimitiveTypeKind.DateTimeOffset.getEdmPrimitiveTypeInstance().getName());
+    assertEquals("Decimal", EdmPrimitiveTypeKind.Decimal.getEdmPrimitiveTypeInstance().getName());
+    assertEquals("Double", EdmPrimitiveTypeKind.Double.getEdmPrimitiveTypeInstance().getName());
+    assertEquals("Duration", EdmPrimitiveTypeKind.Duration.getEdmPrimitiveTypeInstance().getName());
+    assertEquals("Guid", EdmPrimitiveTypeKind.Guid.getEdmPrimitiveTypeInstance().getName());
+    assertEquals("Int16", EdmPrimitiveTypeKind.Int16.getEdmPrimitiveTypeInstance().getName());
+    assertEquals("Int32", EdmPrimitiveTypeKind.Int32.getEdmPrimitiveTypeInstance().getName());
+    assertEquals("Int64", EdmPrimitiveTypeKind.Int64.getEdmPrimitiveTypeInstance().getName());
+    assertEquals("SByte", EdmPrimitiveTypeKind.SByte.getEdmPrimitiveTypeInstance().getName());
+    assertEquals("Single", EdmPrimitiveTypeKind.Single.getEdmPrimitiveTypeInstance().getName());
+    assertEquals("String", EdmPrimitiveTypeKind.String.getEdmPrimitiveTypeInstance().getName());
+    assertEquals("TimeOfDay", EdmPrimitiveTypeKind.TimeOfDay.getEdmPrimitiveTypeInstance().getName());
+  }
+
+  @Test
+  public void kind() throws Exception {
+    for (EdmPrimitiveTypeKind kind : EdmPrimitiveTypeKind.values()) {
+      assertEquals(EdmTypeKind.PRIMITIVE, kind.getEdmPrimitiveTypeInstance().getKind());
+    }
+  }
+
+  @Test
+  public void toStringAll() throws Exception {
+    assertEquals("System.Uint7", Uint7.getInstance().toString());
+
+    assertEquals("Edm.Null", EdmNull.getInstance().toString());
+    assertEquals("Edm.Binary", EdmPrimitiveTypeKind.Binary.getEdmPrimitiveTypeInstance().toString());
+    assertEquals("Edm.Boolean", EdmPrimitiveTypeKind.Boolean.getEdmPrimitiveTypeInstance().toString());
+    assertEquals("Edm.Byte", EdmPrimitiveTypeKind.Byte.getEdmPrimitiveTypeInstance().toString());
+    assertEquals("Edm.Date", EdmPrimitiveTypeKind.Date.getEdmPrimitiveTypeInstance().toString());
+    assertEquals("Edm.DateTimeOffset", EdmPrimitiveTypeKind.DateTimeOffset.getEdmPrimitiveTypeInstance().toString());
+    assertEquals("Edm.Decimal", EdmPrimitiveTypeKind.Decimal.getEdmPrimitiveTypeInstance().toString());
+    assertEquals("Edm.Double", EdmPrimitiveTypeKind.Double.getEdmPrimitiveTypeInstance().toString());
+    assertEquals("Edm.Duration", EdmPrimitiveTypeKind.Duration.getEdmPrimitiveTypeInstance().toString());
+    assertEquals("Edm.Guid", EdmPrimitiveTypeKind.Guid.getEdmPrimitiveTypeInstance().toString());
+    assertEquals("Edm.Int16", EdmPrimitiveTypeKind.Int16.getEdmPrimitiveTypeInstance().toString());
+    assertEquals("Edm.Int32", EdmPrimitiveTypeKind.Int32.getEdmPrimitiveTypeInstance().toString());
+    assertEquals("Edm.Int64", EdmPrimitiveTypeKind.Int64.getEdmPrimitiveTypeInstance().toString());
+    assertEquals("Edm.SByte", EdmPrimitiveTypeKind.SByte.getEdmPrimitiveTypeInstance().toString());
+    assertEquals("Edm.Single", EdmPrimitiveTypeKind.Single.getEdmPrimitiveTypeInstance().toString());
+    assertEquals("Edm.String", EdmPrimitiveTypeKind.String.getEdmPrimitiveTypeInstance().toString());
+    assertEquals("Edm.TimeOfDay", EdmPrimitiveTypeKind.TimeOfDay.getEdmPrimitiveTypeInstance().toString());
+
+    for (EdmPrimitiveTypeKind kind : EdmPrimitiveTypeKind.values()) {
+      final EdmPrimitiveType instance = kind.getEdmPrimitiveTypeInstance();
+      assertEquals(instance.toString(), kind.getFullQualifiedName().toString());
+    }
+  }
+
+  @Test
+  public void compatibility() {
+    for (EdmPrimitiveTypeKind kind : EdmPrimitiveTypeKind.values()) {
+      final EdmPrimitiveType instance = kind.getEdmPrimitiveTypeInstance();
+      assertTrue(instance.isCompatible(instance));
+      assertFalse(instance.isCompatible(
+          (kind == EdmPrimitiveTypeKind.String ? EdmPrimitiveTypeKind.Binary : EdmPrimitiveTypeKind.String)
+              .getEdmPrimitiveTypeInstance()));
+    }
+  }
+
+  @Test
+  public void defaultType() throws Exception {
+    assertEquals(Byte.class, Uint7.getInstance().getDefaultType());
+    assertNull(EdmNull.getInstance().getDefaultType());
+
+    assertEquals(byte[].class, EdmPrimitiveTypeKind.Binary.getEdmPrimitiveTypeInstance().getDefaultType());
+    assertEquals(Boolean.class, EdmPrimitiveTypeKind.Boolean.getEdmPrimitiveTypeInstance().getDefaultType());
+    assertEquals(Short.class, EdmPrimitiveTypeKind.Byte.getEdmPrimitiveTypeInstance().getDefaultType());
+    assertEquals(Calendar.class, EdmPrimitiveTypeKind.Date.getEdmPrimitiveTypeInstance().getDefaultType());
+    assertEquals(Calendar.class, EdmPrimitiveTypeKind.DateTimeOffset.getEdmPrimitiveTypeInstance().getDefaultType());
+    assertEquals(BigDecimal.class, EdmPrimitiveTypeKind.Decimal.getEdmPrimitiveTypeInstance().getDefaultType());
+    assertEquals(Double.class, EdmPrimitiveTypeKind.Double.getEdmPrimitiveTypeInstance().getDefaultType());
+    assertEquals(BigDecimal.class, EdmPrimitiveTypeKind.Duration.getEdmPrimitiveTypeInstance().getDefaultType());
+    assertEquals(UUID.class, EdmPrimitiveTypeKind.Guid.getEdmPrimitiveTypeInstance().getDefaultType());
+    assertEquals(Short.class, EdmPrimitiveTypeKind.Int16.getEdmPrimitiveTypeInstance().getDefaultType());
+    assertEquals(Integer.class, EdmPrimitiveTypeKind.Int32.getEdmPrimitiveTypeInstance().getDefaultType());
+    assertEquals(Long.class, EdmPrimitiveTypeKind.Int64.getEdmPrimitiveTypeInstance().getDefaultType());
+    assertEquals(Byte.class, EdmPrimitiveTypeKind.SByte.getEdmPrimitiveTypeInstance().getDefaultType());
+    assertEquals(Float.class, EdmPrimitiveTypeKind.Single.getEdmPrimitiveTypeInstance().getDefaultType());
+    assertEquals(String.class, EdmPrimitiveTypeKind.String.getEdmPrimitiveTypeInstance().getDefaultType());
+    assertEquals(Calendar.class, EdmPrimitiveTypeKind.TimeOfDay.getEdmPrimitiveTypeInstance().getDefaultType());
+  }
+
+  @Test
+  public void validate() throws Exception {
+    for (EdmPrimitiveTypeKind kind : EdmPrimitiveTypeKind.values()) {
+      final EdmPrimitiveType instance = kind.getEdmPrimitiveTypeInstance();
+      assertTrue(instance.validate(null, null, null, null, null, null));
+      assertTrue(instance.validate(null, true, null, null, null, null));
+      assertFalse(instance.validate(null, false, null, null, null, null));
+      assertFalse(instance.validate("ä", null, null, null, null, false));
+      if (kind != EdmPrimitiveTypeKind.String && kind != EdmPrimitiveTypeKind.Binary) {
+        assertFalse(instance.validate("", null, null, null, null, null));
+      }
+      if (kind != EdmPrimitiveTypeKind.String) {
+        assertFalse(instance.validate("ä", null, null, null, null, null));
+      }
+    }
+
+    assertTrue(EdmPrimitiveTypeKind.Binary.getEdmPrimitiveTypeInstance().validate("abcd", null, 3, null, null, null));
+    assertFalse(EdmPrimitiveTypeKind.Binary.getEdmPrimitiveTypeInstance().validate("abcd", null, 2, null, null, null));
+
+    assertTrue(EdmPrimitiveTypeKind.Decimal.getEdmPrimitiveTypeInstance().validate("1", null, null, null, null,
+        null));
+    assertFalse(EdmPrimitiveTypeKind.Decimal.getEdmPrimitiveTypeInstance().validate("1.2", null, null, null, 0, null));
+  }
+
+  @Test
+  public void uriLiteral() throws Exception {
+    for (EdmPrimitiveTypeKind kind : EdmPrimitiveTypeKind.values()) {
+      final EdmPrimitiveType instance = kind.getEdmPrimitiveTypeInstance();
+      assertEquals("test", instance.fromUriLiteral(instance.toUriLiteral("test")));
+      assertNull(instance.toUriLiteral(null));
+      assertNull(instance.fromUriLiteral(null));
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/82ae6060/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmBinaryTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmBinaryTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmBinaryTest.java
new file mode 100644
index 0000000..e4f6e6e
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmBinaryTest.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * 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.odata4.commons.core.edm.primitivetype;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Arrays;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveType;
+import org.junit.Test;
+
+public class EdmBinaryTest extends PrimitiveTypeBaseTest {
+
+  private final EdmPrimitiveType instance = EdmPrimitiveTypeKind.Binary.getEdmPrimitiveTypeInstance();
+
+  @Test
+  public void validate() throws Exception {
+    assertTrue(instance.validate(null, null, null, null, null, null));
+    assertTrue(instance.validate(null, true, null, null, null, null));
+    assertFalse(instance.validate(null, false, null, null, null, null));
+    assertTrue(instance.validate("", null, null, null, null, null));
+    assertFalse(instance.validate("????", null, null, null, null, null));
+
+    assertTrue(instance.validate("qrvM3e7_", null, null, null, null, null));
+    assertTrue(instance.validate("qrvM3e7_", null, 6, null, null, null));
+    assertFalse(instance.validate("qrvM3e7_", null, 5, null, null, null));
+  }
+
+  @Test
+  public void toUriLiteral() throws Exception {
+    assertEquals("binary'+hKqoQ=='", instance.toUriLiteral("+hKqoQ=="));
+    assertEquals("binary''", instance.toUriLiteral(""));
+  }
+
+  @Test
+  public void fromUriLiteral() throws Exception {
+    assertEquals("+hKqoQ==", instance.fromUriLiteral("binary'+hKqoQ=='"));
+    assertEquals("", instance.fromUriLiteral("binary''"));
+
+    expectErrorInFromUriLiteral(instance, "");
+    expectErrorInFromUriLiteral(instance, "binary'\"");
+    expectErrorInFromUriLiteral(instance, "X''");
+    expectErrorInFromUriLiteral(instance, "Xinary''");
+  }
+
+  @Test
+  public void valueToString() throws Exception {
+    final byte[] binary = new byte[] { (byte) 0xAA, (byte) 0xBB, (byte) 0xCC, (byte) 0xDD, (byte) 0xEE, (byte) 0xFF };
+
+    assertEquals("qrvM3e7_", instance.valueToString(binary, null, null, null, null, null));
+
+    assertEquals("qrvM3e7_", instance.valueToString(binary, null, 6, null, null, null));
+    assertEquals("qrvM3e7_", instance.valueToString(binary, null, Integer.MAX_VALUE, null, null, null));
+
+    assertEquals("qg", instance.valueToString(new Byte[] { new Byte((byte) 170) }, null, null, null, null, null));
+
+    expectFacetsErrorInValueToString(instance, binary, null, 3, null, null, null);
+
+    expectTypeErrorInValueToString(instance, 0);
+  }
+
+  @Test
+  public void valueOfString() throws Exception {
+    final byte[] binary = new byte[] { (byte) 0xAA, (byte) 0xBB, (byte) 0xCC, (byte) 0xDD, (byte) 0xEE, (byte) 0xFF };
+
+    assertTrue(Arrays.equals(binary, instance.valueOfString("qrvM3e7_", null, null, null, null, null, byte[].class)));
+    assertTrue(Arrays.equals(new Byte[] { binary[0], binary[1], binary[2] }, instance.valueOfString("qrvM", null, null,
+        null, null, null, Byte[].class)));
+
+    assertTrue(Arrays.equals(binary, instance.valueOfString("qrvM3e7_", null, 6, null, null, null, byte[].class)));
+    assertTrue(Arrays.equals(new byte[] { 42 }, instance.valueOfString("Kg==", null, 1, null, null, null,
+        byte[].class)));
+    assertTrue(Arrays.equals(new byte[] { 42 }, instance.valueOfString("Kg", null, 1, null, null, null,
+        byte[].class)));
+    assertTrue(Arrays.equals(new byte[] { 1, 2 }, instance.valueOfString("AQI=", null, 2, null, null, null,
+        byte[].class)));
+    assertTrue(Arrays.equals(binary, instance.valueOfString("qrvM3e7_", null, 6, null, null, null,
+        byte[].class)));
+    assertTrue(Arrays.equals(binary, instance.valueOfString("qrvM3e7_", null, Integer.MAX_VALUE, null, null, null,
+        byte[].class)));
+
+    expectFacetsErrorInValueOfString(instance, "qrvM3e7_", null, 3, null, null, null);
+    expectContentErrorInValueOfString(instance, "@");
+
+    expectTypeErrorInValueOfString(instance, "qrvM3e7_");
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/82ae6060/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmBooleanTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmBooleanTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmBooleanTest.java
new file mode 100644
index 0000000..8393b83
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmBooleanTest.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * 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.odata4.commons.core.edm.primitivetype;
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveType;
+import org.junit.Test;
+
+public class EdmBooleanTest extends PrimitiveTypeBaseTest {
+
+  private final EdmPrimitiveType instance = EdmPrimitiveTypeKind.Boolean.getEdmPrimitiveTypeInstance();
+
+  @Test
+  public void toUriLiteral() throws Exception {
+    assertEquals("true", instance.toUriLiteral("true"));
+    assertEquals("false", instance.toUriLiteral("false"));
+  }
+
+  @Test
+  public void fromUriLiteral() throws Exception {
+    assertEquals("true", instance.fromUriLiteral("true"));
+    assertEquals("false", instance.fromUriLiteral("false"));
+  }
+
+  @Test
+  public void valueToString() throws Exception {
+    assertEquals("true", instance.valueToString(true, null, null, null, null, null));
+    assertEquals("false", instance.valueToString(Boolean.FALSE, null, null, null, null, null));
+
+    expectTypeErrorInValueToString(instance, 0);
+  }
+
+  @Test
+  public void valueOfString() throws Exception {
+    assertEquals(true, instance.valueOfString("true", null, null, null, null, null, Boolean.class));
+    assertEquals(false, instance.valueOfString("false", null, null, null, null, null, Boolean.class));
+
+    expectContentErrorInValueOfString(instance, "True");
+    expectContentErrorInValueOfString(instance, "1");
+    expectContentErrorInValueOfString(instance, "0");
+    expectContentErrorInValueOfString(instance, "-1");
+    expectContentErrorInValueOfString(instance, "FALSE");
+
+    expectTypeErrorInValueOfString(instance, "true");
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/82ae6060/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmByteTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmByteTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmByteTest.java
new file mode 100644
index 0000000..177e34b
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmByteTest.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * 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.odata4.commons.core.edm.primitivetype;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.math.BigInteger;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveType;
+import org.junit.Test;
+
+public class EdmByteTest extends PrimitiveTypeBaseTest {
+
+  private final EdmPrimitiveType instance = EdmPrimitiveTypeKind.Byte.getEdmPrimitiveTypeInstance();
+
+  @Test
+  public void compatibility() {
+    assertTrue(instance.isCompatible(Uint7.getInstance()));
+  }
+
+  @Test
+  public void toUriLiteral() throws Exception {
+    assertEquals("127", instance.toUriLiteral("127"));
+  }
+
+  @Test
+  public void fromUriLiteral() throws Exception {
+    assertEquals("127", instance.fromUriLiteral("127"));
+  }
+
+  @Test
+  public void valueToString() throws Exception {
+    assertEquals("0", instance.valueToString(0, null, null, null, null, null));
+    assertEquals("8", instance.valueToString((byte) 8, null, null, null, null, null));
+    assertEquals("16", instance.valueToString((short) 16, null, null, null, null, null));
+    assertEquals("32", instance.valueToString(Integer.valueOf(32), null, null, null, null, null));
+    assertEquals("255", instance.valueToString(255L, null, null, null, null, null));
+    assertEquals("255", instance.valueToString(BigInteger.valueOf(255), null, null, null, null, null));
+
+    expectContentErrorInValueToString(instance, -1);
+    expectContentErrorInValueToString(instance, 256);
+    expectContentErrorInValueToString(instance, BigInteger.valueOf(-1));
+    expectContentErrorInValueToString(instance, BigInteger.valueOf(256));
+
+    expectTypeErrorInValueToString(instance, 'A');
+  }
+
+  @Test
+  public void valueOfString() throws Exception {
+    assertEquals(Short.valueOf((short) 1), instance.valueOfString("1", null, null, null, null, null, Short.class));
+    assertEquals(Integer.valueOf(2), instance.valueOfString("2", null, null, null, null, null, Integer.class));
+    assertEquals(Byte.valueOf((byte) 127), instance.valueOfString("127", null, null, null, null, null, Byte.class));
+    assertEquals(Short.valueOf((short) 255), instance.valueOfString("255", null, null, null, null, null, Short.class));
+    assertEquals(Long.valueOf(0), instance.valueOfString("0", null, null, null, null, null, Long.class));
+    assertEquals(BigInteger.TEN, instance.valueOfString("10", null, null, null, null, null, BigInteger.class));
+
+    expectContentErrorInValueOfString(instance, "0x42");
+    expectContentErrorInValueOfString(instance, "abc");
+    expectContentErrorInValueOfString(instance, "256");
+    expectContentErrorInValueOfString(instance, "-1");
+    expectContentErrorInValueOfString(instance, "1.0");
+
+    expectUnconvertibleErrorInValueOfString(instance, "128", Byte.class);
+
+    expectTypeErrorInValueOfString(instance, "1");
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/82ae6060/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmDateTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmDateTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmDateTest.java
new file mode 100644
index 0000000..db40bed
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmDateTest.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * 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.odata4.commons.core.edm.primitivetype;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.TimeZone;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveType;
+import org.junit.Test;
+
+public class EdmDateTest extends PrimitiveTypeBaseTest {
+
+  private final EdmPrimitiveType instance = EdmPrimitiveTypeKind.Date.getEdmPrimitiveTypeInstance();
+
+  @Test
+  public void toUriLiteral() throws Exception {
+    assertEquals("2009-12-26", instance.toUriLiteral("2009-12-26"));
+    assertEquals("-2009-12-26", instance.toUriLiteral("-2009-12-26"));
+  }
+
+  @Test
+  public void fromUriLiteral() throws Exception {
+    assertEquals("2009-12-26", instance.fromUriLiteral("2009-12-26"));
+    assertEquals("-2009-12-26", instance.fromUriLiteral("-2009-12-26"));
+  }
+
+  @Test
+  public void valueToString() throws Exception {
+    Calendar dateTime = Calendar.getInstance();
+    dateTime.clear();
+    dateTime.setTimeZone(TimeZone.getTimeZone("GMT-11:30"));
+    dateTime.set(2012, 1, 29, 13, 0, 0);
+    assertEquals("2012-02-29", instance.valueToString(dateTime, null, null, null, null, null));
+
+    final Long millis = 1330558323007L;
+    assertEquals("2012-02-29", instance.valueToString(millis, null, null, null, null, null));
+
+    assertEquals("1969-12-31", instance.valueToString(new Date(-43200000), null, null, null, null, null));
+
+    dateTime.set(Calendar.YEAR, 12344);
+    assertEquals("12344-02-29", instance.valueToString(dateTime, null, null, null, null, null));
+
+    expectTypeErrorInValueToString(instance, 0);
+  }
+
+  @Test
+  public void valueOfString() throws Exception {
+    Calendar dateTime = Calendar.getInstance();
+    dateTime.clear();
+    dateTime.setTimeZone(TimeZone.getTimeZone("GMT"));
+    dateTime.set(2012, 1, 29);
+    assertEquals(dateTime, instance.valueOfString("2012-02-29", null, null, null, null, null, Calendar.class));
+    assertEquals(Long.valueOf(dateTime.getTimeInMillis()), instance.valueOfString("2012-02-29", null, null, null, null,
+        null, Long.class));
+    assertEquals(dateTime.getTime(), instance.valueOfString("2012-02-29", null, null, null, null, null, Date.class));
+
+    dateTime.set(Calendar.YEAR, 12344);
+    assertEquals(dateTime, instance.valueOfString("12344-02-29", null, null, null, null, null, Calendar.class));
+
+    // TODO: Clarify whether negative years are really needed.
+    // dateTime.set(-1, 1, 28);
+    // assertEquals(dateTime, instance.valueOfString("-0001-02-28", null, Calendar.class));
+
+    expectContentErrorInValueOfString(instance, "2012-02-29T23:32:02");
+    expectContentErrorInValueOfString(instance, "2012-02-30");
+    expectContentErrorInValueOfString(instance, "20120229");
+    expectContentErrorInValueOfString(instance, "2012-02-1");
+    expectContentErrorInValueOfString(instance, "2012-2-12");
+    expectContentErrorInValueOfString(instance, "123-02-03");
+
+    expectTypeErrorInValueOfString(instance, "2012-02-29");
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/82ae6060/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmDateTimeOffsetTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmDateTimeOffsetTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmDateTimeOffsetTest.java
new file mode 100644
index 0000000..291b212
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmDateTimeOffsetTest.java
@@ -0,0 +1,124 @@
+/*******************************************************************************
+ * 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.odata4.commons.core.edm.primitivetype;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.TimeZone;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveType;
+import org.junit.Test;
+
+public class EdmDateTimeOffsetTest extends PrimitiveTypeBaseTest {
+
+  final EdmPrimitiveType instance = EdmPrimitiveTypeKind.DateTimeOffset.getEdmPrimitiveTypeInstance();
+
+  @Test
+  public void toUriLiteral() throws Exception {
+    assertEquals("2009-12-26T21:23:38Z", instance.toUriLiteral("2009-12-26T21:23:38Z"));
+    assertEquals("2002-10-10T12:00:00-05:00", instance.toUriLiteral("2002-10-10T12:00:00-05:00"));
+  }
+
+  @Test
+  public void fromUriLiteral() throws Exception {
+    assertEquals("2009-12-26T21:23:38Z", instance.fromUriLiteral("2009-12-26T21:23:38Z"));
+    assertEquals("2002-10-10T12:00:00-05:00", instance.fromUriLiteral("2002-10-10T12:00:00-05:00"));
+  }
+
+  @Test
+  public void valueToString() throws Exception {
+    Calendar dateTime = Calendar.getInstance();
+    dateTime.clear();
+    dateTime.setTimeZone(TimeZone.getTimeZone("GMT"));
+    dateTime.set(2012, 1, 29, 1, 2, 3);
+    assertEquals("2012-02-29T01:02:03Z", instance.valueToString(dateTime, null, null, null, null, null));
+    assertEquals("2012-02-29T01:02:03Z", instance.valueToString(dateTime, null, null, 0, null, null));
+    assertEquals("2012-02-29T01:02:03Z", instance.valueToString(dateTime, null, null, 5, null, null));
+
+    dateTime.setTimeZone(TimeZone.getTimeZone("GMT-1:30"));
+    assertEquals("2012-02-29T01:02:03-01:30", instance.valueToString(dateTime, null, null, null, null, null));
+
+    dateTime.setTimeZone(TimeZone.getTimeZone("GMT+11:00"));
+    assertEquals("2012-02-29T01:02:03+11:00", instance.valueToString(dateTime, null, null, null, null, null));
+
+    final Long millis = 1330558323007L;
+    assertEquals("2012-02-29T23:32:03.007Z", instance.valueToString(millis, null, null, 3, null, null));
+    assertEquals("1969-12-31T23:59:59.9Z", instance.valueToString(-100L, null, null, 1, null, null));
+    assertEquals("1969-12-31T23:59:59.98Z", instance.valueToString(-20L, null, null, 2, null, null));
+
+    final Date date = new Date(millis);
+    final String time = date.toString().substring(11, 19);
+    assertTrue(instance.valueToString(date, null, null, 3, null, null).contains(time));
+
+    expectFacetsErrorInValueToString(instance, millis, null, null, null, null, null);
+    expectFacetsErrorInValueToString(instance, 3L, null, null, 2, null, null);
+
+    expectTypeErrorInValueToString(instance, 0);
+  }
+
+  @Test
+  public void valueOfString() throws Exception {
+    Calendar dateTime = Calendar.getInstance();
+    dateTime.clear();
+    dateTime.setTimeZone(TimeZone.getTimeZone("GMT"));
+    dateTime.set(2012, 1, 29, 1, 2, 3);
+    assertEquals(dateTime, instance.valueOfString("2012-02-29T01:02:03Z", null, null, null, null, null,
+        Calendar.class));
+    assertEquals(Long.valueOf(dateTime.getTimeInMillis()), instance.valueOfString("2012-02-29T01:02:03+00:00", null,
+        null, null, null, null, Long.class));
+    assertEquals(dateTime, instance.valueOfString("2012-02-29T01:02:03", null, null, null, null, null,
+        Calendar.class));
+
+    dateTime.clear();
+    dateTime.setTimeZone(TimeZone.getTimeZone("GMT-01:30"));
+    dateTime.set(2012, 1, 29, 1, 2, 3);
+    assertEquals(dateTime.getTime(), instance.valueOfString("2012-02-29T01:02:03-01:30", null, null, null, null, null,
+        Date.class));
+
+    dateTime.clear();
+    dateTime.setTimeZone(TimeZone.getTimeZone("GMT+11:00"));
+    dateTime.set(2012, 1, 29, 1, 2, 3);
+    assertEquals(dateTime, instance.valueOfString("2012-02-29T01:02:03+11:00", null, null, null, null, null,
+        Calendar.class));
+
+    dateTime.add(Calendar.MILLISECOND, 7);
+    assertEquals(dateTime, instance.valueOfString("2012-02-29T01:02:03.007+11:00", null, null, 3, null, null,
+        Calendar.class));
+
+    assertEquals(Long.valueOf(120000L), instance.valueOfString("1970-01-01T00:02", null, null, null, null, null,
+        Long.class));
+    assertEquals(Long.valueOf(12L), instance.valueOfString("1970-01-01T00:00:00.012", null, null, 3, null, null,
+        Long.class));
+    assertEquals(Long.valueOf(120L), instance.valueOfString("1970-01-01T00:00:00.12", null, null, 2, null, null,
+        Long.class));
+
+    expectFacetsErrorInValueOfString(instance, "2012-02-29T23:32:02.9Z", null, null, null, null, null);
+    expectFacetsErrorInValueOfString(instance, "2012-02-29T23:32:02.9Z", null, null, 0, null, null);
+    expectContentErrorInValueOfString(instance, "2012-02-29T23:32:02X");
+    expectContentErrorInValueOfString(instance, "2012-02-29T23:32:02+24:00");
+    expectContentErrorInValueOfString(instance, "2012-02-30T01:02:03");
+    expectContentErrorInValueOfString(instance, "2012-02-29T23:32:02.");
+    expectContentErrorInValueOfString(instance, "2012-02-29T23:32:02.0000000000000");
+
+    expectTypeErrorInValueOfString(instance, "2012-02-29T01:02:03Z");
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/82ae6060/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmDecimalTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmDecimalTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmDecimalTest.java
new file mode 100644
index 0000000..21d80bb
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmDecimalTest.java
@@ -0,0 +1,130 @@
+/*******************************************************************************
+ * 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.odata4.commons.core.edm.primitivetype;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveType;
+import org.junit.Test;
+
+public class EdmDecimalTest extends PrimitiveTypeBaseTest {
+
+  private final EdmPrimitiveType instance = EdmPrimitiveTypeKind.Decimal.getEdmPrimitiveTypeInstance();
+
+  @Test
+  public void compatibility() {
+    assertTrue(instance.isCompatible(Uint7.getInstance()));
+    assertTrue(instance.isCompatible(EdmPrimitiveTypeKind.Byte.getEdmPrimitiveTypeInstance()));
+    assertTrue(instance.isCompatible(EdmPrimitiveTypeKind.SByte.getEdmPrimitiveTypeInstance()));
+    assertTrue(instance.isCompatible(EdmPrimitiveTypeKind.Int16.getEdmPrimitiveTypeInstance()));
+    assertTrue(instance.isCompatible(EdmPrimitiveTypeKind.Int32.getEdmPrimitiveTypeInstance()));
+    assertTrue(instance.isCompatible(EdmPrimitiveTypeKind.Int64.getEdmPrimitiveTypeInstance()));
+    assertTrue(instance.isCompatible(EdmPrimitiveTypeKind.Single.getEdmPrimitiveTypeInstance()));
+    assertTrue(instance.isCompatible(EdmPrimitiveTypeKind.Double.getEdmPrimitiveTypeInstance()));
+  }
+
+  @Test
+  public void uriLiteral() throws Exception {
+    assertEquals("12.34", instance.toUriLiteral("12.34"));
+    assertEquals("12.34", instance.fromUriLiteral("12.34"));
+  }
+
+  @Test
+  public void valueToString() throws Exception {
+    assertEquals("0", instance.valueToString(0, null, null, null, null, null));
+    assertEquals("8", instance.valueToString((byte) 8, null, null, null, null, null));
+    assertEquals("16", instance.valueToString((short) 16, null, null, null, null, null));
+    assertEquals("32", instance.valueToString(Integer.valueOf(32), null, null, null, null, null));
+    assertEquals("-32768", instance.valueToString(-32768, null, null, null, null, null));
+    assertEquals("255", instance.valueToString(255L, null, null, null, null, null));
+    assertEquals("1234567890123456789012345678901", instance.valueToString(new BigInteger(
+        "1234567890123456789012345678901"), null, null, null, null, null));
+    assertEquals("0.00390625", instance.valueToString(1.0 / 256, null, null, null, 8, null));
+    assertEquals("-0.125", instance.valueToString(-0.125f, null, null, null, 3, null));
+    assertEquals("-1234567890.1234567890", instance.valueToString(new BigDecimal(
+        "-1234567890.1234567890"), null, null, null, 10, null));
+
+    assertEquals("-32768", instance.valueToString(-32768, null, null, 42, null, null));
+    assertEquals("-32768", instance.valueToString(-32768, null, null, 5, null, null));
+    assertEquals("32768", instance.valueToString(32768, null, null, 5, null, null));
+    assertEquals("0.5", instance.valueToString(0.5, null, null, 1, 1, null));
+    assertEquals("0.5", instance.valueToString(0.5, null, null, null, 1, null));
+    assertEquals("100", instance.valueToString(new BigDecimal(BigInteger.ONE, -2), null, null, 3, null, null));
+
+    expectFacetsErrorInValueToString(instance, 0.5, null, null, null, null, null);
+    expectFacetsErrorInValueToString(instance, -1234, null, null, 2, null, null);
+    expectFacetsErrorInValueToString(instance, 1234, null, null, 3, null, null);
+    expectFacetsErrorInValueToString(instance, 0.00390625, null, null, 5, null, null);
+    expectFacetsErrorInValueToString(instance, 0.00390625, null, null, null, 7, null);
+
+    expectContentErrorInValueToString(instance, Double.NaN);
+
+    expectTypeErrorInValueToString(instance, 'A');
+  }
+
+  @Test
+  public void valueOfString() throws Exception {
+    assertEquals(BigDecimal.ONE, instance.valueOfString("1", null, null, null, null, null, BigDecimal.class));
+    assertEquals(Byte.valueOf((byte) -2), instance.valueOfString("-2", null, null, null, null, null, Byte.class));
+    assertEquals(new BigDecimal("-123456789012345678901234567890"), instance.valueOfString(
+        "-123456789012345678901234567890", null, null, null, null, null, BigDecimal.class));
+    assertEquals(Short.valueOf((short) 0), instance.valueOfString("0", null, null, null, null, null, Short.class));
+
+    assertEquals(Integer.valueOf(-32768), instance.valueOfString("-32768", null, null, 42, null, null, Integer.class));
+    assertEquals(Long.valueOf(-32768), instance.valueOfString("-32768", null, null, 5, null, null, Long.class));
+    assertEquals(BigInteger.valueOf(32768), instance.valueOfString("32768", null, null, 5, null, null,
+        BigInteger.class));
+    assertEquals(Double.valueOf(0.5), instance.valueOfString("0.5", null, null, 1, 1, null, Double.class));
+    assertEquals(Float.valueOf(0.5F), instance.valueOfString("0.5", null, null, null, 1, null, Float.class));
+    assertEquals(new BigDecimal("12.3"), instance.valueOfString("12.3", null, null, 3, 1, null, BigDecimal.class));
+
+    expectFacetsErrorInValueOfString(instance, "0.5", null, null, null, null, null);
+    expectFacetsErrorInValueOfString(instance, "-1234", null, null, 2, null, null);
+    expectFacetsErrorInValueOfString(instance, "1234", null, null, 3, null, null);
+    expectFacetsErrorInValueOfString(instance, "12.34", null, null, 3, null, null);
+    expectFacetsErrorInValueOfString(instance, "12.34", null, null, 3, 2, null);
+    expectFacetsErrorInValueOfString(instance, "12.34", null, null, 4, 1, null);
+    expectFacetsErrorInValueOfString(instance, "0.00390625", null, null, 5, null, null);
+    expectFacetsErrorInValueOfString(instance, "0.00390625", null, null, null, 7, null);
+
+    expectContentErrorInValueOfString(instance, "-1E2");
+    expectContentErrorInValueOfString(instance, "1.");
+    expectContentErrorInValueOfString(instance, ".1");
+    expectContentErrorInValueOfString(instance, "1.0.1");
+    expectContentErrorInValueOfString(instance, "1M");
+    expectContentErrorInValueOfString(instance, "0x42");
+
+    expectUnconvertibleErrorInValueOfString(instance, "-129", Byte.class);
+    expectUnconvertibleErrorInValueOfString(instance, "128", Byte.class);
+    expectUnconvertibleErrorInValueOfString(instance, "-32769", Short.class);
+    expectUnconvertibleErrorInValueOfString(instance, "32768", Short.class);
+    expectUnconvertibleErrorInValueOfString(instance, "-2147483649", Integer.class);
+    expectUnconvertibleErrorInValueOfString(instance, "2147483648", Integer.class);
+    expectUnconvertibleErrorInValueOfString(instance, "-9223372036854775809", Long.class);
+    expectUnconvertibleErrorInValueOfString(instance, "9223372036854775808", Long.class);
+    expectUnconvertibleErrorInValueOfString(instance, "12345678901234567", Double.class);
+    expectUnconvertibleErrorInValueOfString(instance, "1234567890", Float.class);
+
+    expectTypeErrorInValueOfString(instance, "1");
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/82ae6060/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmDoubleTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmDoubleTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmDoubleTest.java
new file mode 100644
index 0000000..54d1333
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmDoubleTest.java
@@ -0,0 +1,130 @@
+/*******************************************************************************
+ * 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.odata4.commons.core.edm.primitivetype;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveType;
+import org.junit.Test;
+
+public class EdmDoubleTest extends PrimitiveTypeBaseTest {
+
+  private final EdmPrimitiveType instance = EdmPrimitiveTypeKind.Double.getEdmPrimitiveTypeInstance();
+
+  @Test
+  public void compatibility() {
+    assertTrue(instance.isCompatible(Uint7.getInstance()));
+    assertTrue(instance.isCompatible(EdmPrimitiveTypeKind.Byte.getEdmPrimitiveTypeInstance()));
+    assertTrue(instance.isCompatible(EdmPrimitiveTypeKind.SByte.getEdmPrimitiveTypeInstance()));
+    assertTrue(instance.isCompatible(EdmPrimitiveTypeKind.Int16.getEdmPrimitiveTypeInstance()));
+    assertTrue(instance.isCompatible(EdmPrimitiveTypeKind.Int32.getEdmPrimitiveTypeInstance()));
+    assertTrue(instance.isCompatible(EdmPrimitiveTypeKind.Int64.getEdmPrimitiveTypeInstance()));
+    assertTrue(instance.isCompatible(EdmPrimitiveTypeKind.Single.getEdmPrimitiveTypeInstance()));
+  }
+
+  @Test
+  public void toUriLiteral() {
+    assertEquals("127E42", instance.toUriLiteral("127E42"));
+  }
+
+  @Test
+  public void fromUriLiteral() throws Exception {
+    assertEquals("127E42", instance.fromUriLiteral("127E42"));
+  }
+
+  @Test
+  public void valueToString() throws Exception {
+    assertEquals("0", instance.valueToString(0, null, null, null, null, null));
+    assertEquals("8", instance.valueToString((byte) 8, null, null, null, null, null));
+    assertEquals("16", instance.valueToString((short) 16, null, null, null, null, null));
+    assertEquals("32", instance.valueToString(Integer.valueOf(32), null, null, null, null, null));
+    assertEquals("255", instance.valueToString(255L, null, null, null, null, null));
+    assertEquals("0.00390625", instance.valueToString(1.0 / 256, null, null, null, null, null));
+    assertEquals("4.2E-41", instance.valueToString(42e-42, null, null, null, null, null));
+    assertEquals("INF", instance.valueToString(Double.POSITIVE_INFINITY, null, null, null, null, null));
+    assertEquals("-INF", instance.valueToString(Double.NEGATIVE_INFINITY, null, null, null, null, null));
+    assertEquals("NaN", instance.valueToString(Double.NaN, null, null, null, null, null));
+    assertEquals("-0.125", instance.valueToString(-0.125f, null, null, null, null, null));
+    assertEquals("INF", instance.valueToString(Float.POSITIVE_INFINITY, null, null, null, null, null));
+    assertEquals("-INF", instance.valueToString(Float.NEGATIVE_INFINITY, null, null, null, null, null));
+    assertEquals("NaN", instance.valueToString(Float.NaN, null, null, null, null, null));
+    assertEquals("-1234567890.12345", instance.valueToString(new BigDecimal("-1234567890.12345"), null, null, null,
+        null, null));
+
+    expectContentErrorInValueToString(instance, 3234567890123456L);
+    expectContentErrorInValueToString(instance, new BigDecimal("98765432109876543"));
+    expectContentErrorInValueToString(instance, new BigDecimal(BigInteger.ONE, 324));
+    expectContentErrorInValueToString(instance, new BigDecimal(BigInteger.ONE.negate(), -309));
+
+    expectTypeErrorInValueToString(instance, 'A');
+  }
+
+  @Test
+  public void valueOfString() throws Exception {
+    assertEquals(Double.valueOf(1.42), instance.valueOfString("1.42", null, null, null, null, null, Double.class));
+    assertEquals(Float.valueOf(-42.25F), instance.valueOfString("-42.25", null, null, null, null, null, Float.class));
+    assertEquals(Double.valueOf(42.0), instance.valueOfString("42", null, null, null, null, null, Double.class));
+    assertEquals(Double.valueOf(42E42), instance.valueOfString("42E42", null, null, null, null, null, Double.class));
+    assertEquals(BigDecimal.TEN, instance.valueOfString("10", null, null, null, null, null, BigDecimal.class));
+    assertEquals(Byte.valueOf((byte) 0), instance.valueOfString("0", null, null, null, null, null, Byte.class));
+    assertEquals(Short.valueOf((short) 1), instance.valueOfString("1.00", null, null, null, null, null, Short.class));
+    assertEquals(Integer.valueOf(42), instance.valueOfString("4.2E1", null, null, null, null, null, Integer.class));
+    assertEquals(Long.valueOf(1234567890), instance.valueOfString("1234567890E-00", null, null, null, null, null,
+        Long.class));
+
+    assertEquals(Double.valueOf(Double.NaN), instance.valueOfString("NaN", null, null, null, null, null,
+        Double.class));
+    assertEquals(Double.valueOf(Double.NEGATIVE_INFINITY), instance.valueOfString("-INF", null, null, null, null,
+        null, Double.class));
+    assertEquals(Float.valueOf(Float.POSITIVE_INFINITY), instance.valueOfString("INF", null, null, null, null, null,
+        Float.class));
+
+    expectContentErrorInValueOfString(instance, "0.");
+    expectContentErrorInValueOfString(instance, ".0");
+    expectContentErrorInValueOfString(instance, "1234567890.12345678");
+    expectContentErrorInValueOfString(instance, "42E400");
+    expectContentErrorInValueOfString(instance, "42.42.42");
+    expectContentErrorInValueOfString(instance, "42F");
+    expectContentErrorInValueOfString(instance, "0x42P42");
+
+    expectUnconvertibleErrorInValueOfString(instance, "INF", BigDecimal.class);
+    expectUnconvertibleErrorInValueOfString(instance, "NaN", BigDecimal.class);
+    expectUnconvertibleErrorInValueOfString(instance, "1234567.0625", Float.class);
+    expectUnconvertibleErrorInValueOfString(instance, "-INF", Integer.class);
+    expectUnconvertibleErrorInValueOfString(instance, "NaN", Integer.class);
+    expectUnconvertibleErrorInValueOfString(instance, "5E-1", Byte.class);
+    expectUnconvertibleErrorInValueOfString(instance, "5E-1", Short.class);
+    expectUnconvertibleErrorInValueOfString(instance, "5E-1", Integer.class);
+    expectUnconvertibleErrorInValueOfString(instance, "5E-1", Long.class);
+    expectUnconvertibleErrorInValueOfString(instance, "-129", Byte.class);
+    expectUnconvertibleErrorInValueOfString(instance, "128", Byte.class);
+    expectUnconvertibleErrorInValueOfString(instance, "-32769", Short.class);
+    expectUnconvertibleErrorInValueOfString(instance, "32768", Short.class);
+    expectUnconvertibleErrorInValueOfString(instance, "-2147483649", Integer.class);
+    expectUnconvertibleErrorInValueOfString(instance, "2147483648", Integer.class);
+    expectUnconvertibleErrorInValueOfString(instance, "-922337203685477.5E10", Long.class);
+    expectUnconvertibleErrorInValueOfString(instance, "922337203685477.5E10", Long.class);
+
+    expectTypeErrorInValueOfString(instance, "1.42");
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/82ae6060/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmDurationTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmDurationTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmDurationTest.java
new file mode 100644
index 0000000..3393044
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmDurationTest.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * 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.odata4.commons.core.edm.primitivetype;
+
+import static org.junit.Assert.assertEquals;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveType;
+import org.junit.Test;
+
+public class EdmDurationTest extends PrimitiveTypeBaseTest {
+
+  private final EdmPrimitiveType instance = EdmPrimitiveTypeKind.Duration.getEdmPrimitiveTypeInstance();
+
+  @Test
+  public void toUriLiteral() throws Exception {
+    assertEquals("duration'P120D'", instance.toUriLiteral("P120D"));
+  }
+
+  @Test
+  public void fromUriLiteral() throws Exception {
+    assertEquals("P120D", instance.fromUriLiteral("duration'P120D'"));
+
+    expectErrorInFromUriLiteral(instance, "");
+    expectErrorInFromUriLiteral(instance, "Duration'PT1S'");
+    expectErrorInFromUriLiteral(instance, "duration'PT1S\"");
+  }
+
+  @Test
+  public void valueToString() throws Exception {
+    assertEquals("PT10S", instance.valueToString(BigDecimal.TEN, null, null, null, null, null));
+    assertEquals("-PT10S", instance.valueToString(BigDecimal.TEN.negate(), null, null, null, null, null));
+    assertEquals("PT10S", instance.valueToString(BigDecimal.TEN, null, null, null, null, null));
+    assertEquals("PT10S", instance.valueToString(BigDecimal.TEN, null, null, 0, null, null));
+    assertEquals("-PT0.01S", instance.valueToString(BigDecimal.ONE.movePointLeft(2).negate(), null, null, 2, null,
+        null));
+    assertEquals("PT2M3S", instance.valueToString(123, null, null, null, null, null));
+    assertEquals("PT2M3S", instance.valueToString((byte) 123, null, null, null, null, null));
+    assertEquals("PT3H25M45S", instance.valueToString((short) 12345, null, null, null, null, null));
+    assertEquals("P14288DT23H31M30S", instance.valueToString(1234567890L, null, null, null, null, null));
+    assertEquals("P50903316DT2H25M4S", instance.valueToString(BigInteger.ONE.shiftLeft(42), null, null, null, null,
+        null));
+
+    expectFacetsErrorInValueToString(instance, BigDecimal.ONE.movePointLeft(1), null, null, null, null, null);
+    expectFacetsErrorInValueToString(instance, BigDecimal.ONE.movePointLeft(1), null, null, 0, null, null);
+
+    expectTypeErrorInValueToString(instance, "");
+  }
+
+  @Test
+  public void valueOfString() throws Exception {
+    assertEquals(BigDecimal.TEN, instance.valueOfString("PT10S", null, null, null, null, null, BigDecimal.class));
+    assertEquals(BigDecimal.TEN.negate(), instance.valueOfString("-PT10S", null, null, null, null, null,
+        BigDecimal.class));
+    assertEquals(BigDecimal.TEN, instance.valueOfString("PT10S", null, null, null, null, null, BigDecimal.class));
+    assertEquals(BigDecimal.ONE.movePointLeft(1), instance.valueOfString("PT0.1S", null, null, 1, null, null,
+        BigDecimal.class));
+    assertEquals(Byte.valueOf((byte) 123), instance.valueOfString("PT2M3S", null, null, null, null, null, Byte.class));
+    assertEquals(Short.valueOf((short) 123), instance.valueOfString("PT2M3S", null, null, null, null, null,
+        Short.class));
+    assertEquals(Integer.valueOf(12345), instance.valueOfString("PT3H25M45S", null, null, null, null, null,
+        Integer.class));
+    assertEquals(Long.valueOf(1234567890L), instance.valueOfString("P14288DT23H31M30S", null, null, null, null, null,
+        Long.class));
+    assertEquals(BigInteger.ONE.shiftLeft(42), instance.valueOfString("P50903316DT2H25M4S", null, null, null, null,
+        null, BigInteger.class));
+
+    expectFacetsErrorInValueOfString(instance, "PT1.1S", null, null, null, null, null);
+    expectFacetsErrorInValueOfString(instance, "PT1H2M3.123S", null, null, 2, null, null);
+    expectFacetsErrorInValueOfString(instance, "PT13H2M3.9S", null, null, 0, null, null);
+
+    expectContentErrorInValueOfString(instance, "PT1H2M3S.1234");
+    expectContentErrorInValueOfString(instance, "P2012Y2M29DT23H32M2S");
+    expectContentErrorInValueOfString(instance, "PT-1H");
+    expectContentErrorInValueOfString(instance, "PT");
+
+    expectUnconvertibleErrorInValueOfString(instance, "-PT2M9S", Byte.class);
+    expectUnconvertibleErrorInValueOfString(instance, "PT2M8S", Byte.class);
+    expectUnconvertibleErrorInValueOfString(instance, "PT10H", Short.class);
+    expectUnconvertibleErrorInValueOfString(instance, "P25000D", Integer.class);
+    expectUnconvertibleErrorInValueOfString(instance, "P123456789012345D", Long.class);
+    // expectUnconvertibleErrorInValueOfString(instance, "PT1.1S", BigInteger.class);
+
+    expectTypeErrorInValueOfString(instance, "PT0S");
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/82ae6060/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmEnumTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmEnumTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmEnumTest.java
new file mode 100644
index 0000000..883e7d7
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmEnumTest.java
@@ -0,0 +1,162 @@
+/*******************************************************************************
+ * 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.odata4.commons.core.edm.primitivetype;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.Arrays;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmEnumType;
+import org.apache.olingo.odata4.commons.api.edm.EdmMember;
+import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
+import org.junit.Test;
+
+public class EdmEnumTest extends PrimitiveTypeBaseTest {
+
+  private final EdmEnumType instance;
+
+  public EdmEnumTest() {
+    EdmMember member1 = mock(EdmMember.class);
+    when(member1.getName()).thenReturn("first");
+    when(member1.getValue()).thenReturn("1");
+    EdmMember member2 = mock(EdmMember.class);
+    when(member2.getName()).thenReturn("second");
+    when(member2.getValue()).thenReturn("64");
+    instance = new EdmEnum("namespace", "name",
+        EdmPrimitiveTypeKind.SByte.getEdmPrimitiveTypeInstance(),
+        Arrays.asList(member1, member2),
+        true);
+  }
+
+  @Test
+  public void nameSpace() throws Exception {
+    assertEquals("namespace", instance.getNamespace());
+  }
+
+  @Test
+  public void name() throws Exception {
+    assertEquals("name", instance.getName());
+  }
+
+  @Test
+  public void kind() throws Exception {
+    assertEquals(EdmTypeKind.ENUM, instance.getKind());
+  }
+
+  @Test
+  public void compatibility() {
+    assertTrue(instance.isCompatible(instance));
+    assertFalse(instance.isCompatible(instance.getUnderlyingType()));
+  }
+
+  @Test
+  public void defaultType() throws Exception {
+    assertEquals(Byte.class, instance.getDefaultType());
+  }
+
+  @Test
+  public void members() throws Exception {
+    assertArrayEquals(new String[] { "first", "second" }, instance.getMemberNames().toArray());
+    assertEquals("64", instance.getMember("second").getValue());
+    assertNull(instance.getMember("notExisting"));
+  }
+
+  @Test
+  public void underlyingType() throws Exception {
+    assertEquals(EdmPrimitiveTypeKind.SByte.getEdmPrimitiveTypeInstance(), instance.getUnderlyingType());
+  }
+
+  @Test
+  public void validate() throws Exception {
+    assertTrue(instance.validate(null, null, null, null, null, null));
+    assertTrue(instance.validate(null, true, null, null, null, null));
+    assertFalse(instance.validate(null, false, null, null, null, null));
+    assertFalse(instance.validate("", null, null, null, null, null));
+    assertFalse(instance.validate("something", null, null, null, null, null));
+
+    assertTrue(instance.validate("second", null, null, null, null, null));
+    assertTrue(instance.validate("first,second", null, null, null, null, null));
+    assertTrue(instance.validate("64", null, null, null, null, null));
+    assertTrue(instance.validate("1,64", null, null, null, null, null));
+  }
+
+  @Test
+  public void toUriLiteral() throws Exception {
+    assertNull(instance.toUriLiteral(null));
+    assertEquals("namespace.name'first'", instance.toUriLiteral("first"));
+  }
+
+  @Test
+  public void fromUriLiteral() throws Exception {
+    assertNull(instance.fromUriLiteral(null));
+    assertEquals("first", instance.fromUriLiteral("namespace.name'first'"));
+
+    expectErrorInFromUriLiteral(instance, "");
+    expectErrorInFromUriLiteral(instance, "name'first'");
+    expectErrorInFromUriLiteral(instance, "namespace.name'first");
+    expectErrorInFromUriLiteral(instance, "namespace.namespace'first");
+  }
+
+  @Test
+  public void valueToString() throws Exception {
+    assertNull(instance.valueToString(null, null, null, null, null, null));
+    assertNull(instance.valueToString(null, true, null, null, null, null));
+    assertEquals("first", instance.valueToString(1, null, null, null, null, null));
+    assertEquals("first", instance.valueToString((byte) 1, null, null, null, null, null));
+    assertEquals("first", instance.valueToString((short) 1, null, null, null, null, null));
+    assertEquals("second", instance.valueToString(Integer.valueOf(64), null, null, null, null, null));
+    assertEquals("second", instance.valueToString(64L, null, null, null, null, null));
+    assertEquals("first,second", instance.valueToString(65, null, null, null, null, null));
+
+    expectNullErrorInValueToString(instance);
+    expectContentErrorInValueToString(instance, 3);
+    expectTypeErrorInValueToString(instance, 1.0);
+  }
+
+  @Test
+  public void valueOfString() throws Exception {
+    assertNull(instance.valueOfString(null, null, null, null, null, null, Byte.class));
+    assertNull(instance.valueOfString(null, true, null, null, null, null, Byte.class));
+    assertEquals(Short.valueOf((short) 1), instance.valueOfString("1", null, null, null, null, null, Short.class));
+    assertEquals(Integer.valueOf(1), instance.valueOfString("1", null, null, null, null, null, Integer.class));
+    assertEquals(Long.valueOf(64L), instance.valueOfString("64", null, null, null, null, null, Long.class));
+    assertEquals(Long.valueOf(1), instance.valueOfString("first", null, null, null, null, null, Long.class));
+    assertEquals(Byte.valueOf((byte) 65), instance.valueOfString("first,64", null, null, null, null, null, Byte.class));
+    assertEquals(Integer.valueOf(1), instance.valueOfString("1,1,first", null, null, null, null, null, Integer.class));
+
+    final EdmEnumType nonFlagsInstance = new EdmEnum("namespace", "name",
+        instance.getUnderlyingType(),
+        Arrays.asList(instance.getMember("first"), instance.getMember("second")),
+        false);
+    assertEquals(Integer.valueOf(1), nonFlagsInstance.valueOfString("1", null, null, null, null, null, Integer.class));
+    expectContentErrorInValueOfString(nonFlagsInstance, "1,64");
+
+    expectNullErrorInValueOfString(instance);
+    expectContentErrorInValueOfString(instance, "2");
+    expectContentErrorInValueOfString(instance, "1,");
+    expectContentErrorInValueOfString(instance, ",1");
+    expectTypeErrorInValueOfString(instance, "1");
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/82ae6060/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmGuidTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmGuidTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmGuidTest.java
new file mode 100644
index 0000000..6fb7561
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmGuidTest.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * 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.odata4.commons.core.edm.primitivetype;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.UUID;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveType;
+import org.junit.Test;
+
+public class EdmGuidTest extends PrimitiveTypeBaseTest {
+
+  private final EdmPrimitiveType instance = EdmPrimitiveTypeKind.Guid.getEdmPrimitiveTypeInstance();
+
+  @Test
+  public void toUriLiteral() {
+    assertEquals("aabbccdd-aabb-ccdd-eeff-aabbccddeeff",
+        instance.toUriLiteral("aabbccdd-aabb-ccdd-eeff-aabbccddeeff"));
+  }
+
+  @Test
+  public void fromUriLiteral() throws Exception {
+    assertEquals("aabbccdd-aabb-ccdd-eeff-aabbccddeeff",
+        instance.fromUriLiteral("aabbccdd-aabb-ccdd-eeff-aabbccddeeff"));
+  }
+
+  @Test
+  public void valueToString() throws Exception {
+    final UUID uuid = UUID.randomUUID();
+    assertEquals(uuid.toString(), instance.valueToString(uuid, null, null, null, null, null));
+
+    expectTypeErrorInValueToString(instance, 'A');
+  }
+
+  @Test
+  public void valueOfString() throws Exception {
+    final UUID uuid = UUID.fromString("aabbccdd-aabb-ccdd-eeff-aabbccddeeff");
+
+    assertEquals(uuid, instance.valueOfString("aabbccdd-aabb-ccdd-eeff-aabbccddeeff", null, null, null, null, null,
+        UUID.class));
+    assertEquals(uuid, instance.valueOfString("AABBCCDD-AABB-CCDD-EEFF-AABBCCDDEEFF", null, null, null, null, null,
+        UUID.class));
+    assertEquals(uuid, instance.valueOfString("AABBCCDD-aabb-ccdd-eeff-AABBCCDDEEFF", null, null, null, null, null,
+        UUID.class));
+
+    expectContentErrorInValueOfString(instance, "AABBCCDDAABBCCDDEEFFAABBCCDDEEFF");
+
+    expectTypeErrorInValueOfString(instance, uuid.toString());
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/82ae6060/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmInt16Test.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmInt16Test.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmInt16Test.java
new file mode 100644
index 0000000..f9ec7d6
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmInt16Test.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * 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.odata4.commons.core.edm.primitivetype;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.math.BigInteger;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveType;
+import org.junit.Test;
+
+public class EdmInt16Test extends PrimitiveTypeBaseTest {
+
+  final EdmPrimitiveType instance = EdmPrimitiveTypeKind.Int16.getEdmPrimitiveTypeInstance();
+
+  @Test
+  public void testInt16Compatibility() {
+    assertTrue(instance.isCompatible(Uint7.getInstance()));
+    assertTrue(instance.isCompatible(EdmPrimitiveTypeKind.Byte.getEdmPrimitiveTypeInstance()));
+    assertTrue(instance.isCompatible(EdmPrimitiveTypeKind.SByte.getEdmPrimitiveTypeInstance()));
+  }
+
+  @Test
+  public void toUriLiteral() throws Exception {
+    assertEquals("127", instance.toUriLiteral("127"));
+  }
+
+  @Test
+  public void fromUriLiteral() throws Exception {
+    assertEquals("127", instance.fromUriLiteral("127"));
+  }
+
+  @Test
+  public void valueToString() throws Exception {
+    assertEquals("0", instance.valueToString(0, null, null, null, null, null));
+    assertEquals("8", instance.valueToString((byte) 8, null, null, null, null, null));
+    assertEquals("16", instance.valueToString((short) 16, null, null, null, null, null));
+    assertEquals("32", instance.valueToString(Integer.valueOf(32), null, null, null, null, null));
+    assertEquals("255", instance.valueToString(255L, null, null, null, null, null));
+    assertEquals("-32768", instance.valueToString(BigInteger.valueOf(Short.MIN_VALUE), null, null, null, null, null));
+
+    expectContentErrorInValueToString(instance, 123456);
+    expectContentErrorInValueToString(instance, -32769);
+    expectContentErrorInValueToString(instance, BigInteger.valueOf(32768));
+
+    expectTypeErrorInValueToString(instance, 1.0);
+  }
+
+  @Test
+  public void valueOfString() throws Exception {
+    assertEquals(Byte.valueOf((byte) 1), instance.valueOfString("1", null, null, null, null, null, Byte.class));
+    assertEquals(Short.valueOf((short) 2), instance.valueOfString("2", null, null, null, null, null, Short.class));
+    assertEquals(Short.valueOf((short) -32768), instance.valueOfString("-32768", null, null, null, null, null,
+        Short.class));
+    assertEquals(Short.valueOf((short) 32767), instance.valueOfString("32767", null, null, null, null, null,
+        Short.class));
+    assertEquals(Integer.valueOf(0), instance.valueOfString("0", null, null, null, null, null, Integer.class));
+    assertEquals(Long.valueOf(-1), instance.valueOfString("-1", null, null, null, null, null, Long.class));
+    assertEquals(BigInteger.TEN, instance.valueOfString("10", null, null, null, null, null, BigInteger.class));
+
+    expectContentErrorInValueOfString(instance, "32768");
+    expectContentErrorInValueOfString(instance, "1.0");
+
+    expectUnconvertibleErrorInValueOfString(instance, "-129", Byte.class);
+    expectUnconvertibleErrorInValueOfString(instance, "128", Byte.class);
+
+    expectTypeErrorInValueOfString(instance, "1");
+  }
+}