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)); }
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()}"); } }
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()}"); } }
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"); } }