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 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); }
static void Main(string[] args) { System.Console.WriteLine("*** Weld 1.0 ***"); System.Console.WriteLine("*** Martijn Muurman ***"); if (args.Length < 1 || args.Length > 2) { System.Console.WriteLine("usage : Weld assemblyName [outputfoldername]"); return; } var folderName = GetOrCreateFolderAndGetName(args); var fileName = Path.GetFullPath(args[0]); var assembly = Assembly.LoadFrom(fileName); System.Console.WriteLine("processing {0}",fileName); var processor = new TypeScriptProcessor(); var results = processor.ProcessAssembly(assembly); System.Console.WriteLine("found {0} decorated types", results.Count); foreach (var result in results) { var fullFileName = Path.Combine(folderName, result.FileName); System.Console.WriteLine("Writing file {0}", fullFileName); File.WriteAllText(fullFileName, result.Content); } }
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); }
static void Main(string[] args) { System.Console.WriteLine("*** Weld 1.0 ***"); System.Console.WriteLine("*** Martijn Muurman ***"); if (args.Length < 1 || args.Length > 2) { System.Console.WriteLine("usage : Weld assemblyName [outputfoldername]"); return; } var folderName = GetOrCreateFolderAndGetName(args); var fileName = Path.GetFullPath(args[0]); var assembly = Assembly.LoadFrom(fileName); System.Console.WriteLine("processing {0}", fileName); var processor = new TypeScriptProcessor(); var results = processor.ProcessAssembly(assembly); System.Console.WriteLine("found {0} decorated types", results.Count); foreach (var result in results) { var fullFileName = Path.Combine(folderName, result.FileName); System.Console.WriteLine("Writing file {0}", fullFileName); File.WriteAllText(fullFileName, result.Content); } }
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 async Task Compile_Success() { var processor = new TypeScriptProcessor(); var pipeline = new Mock <IAssetPipeline>().SetupAllProperties(); var context = new Mock <IAssetContext>().SetupAllProperties(); var asset = new Mock <IAsset>().SetupAllProperties(); var env = new Mock <IHostingEnvironment>(); var fileProvider = new Mock <IFileProvider>(); string temp = Path.GetTempPath(); string path = Path.Combine(temp, "foo.ts"); File.WriteAllText(path, "const i = 1;"); var inputFile = new PhysicalFileInfo(new FileInfo(path)); context.Object.Content = new Dictionary <string, byte[]> { { "/file.md", "const i = 1;".AsByteArray() }, }; context.Setup(s => s.HttpContext.RequestServices.GetService(typeof(IHostingEnvironment))) .Returns(env.Object); context.SetupGet(s => s.Asset) .Returns(asset.Object); env.SetupGet(e => e.WebRootFileProvider) .Returns(fileProvider.Object); fileProvider.Setup(f => f.GetFileInfo(It.IsAny <string>())) .Returns(inputFile); await processor.ExecuteAsync(context.Object); var result = context.Object.Content.First().Value; Assert.Equal("var i = 1;", result.AsString().Trim()); }
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); }
public static void TestSampleType <T>(string folder = "Scenarios") { var processor = new TypeScriptProcessor(); //switch between testing and writing expectations var writeExpectations = false; var name = typeof(T).Name; var fileName = String.Format("{0}.ts", name); var filePath = String.Format("./../../{0}/{1}", folder, fileName); var expectContent = File.ReadAllText(filePath); var result = processor.Process(typeof(T)); if (!writeExpectations) { Assert.AreEqual(fileName, result.FileName); Assert.AreEqual(expectContent, result.Content); } else { File.WriteAllText(filePath, result.Content); } }