Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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();
 }
Exemple #6
0
        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);
        }
Exemple #7
0
        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();
        }
Exemple #8
0
        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);
        }
Exemple #9
0
        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");
            }
        }