public void ConstructableNamedTypeDefinitionToStringTest() { IEdmEntityType astonishing = new EdmEntityType("AwesomeNamespace", "AstonishingEntity", null, false, false); IEdmEntityType aweInspiring = new EdmEntityType("AwesomeNamespace", "AweInspiringEntity", null, false, false); IEdmComplexType breathTaking = new EdmComplexType("AwesomeNamespace", "BreathtakingComplex", null, false); IEdmStructuredType stunning = new EdmUntypedStructuredType("AwesomeNamespace", "StunningStructured"); IEdmPrimitiveType primitive = (IEdmPrimitiveType)EdmCoreModel.Instance.GetInt32(false).Definition; Assert.AreEqual("AwesomeNamespace.AstonishingEntity", astonishing.ToString(), "To string correct"); Assert.AreEqual("AwesomeNamespace.AweInspiringEntity", aweInspiring.ToString(), "To string correct"); Assert.AreEqual("AwesomeNamespace.BreathtakingComplex", breathTaking.ToString(), "To string correct"); Assert.AreEqual("AwesomeNamespace.StunningStructured", stunning.ToString(), "To string correct"); Assert.AreEqual("Edm.Int32", primitive.ToString(), "To string correct"); }
/// <summary> /// Resolves a type. /// </summary> /// <param name="typeName">The type name.</param> /// <param name="clientCustomTypeResolver">The function of client cuetom type resolver.</param> /// <param name="throwIfMetadataConflict">Whether to throw if a type specified in the ContextUri is not found in metadata.</param> /// <returns>The resolved Edm type.</returns> private ODataPayloadKind ResolveType(string typeName, Func <IEdmType, string, IEdmType> clientCustomTypeResolver, bool throwIfMetadataConflict) { string typeNameToResolve = EdmLibraryExtensions.GetCollectionItemTypeName(typeName) ?? typeName; bool isCollection = typeNameToResolve != typeName; EdmTypeKind typeKind; IEdmType resolvedType = MetadataUtils.ResolveTypeNameForRead(this.model, /*expectedType*/ null, typeNameToResolve, clientCustomTypeResolver, out typeKind); if (resolvedType == null && !throwIfMetadataConflict) { string namespaceName; string name; TypeUtils.ParseQualifiedTypeName(typeName, out namespaceName, out name, out isCollection); resolvedType = new EdmUntypedStructuredType(namespaceName, name); } if (resolvedType == null || resolvedType.TypeKind != EdmTypeKind.Primitive && resolvedType.TypeKind != EdmTypeKind.Enum && resolvedType.TypeKind != EdmTypeKind.Complex && resolvedType.TypeKind != EdmTypeKind.Entity && resolvedType.TypeKind != EdmTypeKind.TypeDefinition && resolvedType.TypeKind != EdmTypeKind.Untyped) { throw new ODataException(ODataErrorStrings.ODataJsonLightContextUriParser_InvalidEntitySetNameOrTypeName(UriUtils.UriToString(this.parseResult.ContextUri), typeName)); } if (resolvedType.TypeKind == EdmTypeKind.Entity || resolvedType.TypeKind == EdmTypeKind.Complex) { this.parseResult.EdmType = resolvedType; return(isCollection ? ODataPayloadKind.ResourceSet : ODataPayloadKind.Resource); } // For structured collection ,the EdmType is element type. for primitive collection, it is collection type resolvedType = isCollection ? EdmLibraryExtensions.GetCollectionType(resolvedType.ToTypeReference(true /*nullable*/)) : resolvedType; this.parseResult.EdmType = resolvedType; return(isCollection ? ODataPayloadKind.Collection : ODataPayloadKind.Property); }