/// <summary> /// Resolves TsType to the more specialized type. /// </summary> /// <param name="toResolve">The type to resolve.</param> /// <returns></returns> private TsType ResolveType(TsType toResolve, bool useOpenGenericDefinition = true) { if (!(toResolve is TsType)) { return toResolve; } if (_knownTypes.ContainsKey(toResolve.Type)) { return _knownTypes[toResolve.Type]; } else if (toResolve.Type.IsGenericType && useOpenGenericDefinition) { // We stored its open type definition instead TsType openType = null; if (_knownTypes.TryGetValue(toResolve.Type.GetGenericTypeDefinition(), out openType)) { return openType; } } else if (toResolve.Type.IsGenericType) { var genericType = TsType.Create(toResolve.Type); _knownTypes[toResolve.Type] = genericType; return genericType; } var typeFamily = TsType.GetTypeFamily(toResolve.Type); TsType type = null; switch (typeFamily) { case TsTypeFamily.System: type = new TsSystemType(toResolve.Type); break; case TsTypeFamily.Collection: type = this.CreateCollectionType(toResolve); break; case TsTypeFamily.Enum: type = new TsEnum(toResolve.Type); break; default: type = TsType.Any; break; } _knownTypes[toResolve.Type] = type; return type; }
public void WhenInitializedWithString_KindIsSetToString() { var target = new TsSystemType(typeof(string)); Assert.Equal(SystemTypeKind.String, target.Kind); }
public void WhenInitializedWithNullableType_KindIsSetAccordingToUnderlayingType() { var target = new TsSystemType(typeof(int?)); Assert.Equal(SystemTypeKind.Number, target.Kind); }
public void WhenInitializedWithInt_KindIsSetToNumber() { var target = new TsSystemType(typeof(int)); Assert.Equal(SystemTypeKind.Number, target.Kind); }
public void WhenInitializedWithDateTime_KindIsSetToDate() { var target = new TsSystemType(typeof(DateTime)); Assert.Equal(SystemTypeKind.Date, target.Kind); }
public void WhenInitializedWithBool_KindIsSetToBool() { var target = new TsSystemType(typeof(bool)); Assert.Equal(SystemTypeKind.Bool, target.Kind); }