public void TestDefaultTemplate() { FileInfo configFile = new FileInfo(Path.GetTempFileName()); // the mapping file needs to be written to the same // directory as the config file for this test FileInfo mappingFile = new FileInfo(Path.Combine(configFile.DirectoryName, MappingFileResourceName)); if (mappingFile.Exists) { mappingFile.Delete(); } ResourceHelper.WriteToFileFromResource(mappingFile, MappingFileResourceName); TestHelper.CreateConfigFile(configFile, TestHelper.T4DefaultTemplate, TestHelper.T4Renderer, "unused", "clazz.GeneratedName+\".generated.cs\""); // ensure that test is setup correctly Assert.IsTrue(configFile.Exists && configFile.Length != 0); Assert.IsTrue(mappingFile.Exists && mappingFile.Length != 0); Assert.AreEqual(mappingFile.DirectoryName, configFile.DirectoryName); string[] args = new string[] { "--config=" + configFile.FullName, mappingFile.FullName, "--output=generated" }; CodeGenerator.Generate(args, this); //this is just cheating... AssertFile(); //this is better... Assembly asm = AssertedCompileGeneratedFiles("SimpleAssembly"); CheckMappingAgainstCode(asm, mappingFile.FullName); }
public void EntityWithComponents() { FileInfo configFile = new FileInfo(Path.GetTempFileName()); // the mapping file needs to be written to the same // directory as the config file for this test string hbm = "pet.hbm.xml"; FileInfo mappingFile = new FileInfo(Path.Combine(configFile.DirectoryName, hbm)); if (mappingFile.Exists) { mappingFile.Delete(); } ResourceHelper.WriteToFileFromResource(mappingFile, hbm); TestHelper.CreateConfigFile(configFile, TestHelper.T4DefaultTemplate, TestHelper.T4Renderer, "unused", "clazz.GeneratedName+\".generated.cs\""); // ensure that test is setup correctly Assert.IsTrue(configFile.Exists && configFile.Length != 0); Assert.IsTrue(mappingFile.Exists && mappingFile.Length != 0); Assert.AreEqual(mappingFile.DirectoryName, configFile.DirectoryName); string[] args = new string[] { "--config=" + configFile.FullName, mappingFile.FullName }; CodeGenerator.Generate(args, this); Assembly asm = AssertedCompileGeneratedFiles("NHibernatePets"); CheckMappingAgainstCode(asm, mappingFile.FullName); }
public void TemplateFileRelativeToConfig() { configFile = new FileInfo(Path.GetTempFileName()); // the template file needs to be written to the same // directory as the config file. templateFile = new FileInfo(Path.Combine(configFile.DirectoryName, "convert.vm")); ResourceHelper.WriteToFileFromResource(templateFile, TemplateFileResourceName); mappingFile = new FileInfo(Path.Combine(configFile.DirectoryName, MappingFileResourceName)); ResourceHelper.WriteToFileFromResource(mappingFile, MappingFileResourceName); TestHelper.CreateConfigFile(configFile, templateFile.Name, VelocityRenderer, ""); // ensure that test is setup correctly Assert.IsTrue(configFile.Exists && configFile.Length != 0); Assert.IsTrue(templateFile.Exists && templateFile.Length != 0); Assert.IsTrue(mappingFile.Exists && mappingFile.Length != 0); Assert.AreEqual(templateFile.DirectoryName, configFile.DirectoryName); Assert.AreEqual(mappingFile.DirectoryName, configFile.DirectoryName); string[] args = new string[] { "--config=" + configFile.FullName, mappingFile.FullName }; CodeGenerator.Generate(args); AssertFile(); }
public void MappingFileInSameFolderAsCurrentDirectory() { mappingFile = new FileInfo("Simple.hbm.xml"); Assert.AreEqual(Environment.CurrentDirectory, mappingFile.DirectoryName); ResourceHelper.WriteToFileFromResource(mappingFile, MappingFileResourceName); string[] args = new string[] { mappingFile.FullName }; CodeGenerator.Generate(args); AssertFile(); }
public void MappingFileNoPathSameFolderAsCurrentDirectory() { Environment.CurrentDirectory = Path.GetTempPath(); mappingFile = new FileInfo(Path.Combine(Environment.CurrentDirectory, "Simple.hbm.xml")); ResourceHelper.WriteToFileFromResource(mappingFile, MappingFileResourceName); string[] args = new string[] { mappingFile.Name }; CodeGenerator.Generate(args); AssertFile(); }
public static Assembly BuildAssemblyFromHbm(string assemblyName, params string[] mappings) { //uses hbm2net to create classes files. FileInfo configFile = new FileInfo(Path.GetTempFileName()); List <string> hbms = new List <string>(); // the mapping file needs to be written to the same // directory as the config file for this test foreach (var hbm in mappings) { FileInfo mappingFile = new FileInfo(Path.Combine(configFile.DirectoryName, hbm)); if (mappingFile.Exists) { mappingFile.Delete(); } ResourceHelper.WriteToFileFromResource(mappingFile, hbm); hbms.Add(mappingFile.FullName); } TestHelper.CreateConfigFile(configFile, T4DefaultTemplate, T4Renderer, "unused", "clazz.GeneratedName+\".generated.cs\""); List <string> args = new List <string>(); args.Add("--config=" + configFile.FullName); args.AddRange(hbms); FileObserver fo = new FileObserver(); CodeGenerator.Generate(args.ToArray(), fo); CSharpCodeProvider provider = new CSharpCodeProvider(); CompilerParameters options = new CompilerParameters(); options.GenerateInMemory = true; options.ReferencedAssemblies.Add(typeof(ISet).Assembly.Location); options.OutputAssembly = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, assemblyName + ".dll"); options.GenerateInMemory = false; CompilerResults res = provider.CompileAssemblyFromFile(options, fo.Files); foreach (var e in res.Errors) { Console.WriteLine("Compiler Error:" + e); } Assert.AreEqual(0, res.Errors.Count); return(res.CompiledAssembly); }
public void TemplateFileDoesNotExist() { configFile = new FileInfo(Path.GetTempFileName()); templateFile = new FileInfo("non-existant-file.vm"); mappingFile = new FileInfo(Path.Combine(configFile.DirectoryName, MappingFileResourceName)); ResourceHelper.WriteToFileFromResource(mappingFile, MappingFileResourceName); TestHelper.CreateConfigFile(configFile, templateFile.Name, VelocityRenderer, ""); // ensure that test is setup correctly Assert.IsTrue(configFile.Exists && configFile.Length != 0); Assert.IsFalse(templateFile.Exists); Assert.IsTrue(mappingFile.Exists && mappingFile.Length != 0); Assert.AreEqual(mappingFile.DirectoryName, configFile.DirectoryName); string[] args = new string[] { "--config=" + configFile.FullName, mappingFile.FullName }; CodeGenerator.Generate(args); AssertFile(); }
public void DoesNotOverwriteNewerTargetIfRequired() { FileInfo configFile = new FileInfo(Path.GetTempFileName()); // the mapping file needs to be written to the same // directory as the config file for this test string hbm = "product.hbm.xml"; FileInfo mappingFile = new FileInfo(Path.Combine(configFile.DirectoryName, hbm)); if (mappingFile.Exists) { mappingFile.Delete(); } ResourceHelper.WriteToFileFromResource(mappingFile, hbm); TestHelper.CreateConfigFile(configFile, TestHelper.T4DefaultTemplate, TestHelper.T4Renderer, "unused", "clazz.GeneratedName+\".generated.cs\""); // ensure that test is setup correctly Assert.IsTrue(configFile.Exists && configFile.Length != 0); Assert.IsTrue(mappingFile.Exists && mappingFile.Length != 0); Assert.AreEqual(mappingFile.DirectoryName, configFile.DirectoryName); string[] args = new string[] { "--config=" + configFile.FullName, mappingFile.FullName }; CodeGenerator.Generate(args, this); FileInfo gen = new FileInfo(generatedFiles[0]); DateTime prev = gen.LastWriteTimeUtc; generatedFiles.Clear(); args = new string[] { "-ct", "--config=" + configFile.FullName, mappingFile.FullName }; CodeGenerator.Generate(args, this); Assert.AreEqual(0, generatedFiles.Count); generatedFiles.Clear(); args = new string[] { "--config=" + configFile.FullName, mappingFile.FullName }; CodeGenerator.Generate(args, this); gen = new FileInfo(generatedFiles[0]); Assert.AreNotEqual(prev, gen.LastWriteTimeUtc); }
public void KeyManyToOne() { FileInfo configFile = new FileInfo(Path.GetTempFileName()); // the mapping file needs to be written to the same // directory as the config file for this test string hbm = "keymanytoone.hbm.xml"; FileInfo mappingFile = new FileInfo(Path.Combine(configFile.DirectoryName, hbm)); if (mappingFile.Exists) { mappingFile.Delete(); } ResourceHelper.WriteToFileFromResource(mappingFile, hbm); TestHelper.CreateConfigFile(configFile, TestHelper.T4DefaultTemplate, TestHelper.T4Renderer, "unused", "clazz.GeneratedName+\".generated.cs\""); // ensure that test is setup correctly Assert.IsTrue(configFile.Exists && configFile.Length != 0); Assert.IsTrue(mappingFile.Exists && mappingFile.Length != 0); Assert.AreEqual(mappingFile.DirectoryName, configFile.DirectoryName); string[] args = new string[] { "--config=" + configFile.FullName, mappingFile.FullName }; CodeGenerator.Generate(args, this); Assembly asm = AssertedCompileGeneratedFiles("KMTONE"); try { CheckMappingAgainstCode(asm, mappingFile.FullName); } catch (Exception e) { Assert.AreEqual(e.InnerException.Message, "composite-id class must override Equals(): Eg.Cat"); } }