public void CreateConstructor() { var actual = RestartableAddInGenerator.CreateCompileUnit(); CreateClassWithConstructor(actual); const string expected = @"//------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. // Runtime Version:4.0.30319.34209 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> //------------------------------------------------------------------------------ namespace Solink.Sample { public sealed class RestartableThing : Solink.AddIn.Helpers.RestartableAddIn<Solink.HostViews.IThing>, Solink.HostViews.IThing { public RestartableThing(Solink.AddIn.Helpers.AddInFacade facade, System.AddIn.Hosting.AddInToken token, System.AddIn.Hosting.Platform platform) : base(facade, token, platform) { } } } "; AssertGeneratedCode(expected, actual); }
public void CreateClass() { var actual = RestartableAddInGenerator.CreateCompileUnit(); var ns = RestartableAddInGenerator.CreateNamespace(actual, NamespaceName); RestartableAddInGenerator.CreateClass(ns, ClassName, HostViewFullName); const string expected = @"//------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. // Runtime Version:4.0.30319.34209 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> //------------------------------------------------------------------------------ namespace Solink.Sample { public sealed class RestartableThing : Solink.AddIn.Helpers.RestartableAddIn<Solink.HostViews.IThing>, Solink.HostViews.IThing { } } "; AssertGeneratedCode(expected, actual); }
public void Generate() { var pathToOurAssembly = Assembly.GetExecutingAssembly().Location; var sourceAssembly = new FileInfo(pathToOurAssembly); var randomFileName = Path.GetRandomFileName(); var tempPath = Path.Combine(Path.GetTempPath(), randomFileName); var tempDirectoryInfo = new DirectoryInfo(tempPath); tempDirectoryInfo.Create(); try { var cut = new RestartableAddInGenerator(NamespaceName, sourceAssembly, tempDirectoryInfo); cut.Generate(); var generatedFile = Path.Combine(tempDirectoryInfo.FullName, "RestartableThing.cs"); var generatedFileInfo = new FileInfo(generatedFile); Assert.IsTrue(generatedFileInfo.Exists); var actual = File.ReadAllText(generatedFileInfo.FullName); AssertGeneratedLinesEqual(ExpectedRestartableThing, actual); } finally { try { tempDirectoryInfo.Delete(true); } catch (IOException) { /* ignore */ } } }
private static CodeTypeDeclaration CreateClassWithConstructor(CodeCompileUnit actual) { var ns = RestartableAddInGenerator.CreateNamespace(actual, NamespaceName); var @class = RestartableAddInGenerator.CreateClass(ns, ClassName, HostViewFullName); RestartableAddInGenerator.CreateConstructor(@class); return(@class); }
public void CreateCompileUnit() { var actual = RestartableAddInGenerator.CreateCompileUnit(); const string expected = @"//------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. // Runtime Version:4.0.30319.34209 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> //------------------------------------------------------------------------------ "; AssertGeneratedCode(expected, actual); }
public void CreateProperty() { var actual = RestartableAddInGenerator.CreateCompileUnit(); var ns = RestartableAddInGenerator.CreateNamespace(actual, NamespaceName); var @class = RestartableAddInGenerator.CreateClass(ns, ClassName, HostViewFullName); RestartableAddInGenerator.CreateProperty(@class, "Id", typeof(int), true); const string expected = @"//------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. // Runtime Version:4.0.30319.34209 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> //------------------------------------------------------------------------------ namespace Solink.Sample { public sealed class RestartableThing : Solink.AddIn.Helpers.RestartableAddIn<Solink.HostViews.IThing>, Solink.HostViews.IThing { public int Id { get { return base.Func(_ => _.Id); } set { base.Action(_ => _.Id = value); } } } } "; AssertGeneratedCode(expected, actual); }
public void CreateFuncMethodForVoid() { var actual = RestartableAddInGenerator.CreateCompileUnit(); var ns = RestartableAddInGenerator.CreateNamespace(actual, NamespaceName); var @class = RestartableAddInGenerator.CreateClass(ns, ClassName, HostViewFullName); var methodParameters = new[] { Tuple.Create(typeof(IList <string>), "strings"), }; RestartableAddInGenerator.CreateFuncMethod(@class, "AddToList", methodParameters, typeof(void)); const string expected = @"//------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. // Runtime Version:4.0.30319.34209 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> //------------------------------------------------------------------------------ namespace Solink.Sample { public sealed class RestartableThing : Solink.AddIn.Helpers.RestartableAddIn<Solink.HostViews.IThing>, Solink.HostViews.IThing { public void AddToList(System.Collections.Generic.IList<string> strings) { base.Action(_ => _.AddToList(strings)); } } } "; AssertGeneratedCode(expected, actual); }
public void CreateFuncMethod() { var actual = RestartableAddInGenerator.CreateCompileUnit(); var ns = RestartableAddInGenerator.CreateNamespace(actual, NamespaceName); var @class = RestartableAddInGenerator.CreateClass(ns, ClassName, HostViewFullName); var methodParameters = new Tuple <Type, string>[] { }; RestartableAddInGenerator.CreateFuncMethod(@class, "ComputeAnswerToLifeAndUniverseEverything", methodParameters, typeof(int)); const string expected = @"//------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. // Runtime Version:4.0.30319.34209 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> //------------------------------------------------------------------------------ namespace Solink.Sample { public sealed class RestartableThing : Solink.AddIn.Helpers.RestartableAddIn<Solink.HostViews.IThing>, Solink.HostViews.IThing { public int ComputeAnswerToLifeAndUniverseEverything() { return base.Func(_ => _.ComputeAnswerToLifeAndUniverseEverything()); } } } "; AssertGeneratedCode(expected, actual); }
public void GenerateClassNameThing() { RestartableAddInGenerator.GenerateClassName("Thing"); }
public void GenerateClassNameIThing() { var actual = RestartableAddInGenerator.GenerateClassName("IThing"); Assert.AreEqual("RestartableThing", actual); }
public void GenerateFromTypeIThing() { var actual = RestartableAddInGenerator.GenerateFromType(NamespaceName, typeof(IThing)); AssertGeneratedCode(ExpectedRestartableThing, actual); }