public void Enumerable(string propertyTypeFormat, string expectedTypescriptType, string memberType, bool generateDeclarations, string typeType) { var input = string.Format(@" using System; using System.Collections.Generic; using System.Collections.ObjectModel; namespace Foo {{ public {1} Test {{ {2}{0} Prop {{ get; set; }} }} }} ", string.Format(propertyTypeFormat, memberType), typeType, typeType != "interface" ? "public " : ""); var processor = new TypeScriptProcessor(new [] { input }, new[] { typeof(HashSet <>).Assembly.Location }); var output = processor.GetTypescriptAsString(generateDeclarations); Assert.Equal(string.Format(@"{1}interface Test {{ Prop?: {0}[]; }} ", expectedTypescriptType, generateDeclarations ? "" : "export "), output); }
public void JsonProperty(string typescriptType, string cSharpType, bool generateDeclarations, string typeType) { var input = string.Format(@" using System; using Newtonsoft.Json; namespace Foo {{ public {1} Test {{ [JsonProperty(""foo"")] {2}{0} Prop {{ get; set; }} }} }} ", cSharpType, typeType, typeType != "interface" ? "public " : ""); var processor = new TypeScriptProcessor(new[] { input }, new[] { typeof(JsonPropertyAttribute).Assembly.Location }); var output = processor.GetTypescriptAsString(generateDeclarations); Assert.Equal(string.Format(@"{2}interface Test {{ foo{1}: {0}; }} ", typescriptType, cSharpType.ToLower().Contains("string") ? "?" : "", generateDeclarations ? "" : "export "), output); }
public void Enum() { var input = @" public enum Foo { Bar, B, Baz = 4, Boo = 5, Foo = 4, A }"; var processor = new TypeScriptProcessor(input); var output = processor.GetTypescriptAsString(false); Assert.Equal(@"export enum Foo { Bar = 0, B = 1, Baz = 4, Boo = 5, Foo = 4, A = 5 } ", output); }
public void Property( string typescriptType, string cSharpType, bool generateDeclarations, string typeType) { var input = string.Format(@" using System; namespace Foo {{ public {1} Test {{ {2}{0} Prop {{ get; set; }} }} public {1} Test2 {{ {2}Test Prop {{ get; set; }} }} }} ", cSharpType, typeType, typeType != "interface" ? "public " : ""); var processor = new TypeScriptProcessor(input); var output = processor.GetTypescriptAsString(generateDeclarations); Assert.Equal(string.Format(@"{2}interface Test {{ Prop{1}: {0}; }} {2}interface Test2 {{ Prop{3}: Test; }} ", typescriptType, cSharpType.ToLower().Contains("string") ? "?" : "", generateDeclarations ? "" : "export ", typeType == "struct" ? "" : "?"), output); }
public void Dictionary(string typescriptType, string cSharpType, bool generateDeclarations) { var input = string.Format(@" using System.Collections.Generic; namespace Foo {{ public class Test : Dictionary<int, {0}> {{ }} public class Test2 : Dictionary<string, {0}> {{ }} public class Test3 : Test2 {{ public {0} Prop {{ get; set; }} public Dictionary<string, {0}> Dict {{ get; set; }} }} }} ", cSharpType); var processor = new TypeScriptProcessor(input); var output = processor.GetTypescriptAsString(generateDeclarations); Assert.Equal(string.Format(@"{2}interface Test {{ [key: number]: {0}; }} {2}interface Test2 {{ [key: string]: {0}; }} {2}interface Test3 extends Test2 {{ Prop{1}: {0}; Dict?: {{ [key: string]: {0}; }}; }} ", typescriptType, cSharpType.ToLower().Contains("string") ? "?" : "", generateDeclarations ? "" : "export "), output); }
public void MultipleFieldStruct(string typescriptType, string cSharpType, bool generateDeclarations, string typeType) { var input = string.Format(@" using System; namespace Foo {{ public {1} Test {{ {2}{0} x, y; }} }} ", cSharpType, typeType, typeType != "interface" ? "public " : ""); var processor = new TypeScriptProcessor(input); var output = processor.GetTypescriptAsString(generateDeclarations); Assert.Equal(string.Format(@"{2}interface Test {{ x{1}: {0}; y{1}: {0}; }} ", typescriptType, cSharpType.ToLower().Contains("string") ? "?" : "", generateDeclarations ? "" : "export "), output); }