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 2014/01/28 15:47:51 UTC

git commit: [OLINGO-62] more tests

Updated Branches:
  refs/heads/master 8577d29d7 -> ab6dff292


[OLINGO-62] more tests


Project: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/commit/ab6dff29
Tree: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/tree/ab6dff29
Diff: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/diff/ab6dff29

Branch: refs/heads/master
Commit: ab6dff2926e2c9a206782207fd47802b6d884fc2
Parents: 8577d29
Author: Christian Amend <ch...@apache.org>
Authored: Tue Jan 28 15:46:25 2014 +0100
Committer: Christian Amend <ch...@apache.org>
Committed: Tue Jan 28 15:46:25 2014 +0100

----------------------------------------------------------------------
 .../core/edm/provider/EdmEntitySetInfoImpl.java |   3 +-
 .../edm/provider/EdmFunctionImportInfoImpl.java |   3 +-
 .../edm/provider/EdmServiceMetadataImpl.java    |  52 ++++-
 .../core/edm/provider/EdmSingletonInfoImpl.java |   3 +-
 .../edm/provider/EdmEntitySetInfoImplTest.java  |  51 +++++
 .../provider/EdmFunctionImportInfoImplTest.java |  50 +++++
 .../core/edm/provider/EdmMemberImplTest.java    |  38 ++++
 .../edm/provider/EdmReturnTypeImplTest.java     | 103 +++++++++-
 .../provider/EdmServiceMetadataImplTest.java    | 188 +++++++++++++++++++
 .../edm/provider/EdmSingletonInfoImplTest.java  |  51 +++++
 10 files changed, 527 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/ab6dff29/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntitySetInfoImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntitySetInfoImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntitySetInfoImpl.java
index 9fee4cd..c85a253 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntitySetInfoImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntitySetInfoImpl.java
@@ -21,6 +21,7 @@ package org.apache.olingo.odata4.commons.core.edm.provider;
 import java.net.URI;
 
 import org.apache.olingo.odata4.commons.api.edm.EdmEntitySetInfo;
+import org.apache.olingo.odata4.commons.api.edm.EdmException;
 import org.apache.olingo.odata4.commons.api.edm.provider.EntityContainer;
 import org.apache.olingo.odata4.commons.api.edm.provider.EntitySet;
 
@@ -46,7 +47,7 @@ public class EdmEntitySetInfoImpl implements EdmEntitySetInfo {
 
   @Override
   public URI getEntitySetUri() {
-    return null;
+    throw new EdmException("Not yet implemented");
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/ab6dff29/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmFunctionImportInfoImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmFunctionImportInfoImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmFunctionImportInfoImpl.java
index e782956..9655b09 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmFunctionImportInfoImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmFunctionImportInfoImpl.java
@@ -20,6 +20,7 @@ package org.apache.olingo.odata4.commons.core.edm.provider;
 
 import java.net.URI;
 
+import org.apache.olingo.odata4.commons.api.edm.EdmException;
 import org.apache.olingo.odata4.commons.api.edm.EdmFunctionImportInfo;
 import org.apache.olingo.odata4.commons.api.edm.provider.EntityContainer;
 import org.apache.olingo.odata4.commons.api.edm.provider.FunctionImport;
@@ -46,7 +47,7 @@ public class EdmFunctionImportInfoImpl implements EdmFunctionImportInfo {
 
   @Override
   public URI getFunctionImportUri() {
-    return null;
+    throw new EdmException("Not yet implemented");
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/ab6dff29/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmServiceMetadataImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmServiceMetadataImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmServiceMetadataImpl.java
index 01aed04..cbf42ff 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmServiceMetadataImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmServiceMetadataImpl.java
@@ -42,6 +42,7 @@ public class EdmServiceMetadataImpl implements EdmServiceMetadata {
   private ArrayList<EdmEntitySetInfo> entitySetInfos;
   private ArrayList<EdmFunctionImportInfo> functionImportInfos;
   private ArrayList<EdmSingletonInfo> singletonInfos;
+  private List<Schema> schemas;
 
   public EdmServiceMetadataImpl(final EdmProvider provider) {
     this.provider = provider;
@@ -62,10 +63,21 @@ public class EdmServiceMetadataImpl implements EdmServiceMetadata {
     if (entitySetInfos == null) {
       try {
         entitySetInfos = new ArrayList<EdmEntitySetInfo>();
-        for (Schema schema : provider.getSchemas()) {
+        if (schemas == null) {
+          schemas = provider.getSchemas();
+          if (schemas == null) {
+            throw new EdmException("Provider doe not define any schemas.");
+          }
+        }
+        for (Schema schema : schemas) {
           EntityContainer entityContainer = schema.getEntityContainer();
-          for (EntitySet set : entityContainer.getEntitySets()) {
-            entitySetInfos.add(new EdmEntitySetInfoImpl(entityContainer, set));
+          if (entityContainer != null) {
+            List<EntitySet> entitySets = entityContainer.getEntitySets();
+            if (entitySets != null) {
+              for (EntitySet set : entitySets) {
+                entitySetInfos.add(new EdmEntitySetInfoImpl(entityContainer, set));
+              }
+            }
           }
         }
       } catch (ODataException e) {
@@ -80,10 +92,21 @@ public class EdmServiceMetadataImpl implements EdmServiceMetadata {
     if (singletonInfos == null) {
       try {
         singletonInfos = new ArrayList<EdmSingletonInfo>();
-        for (Schema schema : provider.getSchemas()) {
+        if (schemas == null) {
+          schemas = provider.getSchemas();
+          if (schemas == null) {
+            throw new EdmException("Provider doe not define any schemas.");
+          }
+        }
+        for (Schema schema : schemas) {
           EntityContainer entityContainer = schema.getEntityContainer();
-          for (Singleton singleton : entityContainer.getSingletons()) {
-            singletonInfos.add(new EdmSingletonInfoImpl(entityContainer, singleton));
+          if (entityContainer != null) {
+            List<Singleton> singletons = entityContainer.getSingletons();
+            if (singletons != null) {
+              for (Singleton singleton : singletons) {
+                singletonInfos.add(new EdmSingletonInfoImpl(entityContainer, singleton));
+              }
+            }
           }
         }
       } catch (ODataException e) {
@@ -98,10 +121,21 @@ public class EdmServiceMetadataImpl implements EdmServiceMetadata {
     if (functionImportInfos == null) {
       try {
         functionImportInfos = new ArrayList<EdmFunctionImportInfo>();
-        for (Schema schema : provider.getSchemas()) {
+        if (schemas == null) {
+          schemas = provider.getSchemas();
+          if (schemas == null) {
+            throw new EdmException("Provider doe not define any schemas.");
+          }
+        }
+        for (Schema schema : schemas) {
           EntityContainer entityContainer = schema.getEntityContainer();
-          for (FunctionImport functionImport : entityContainer.getFunctionImports()) {
-            functionImportInfos.add(new EdmFunctionImportInfoImpl(entityContainer, functionImport));
+          if (entityContainer != null) {
+            List<FunctionImport> functionImports = entityContainer.getFunctionImports();
+            if (functionImports != null) {
+              for (FunctionImport functionImport : functionImports) {
+                functionImportInfos.add(new EdmFunctionImportInfoImpl(entityContainer, functionImport));
+              }
+            }
           }
         }
       } catch (ODataException e) {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/ab6dff29/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmSingletonInfoImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmSingletonInfoImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmSingletonInfoImpl.java
index b96dbbe..512ddaf 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmSingletonInfoImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmSingletonInfoImpl.java
@@ -20,6 +20,7 @@ package org.apache.olingo.odata4.commons.core.edm.provider;
 
 import java.net.URI;
 
+import org.apache.olingo.odata4.commons.api.edm.EdmException;
 import org.apache.olingo.odata4.commons.api.edm.EdmSingletonInfo;
 import org.apache.olingo.odata4.commons.api.edm.provider.EntityContainer;
 import org.apache.olingo.odata4.commons.api.edm.provider.Singleton;
@@ -46,7 +47,7 @@ public class EdmSingletonInfoImpl implements EdmSingletonInfo {
 
   @Override
   public URI getEntitySetUri() {
-    return null;
+    throw new EdmException("Not yet implemented");
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/ab6dff29/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntitySetInfoImplTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntitySetInfoImplTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntitySetInfoImplTest.java
new file mode 100644
index 0000000..a8d3be3
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntitySetInfoImplTest.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * 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.provider;
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmEntitySetInfo;
+import org.apache.olingo.odata4.commons.api.edm.EdmException;
+import org.apache.olingo.odata4.commons.api.edm.provider.EntityContainer;
+import org.apache.olingo.odata4.commons.api.edm.provider.EntitySet;
+import org.junit.Test;
+
+public class EdmEntitySetInfoImplTest {
+
+  @Test
+  public void entitySetTest() {
+    EntitySet providerEntitySet = new EntitySet().setName("name");
+    EntityContainer providerContainer = new EntityContainer().setName("container");
+
+    EdmEntitySetInfo info = new EdmEntitySetInfoImpl(providerContainer, providerEntitySet);
+
+    assertEquals("name", info.getEntitySetName());
+    assertEquals("container", info.getEntityContainerName());
+  }
+
+  @Test(expected = EdmException.class)
+  public void getUriTest() {
+    EntitySet providerEntitySet = new EntitySet().setName("name");
+    EntityContainer providerContainer = new EntityContainer().setName("container");
+
+    EdmEntitySetInfo info = new EdmEntitySetInfoImpl(providerContainer, providerEntitySet);
+    info.getEntitySetUri();
+  }
+  
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/ab6dff29/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmFunctionImportInfoImplTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmFunctionImportInfoImplTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmFunctionImportInfoImplTest.java
new file mode 100644
index 0000000..bec40d3
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmFunctionImportInfoImplTest.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * 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.provider;
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmException;
+import org.apache.olingo.odata4.commons.api.edm.EdmFunctionImportInfo;
+import org.apache.olingo.odata4.commons.api.edm.provider.EntityContainer;
+import org.apache.olingo.odata4.commons.api.edm.provider.FunctionImport;
+import org.junit.Test;
+
+public class EdmFunctionImportInfoImplTest {
+  
+  @Test
+  public void functionImportTest() {
+    FunctionImport providerFunctionImport = new FunctionImport().setName("name");
+    EntityContainer providerContainer = new EntityContainer().setName("container");
+
+    EdmFunctionImportInfo info = new EdmFunctionImportInfoImpl(providerContainer, providerFunctionImport);
+
+    assertEquals("name", info.getFunctionImportName());
+    assertEquals("container", info.getEntityContainerName());
+  }
+
+  @Test(expected = EdmException.class)
+  public void getUriTest() {
+    FunctionImport providerFunctionImport = new FunctionImport().setName("name");
+    EntityContainer providerContainer = new EntityContainer().setName("container");
+
+    EdmFunctionImportInfo info = new EdmFunctionImportInfoImpl(providerContainer, providerFunctionImport);
+    info.getFunctionImportUri();
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/ab6dff29/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmMemberImplTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmMemberImplTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmMemberImplTest.java
new file mode 100644
index 0000000..67bebf0
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmMemberImplTest.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * 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.provider;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+
+import org.apache.olingo.odata4.commons.api.edm.provider.EnumMember;
+import org.junit.Test;
+
+public class EdmMemberImplTest {
+
+  @Test
+  public void enumMember() {
+    EnumMember member = new EnumMember().setName("name").setValue("value");
+    EdmMemberImpl memberImpl = new EdmMemberImpl(mock(EdmProviderImpl.class), member);
+
+    assertEquals("name", memberImpl.getName());
+    assertEquals("value", memberImpl.getValue());
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/ab6dff29/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmReturnTypeImplTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmReturnTypeImplTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmReturnTypeImplTest.java
index e70a133..8cabaaf 100644
--- a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmReturnTypeImplTest.java
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmReturnTypeImplTest.java
@@ -18,14 +18,111 @@
  ******************************************************************************/
 package org.apache.olingo.odata4.commons.core.edm.provider;
 
+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.*;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmComplexType;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityType;
+import org.apache.olingo.odata4.commons.api.edm.EdmEnumType;
+import org.apache.olingo.odata4.commons.api.edm.EdmException;
+import org.apache.olingo.odata4.commons.api.edm.EdmReturnType;
+import org.apache.olingo.odata4.commons.api.edm.EdmType;
+import org.apache.olingo.odata4.commons.api.edm.EdmTypeDefinition;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
 import org.apache.olingo.odata4.commons.api.edm.provider.ReturnType;
+import org.apache.olingo.odata4.commons.core.edm.primitivetype.EdmPrimitiveTypeKind;
 import org.junit.Test;
 
 public class EdmReturnTypeImplTest {
 
   @Test
-  public void primitiveReturnType(){
+  public void primitiveReturnType() {
+    ReturnType providerType = new ReturnType().setType(new FullQualifiedName("Edm", "String"));
+
+    EdmReturnType typeImpl = new EdmReturnTypeImpl(mock(EdmProviderImpl.class), providerType);
+
+    assertEquals(EdmPrimitiveTypeKind.String.getEdmPrimitiveTypeInstance(), typeImpl.getType());
+    assertFalse(typeImpl.isCollection());
+
+    assertNull(typeImpl.getPrecision());
+    assertNull(typeImpl.getMaxLength());
+    assertNull(typeImpl.getScale());
+    assertNull(typeImpl.isNullable());
+  }
+
+  @Test
+  public void primitiveCollectionReturnType() {
+    ReturnType providerType = new ReturnType().setType(new FullQualifiedName("Edm", "String")).setCollection(true);
+
+    EdmReturnType typeImpl = new EdmReturnTypeImpl(mock(EdmProviderImpl.class), providerType);
+
+    assertEquals(EdmPrimitiveTypeKind.String.getEdmPrimitiveTypeInstance(), typeImpl.getType());
+    assertTrue(typeImpl.isCollection());
+  }
+
+  @Test(expected = EdmException.class)
+  public void invalidPrimitiveType() {
+    ReturnType providerType = new ReturnType().setType(new FullQualifiedName("Edm", "wrong")).setCollection(true);
+    EdmReturnType typeImpl = new EdmReturnTypeImpl(mock(EdmProviderImpl.class), providerType);
+    typeImpl.getType();
+  }
+
+  @Test
+  public void complexType() {
+    EdmProviderImpl mock = mock(EdmProviderImpl.class);
+    FullQualifiedName baseType = new FullQualifiedName("namespace", "type");
+    EdmComplexType edmType = mock(EdmComplexType.class);
+    when(mock.getComplexType(baseType)).thenReturn(edmType);
+    ReturnType providerType = new ReturnType().setType(baseType);
+    EdmReturnType typeImpl = new EdmReturnTypeImpl(mock, providerType);
+    EdmType returnedType = typeImpl.getType();
+    assertEquals(edmType, returnedType);
+  }
+
+  @Test
+  public void entityType() {
+    EdmProviderImpl mock = mock(EdmProviderImpl.class);
+    FullQualifiedName baseType = new FullQualifiedName("namespace", "type");
+    EdmEntityType edmType = mock(EdmEntityType.class);
+    when(mock.getEntityType(baseType)).thenReturn(edmType);
+    ReturnType providerType = new ReturnType().setType(baseType);
+    EdmReturnType typeImpl = new EdmReturnTypeImpl(mock, providerType);
+    EdmType returnedType = typeImpl.getType();
+    assertEquals(edmType, returnedType);
+  }
+
+  @Test
+  public void enumType() {
+    EdmProviderImpl mock = mock(EdmProviderImpl.class);
+    FullQualifiedName baseType = new FullQualifiedName("namespace", "type");
+    EdmEnumType edmType = mock(EdmEnumType.class);
+    when(mock.getEnumType(baseType)).thenReturn(edmType);
+    ReturnType providerType = new ReturnType().setType(baseType);
+    EdmReturnType typeImpl = new EdmReturnTypeImpl(mock, providerType);
+    EdmType returnedType = typeImpl.getType();
+    assertEquals(edmType, returnedType);
   }
-  
-  
+
+  @Test
+  public void typeDefinition() {
+    EdmProviderImpl mock = mock(EdmProviderImpl.class);
+    FullQualifiedName baseType = new FullQualifiedName("namespace", "type");
+    EdmTypeDefinition edmType = mock(EdmTypeDefinition.class);
+    when(mock.getTypeDefinition(baseType)).thenReturn(edmType);
+    ReturnType providerType = new ReturnType().setType(baseType);
+    EdmReturnType typeImpl = new EdmReturnTypeImpl(mock, providerType);
+    EdmType returnedType = typeImpl.getType();
+    assertEquals(edmType, returnedType);
+  }
+
+  @Test(expected = EdmException.class)
+  public void invalidType() {
+    ReturnType providerType = new ReturnType().setType(new FullQualifiedName("wrong", "wrong"));
+    EdmReturnType typeImpl = new EdmReturnTypeImpl(mock(EdmProviderImpl.class), providerType);
+    typeImpl.getType();
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/ab6dff29/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmServiceMetadataImplTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmServiceMetadataImplTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmServiceMetadataImplTest.java
new file mode 100644
index 0000000..17b70a0
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmServiceMetadataImplTest.java
@@ -0,0 +1,188 @@
+/*******************************************************************************
+ * 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.provider;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmEntitySetInfo;
+import org.apache.olingo.odata4.commons.api.edm.EdmException;
+import org.apache.olingo.odata4.commons.api.edm.EdmFunctionImportInfo;
+import org.apache.olingo.odata4.commons.api.edm.EdmServiceMetadata;
+import org.apache.olingo.odata4.commons.api.edm.EdmSingletonInfo;
+import org.apache.olingo.odata4.commons.api.edm.constants.ODataServiceVersion;
+import org.apache.olingo.odata4.commons.api.edm.provider.EdmProvider;
+import org.apache.olingo.odata4.commons.api.edm.provider.EntityContainer;
+import org.apache.olingo.odata4.commons.api.edm.provider.EntitySet;
+import org.apache.olingo.odata4.commons.api.edm.provider.FunctionImport;
+import org.apache.olingo.odata4.commons.api.edm.provider.Schema;
+import org.apache.olingo.odata4.commons.api.edm.provider.Singleton;
+import org.apache.olingo.odata4.commons.api.exception.ODataException;
+import org.junit.Test;
+
+public class EdmServiceMetadataImplTest {
+
+  @Test
+  public void allGettersMustDeliver() {
+    EdmServiceMetadata serviceMetadata = new EdmServiceMetadataImpl(new CustomProvider(true));
+    List<EdmEntitySetInfo> entitySetInfos = serviceMetadata.getEntitySetInfos();
+    assertNotNull(entitySetInfos);
+    assertEquals(2, entitySetInfos.size());
+
+    List<EdmSingletonInfo> singletonInfos = serviceMetadata.getSingletonInfos();
+    assertNotNull(singletonInfos);
+    assertEquals(2, singletonInfos.size());
+
+    List<EdmFunctionImportInfo> functionImportInfos = serviceMetadata.getFunctionImportInfos();
+    assertNotNull(functionImportInfos);
+    assertEquals(2, functionImportInfos.size());
+
+    // Cache test
+    assertTrue(entitySetInfos == serviceMetadata.getEntitySetInfos());
+    assertTrue(singletonInfos == serviceMetadata.getSingletonInfos());
+    assertTrue(functionImportInfos == serviceMetadata.getFunctionImportInfos());
+  }
+
+  @Test(expected = RuntimeException.class)
+  public void getMetadataAsInputStreamIsNotImplemented() {
+    EdmServiceMetadata serviceMetadata = new EdmServiceMetadataImpl(new CustomProvider(true));
+    serviceMetadata.getMetadata();
+  }
+
+  @Test
+  public void initialProvider() {
+    EdmProvider provider = new EdmProvider() {};
+    EdmServiceMetadata serviceMetadata = new EdmServiceMetadataImpl(provider);
+    assertEquals(ODataServiceVersion.V40, serviceMetadata.getDataServiceVersion());
+  }
+
+  @Test(expected = EdmException.class)
+  public void initialProviderEntitySetInfo() {
+    EdmProvider provider = new EdmProvider() {};
+    EdmServiceMetadata serviceMetadata = new EdmServiceMetadataImpl(provider);
+    serviceMetadata.getEntitySetInfos();
+  }
+
+  @Test(expected = EdmException.class)
+  public void initialProviderSingletonInfo() {
+    EdmProvider provider = new EdmProvider() {};
+    EdmServiceMetadata serviceMetadata = new EdmServiceMetadataImpl(provider);
+    serviceMetadata.getSingletonInfos();
+  }
+
+  @Test(expected = EdmException.class)
+  public void initialProviderFunctionImportInfo() {
+    EdmProvider provider = new EdmProvider() {};
+    EdmServiceMetadata serviceMetadata = new EdmServiceMetadataImpl(provider);
+    serviceMetadata.getFunctionImportInfos();
+  }
+
+  @Test
+  public void emptySchemaMustNotResultInException() {
+    EdmServiceMetadata serviceMetadata = new EdmServiceMetadataImpl(new CustomProvider(false));
+    assertNotNull(serviceMetadata.getEntitySetInfos());
+    assertEquals(0, serviceMetadata.getEntitySetInfos().size());
+
+    assertNotNull(serviceMetadata.getSingletonInfos());
+    assertEquals(0, serviceMetadata.getSingletonInfos().size());
+
+    assertNotNull(serviceMetadata.getFunctionImportInfos());
+    assertEquals(0, serviceMetadata.getFunctionImportInfos().size());
+  }
+
+  @Test
+  public void oDataExceptionsGetCaughtAndTransformed() {
+    EdmProvider provider = new EdmProvider() {
+      @Override
+      public List<Schema> getSchemas() throws ODataException {
+        throw new ODataException("msg");
+      }
+    };
+
+    EdmServiceMetadata serviceMetadata = new EdmServiceMetadataImpl(provider);
+    callGetEntitySetInfosAndExpectException(serviceMetadata);
+    callGetSingletonInfosAndExpectException(serviceMetadata);
+    callGetFunctionImportInfosAndExpectException(serviceMetadata);
+  }
+
+  private void callGetFunctionImportInfosAndExpectException(EdmServiceMetadata svc) {
+    try {
+      svc.getFunctionImportInfos();
+    } catch (EdmException e) {
+      assertEquals("org.apache.olingo.odata4.commons.api.exception.ODataException: msg", e.getMessage());
+      return;
+    }
+    fail("Expected EdmException was not thrown");
+
+  }
+
+  private void callGetSingletonInfosAndExpectException(EdmServiceMetadata svc) {
+    try {
+      svc.getSingletonInfos();
+    } catch (EdmException e) {
+      assertEquals("org.apache.olingo.odata4.commons.api.exception.ODataException: msg", e.getMessage());
+      return;
+    }
+    fail("Expected EdmException was not thrown");
+  }
+
+  private void callGetEntitySetInfosAndExpectException(EdmServiceMetadata svc) {
+    try {
+      svc.getEntitySetInfos();
+    } catch (EdmException e) {
+      assertEquals("org.apache.olingo.odata4.commons.api.exception.ODataException: msg", e.getMessage());
+      return;
+    }
+    fail("Expected EdmException was not thrown");
+  }
+
+  private class CustomProvider extends EdmProvider {
+    private List<Schema> schemas;
+
+    public CustomProvider(boolean fillSchema) {
+      schemas = new ArrayList<Schema>();
+      if (fillSchema) {
+        List<EntitySet> entitySets = new ArrayList<EntitySet>();
+        entitySets.add(new EntitySet().setName("1"));
+        entitySets.add(new EntitySet().setName("2"));
+        List<Singleton> singletons = new ArrayList<Singleton>();
+        singletons.add(new Singleton().setName("1"));
+        singletons.add(new Singleton().setName("2"));
+        List<FunctionImport> functionImports = new ArrayList<FunctionImport>();
+        functionImports.add(new FunctionImport().setName("1"));
+        functionImports.add(new FunctionImport().setName("2"));
+        EntityContainer entityContainer =
+            new EntityContainer().setName("cont").setEntitySets(entitySets).setSingletons(singletons)
+                .setFunctionImports(functionImports);
+        Schema schema = new Schema().setEntityContainer(entityContainer);
+        schemas.add(schema);
+      }
+    }
+
+    @Override
+    public List<Schema> getSchemas() throws ODataException {
+      return schemas;
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/ab6dff29/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmSingletonInfoImplTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmSingletonInfoImplTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmSingletonInfoImplTest.java
new file mode 100644
index 0000000..bd92137
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmSingletonInfoImplTest.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * 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.provider;
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmException;
+import org.apache.olingo.odata4.commons.api.edm.EdmSingletonInfo;
+import org.apache.olingo.odata4.commons.api.edm.provider.EntityContainer;
+import org.apache.olingo.odata4.commons.api.edm.provider.Singleton;
+import org.junit.Test;
+
+public class EdmSingletonInfoImplTest {
+
+  @Test
+  public void singletonTest() {
+    Singleton providerSingleton = new Singleton().setName("name");
+    EntityContainer providerContainer = new EntityContainer().setName("container");
+
+    EdmSingletonInfo info = new EdmSingletonInfoImpl(providerContainer, providerSingleton);
+
+    assertEquals("name", info.getSingletonName());
+    assertEquals("container", info.getEntityContainerName());
+  }
+
+  @Test(expected = EdmException.class)
+  public void getUriTest() {
+    Singleton providerSingleton = new Singleton().setName("name");
+    EntityContainer providerContainer = new EntityContainer().setName("container");
+
+    EdmSingletonInfo info = new EdmSingletonInfoImpl(providerContainer, providerSingleton);
+    info.getEntitySetUri();
+  }
+
+}