private static ITypeName ToAnonymousName(ITypeName type)
        {
            if (type.IsUnknown)
            {
                return(type);
            }
            if (type.IsPredefined)
            {
                return(type);
            }
            if (type.IsDelegateType)
            {
                return(ToAnonymousType_Delegate(type.AsDelegateTypeName));
            }
            if (type.IsArray)
            {
                return(ToAnonymousType_Array(type.AsArrayTypeName));
            }
            if (type.IsTypeParameter)
            {
                return(ToAnonymousType_TypeParameter(type.AsTypeParameterName));
            }

            if (!"TypeName".Equals(type.GetType().Name))
            {
                Asserts.Fail <ITypeName>("unknown type implementation");
            }

            return(ToAnonymousType_Regular(type));
        }
Beispiel #2
0
        public static string GetOuterMostTypeName(IReadOnlyDictionary <string, string> typeAccelerators, ITypeName typeName)
        {
            switch (typeName)
            {
            case TypeName simpleTypeName:
                return(ExpandSimpleTypeName(typeAccelerators, simpleTypeName.FullName));

            case ArrayTypeName arrayTypeName:
                return(GetOuterMostTypeName(typeAccelerators, arrayTypeName.ElementType));

            case GenericTypeName genericTypeName:
                return(GetOuterMostTypeName(typeAccelerators, genericTypeName.TypeName));

            case ReflectionTypeName reflectionTypeName:
                return(GetFullTypeName(reflectionTypeName.GetReflectionType()));

            default:
                throw new ArgumentException($"{nameof(typeName)} is not a known instantiation of ITypeName. Type: {typeName.GetType()}");
            }
        }
Beispiel #3
0
        private static ITypeName ExpandTypeName(IReadOnlyDictionary <string, string> typeAccelerators, ITypeName typeName)
        {
            if (typeName == null)
            {
                throw new ArgumentNullException(nameof(typeName));
            }

            switch (typeName)
            {
            case TypeName ordinaryTypeName:
                return(ExpandTypeName(typeAccelerators, ordinaryTypeName));

            case ArrayTypeName arrayTypeName:
                return(ExpandTypeName(typeAccelerators, arrayTypeName));

            case GenericTypeName genericTypeName:
                return(ExpandTypeName(typeAccelerators, genericTypeName));

            case ReflectionTypeName reflectionTypeName:
                return(ExpandTypeName(typeAccelerators, reflectionTypeName));

            default:
                throw new ArgumentException($"{nameof(typeName)} is not a known instantiation of ITypeName. Type: {typeName.GetType()}");
            }
        }
Beispiel #4
0
        private void AppendAssertsForTypeName(ITypeName t)
        {
            _sb.AppendLine("String id = \"{0}\";".FormatEx(t.Identifier));

            _sb.Append("assertEquals(")
            .AppendBool(TypeUtils.IsUnknownTypeIdentifier(t.Identifier))
            .AppendLine(", TypeUtils.isUnknownTypeIdentifier(id));");
            _sb.Append("assertEquals(")
            .AppendBool(TypeName.IsTypeNameIdentifier(t.Identifier))
            .AppendLine(", TypeName.isTypeNameIdentifier(id));");
            _sb.Append("assertEquals(")
            .AppendBool(ArrayTypeName.IsArrayTypeNameIdentifier(t.Identifier))
            .AppendLine(", ArrayTypeName.isArrayTypeNameIdentifier(id));");
            _sb.Append("assertEquals(")
            .AppendBool(TypeParameterName.IsTypeParameterNameIdentifier(t.Identifier))
            .AppendLine(", TypeParameterName.isTypeParameterNameIdentifier(id));");
            _sb.Append("assertEquals(")
            .AppendBool(DelegateTypeName.IsDelegateTypeNameIdentifier(t.Identifier))
            .AppendLine(", DelegateTypeName.isDelegateTypeNameIdentifier(id));");
            _sb.Append("assertEquals(")
            .AppendBool(PredefinedTypeName.IsPredefinedTypeNameIdentifier(t.Identifier))
            .AppendLine(", PredefinedTypeName.isPredefinedTypeNameIdentifier(id));");


            _sb.AppendLine("ITypeName sut = TypeUtils.createTypeName(id);");
            _sb.AppendLine("assertTrue(sut instanceof {0});".FormatEx(t.GetType().Name));

            _sb.AppendAreEqual(t.IsHashed, "sut.isHashed()");
            _sb.AppendAreEqual(t.IsUnknown, "sut.isUnknown()");

            _sb.AppendAreEqual(t.Namespace, "sut.getNamespace()");
            _sb.AppendAreEqual(t.Assembly, "sut.getAssembly()");
            _sb.AppendAreEqual(t.FullName, "sut.getFullName()");
            _sb.AppendAreEqual(t.Name, "sut.getName()");

            _sb.AppendAreEqual(t.IsClassType, "sut.isClassType()");
            _sb.AppendAreEqual(t.IsEnumType, "sut.isEnumType()");
            _sb.AppendAreEqual(t.IsInterfaceType, "sut.isInterfaceType()");
            _sb.AppendAreEqual(t.IsNullableType, "sut.isNullableType()");
            _sb.AppendAreEqual(t.IsPredefined, "sut.isPredefined()");
            _sb.AppendAreEqual(t.IsReferenceType, "sut.isReferenceType()");
            _sb.AppendAreEqual(t.IsSimpleType, "sut.isSimpleType()");
            _sb.AppendAreEqual(t.IsStructType, "sut.isStructType()");
            _sb.AppendAreEqual(t.IsTypeParameter, "sut.isTypeParameter()");
            _sb.AppendAreEqual(t.IsValueType, "sut.isValueType()");
            _sb.AppendAreEqual(t.IsVoidType, "sut.isVoidType()");

            _sb.AppendAreEqual(t.IsNestedType, "sut.isNestedType()");
            _sb.AppendAreEqual(t.DeclaringType, "sut.getDeclaringType()");

            _sb.AppendAreEqual(t.HasTypeParameters, "sut.hasTypeParameters()");
            _sb.AppendAreEqual(t.TypeParameters, "sut.getTypeParameters()");

            // used for several checks;
            _sb.AppendLine("boolean hasThrown;");

            // array
            _sb.Comment("array");
            _sb.AppendAreEqual(t.IsArray, "sut.isArray()");
            if (t.IsArray)
            {
                var tArr = t.AsArrayTypeName;
                _sb.AppendLine("IArrayTypeName sutArr = sut.asArrayTypeName();");
                _sb.AppendAreEqual(tArr.Rank, "sutArr.getRank()");
                _sb.AppendAreEqual(tArr.ArrayBaseType, "sutArr.getArrayBaseType()");
            }
            else
            {
                _sb.AppendThrowValidation("sut.asArrayTypeName();", "AssertionException");
            }

            // delegates
            _sb.Comment("delegates");
            _sb.AppendAreEqual(t.IsDelegateType, "sut.isDelegateType()");
            if (t.IsDelegateType)
            {
                var tD = t.AsDelegateTypeName;
                _sb.AppendLine("IDelegateTypeName sutD = sut.asDelegateTypeName();");
                _sb.AppendAreEqual(tD.DelegateType, "sutD.getDelegateType()");
                _sb.AppendAreEqual(tD.HasParameters, "sutD.hasParameters()");
                _sb.AppendAreEqual(tD.IsRecursive, "sutD.isRecursive()");
                _sb.AppendAreEqual(tD.Parameters, "sutD.getParameters()");
                _sb.AppendAreEqual(tD.ReturnType, "sutD.getReturnType()");
            }
            else
            {
                _sb.AppendThrowValidation("sut.asDelegateTypeName();", "AssertionException");
            }

            // predefined
            _sb.Comment("predefined");
            _sb.AppendAreEqual(t.IsPredefined, "sut.isPredefined()");
            if (t.IsPredefined)
            {
                var sutP = t.AsPredefinedTypeName;
                _sb.AppendLine("IPredefinedTypeName sutP = sut.asPredefinedTypeName();");
                _sb.AppendAreEqual(sutP.FullType, "sutP.getFullType()");
            }
            else
            {
                _sb.AppendThrowValidation("sut.asPredefinedTypeName();", "AssertionException");
            }

            // type parameters
            _sb.Comment("type parameters");
            _sb.AppendAreEqual(t.IsTypeParameter, "sut.isTypeParameter()");
            if (t.IsTypeParameter)
            {
                var sutT = t.AsTypeParameterName;
                _sb.AppendLine("ITypeParameterName sutT = sut.asTypeParameterName();");
                _sb.AppendAreEqual(sutT.IsBound, "sutT.isBound()");
                _sb.AppendAreEqual(sutT.TypeParameterShortName, "sutT.getTypeParameterShortName()");
                _sb.AppendAreEqual(sutT.TypeParameterType, "sutT.getTypeParameterType()");
            }
            else
            {
                _sb.AppendThrowValidation("sut.asTypeParameterName();", "AssertionException");
            }
        }