// NAnt - A .NET build tool // Copyright (C) 2001-2003 Gerry Shaw // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // Gerry Shaw (gerry_shaw@yahoo.com) // Gert Driesen (gert.driesen@ardatis.com) using System.Globalization; using System.IO; using NUnit.Framework; using NAnt.Core; using NAnt.DotNet.Tasks; using NAnt.DotNet.Types; using Tests.NAnt.Core; using Tests.NAnt.Core.Util; namespace Tests.NAnt.DotNet.Tasks { [TestFixture] public class VbcTaskTest : BuildTestBase { #region Private Instance Fields private string _sourceFileName; #endregion Private Instance Fields #region Private Static Fields private const string _format = @" "; private const string _sourceCode = @" Public Class HelloWorld Shared Sub Main() Dim table as DataTable = new DataTable() Dim list as ArrayList = new ArrayList() Console.WriteLine(""Hello World using VB.NET"") Return End Sub End Class"; private const string _sourceCodeWithNamespace = @" Imports System Namespace ResourceTest Public Class HelloWorld Shared Sub Main() Console.WriteLine(""Hello World using VB.NET"") Return End sub End Class End Namespace"; #endregion Private Static Fields #region Override implementation of BuildTestBase [SetUp] protected override void SetUp() { base.SetUp(); _sourceFileName = Path.Combine(TempDirName, "HelloWorld.vb"); TempFile.CreateWithContents(_sourceCode, _sourceFileName); } #endregion Override implementation of BuildTestBase #region Public Instance Methods /// /// Test to make sure debug option works. /// [Test] [Category ("NotMono")] public void Test_DebugBuild() { RunBuild(FormatBuildFile("debug='true'")); Assert.IsTrue(File.Exists(_sourceFileName + ".exe"), _sourceFileName + ".exe does not exists, program did compile."); // Comment this for now as its hard to know which framework was used to compile and it was mono there will be no pdb file. //Assert.IsTrue(File.Exists(_sourceFileName + ".pdb"), _sourceFileName + ".pdb does not exists, program did compile with debug switch."); } /// /// Test to make sure debug option works. /// [Test] [Category ("NotMono")] public void Test_ReleaseBuild() { RunBuild(FormatBuildFile("debug='false'")); Assert.IsTrue(File.Exists(_sourceFileName + ".exe"), _sourceFileName + ".exe does not exists, program did compile."); Assert.IsFalse(File.Exists(_sourceFileName + ".pdb"), _sourceFileName + ".pdb does exists, program did compiled with debug switch."); } [Test] [Category ("NotMono")] public void Test_Define() { string sourceCode = @" Public Class HelloWorld #If CONSOLE Then Shared Sub Main() #Else Public Sub Whatever () #End If #If Not ABC Then SomeError #End If Dim table as DataTable = new DataTable() Dim list as ArrayList = new ArrayList() Console.WriteLine(""Hello World using VB.NET"") #if DEF Then AnotherError #End If Return End Sub End Class"; TempFile.CreateWithContents(sourceCode, _sourceFileName); RunBuild(FormatBuildFile("define='CONSOLE=True,DEF=False,ABC=True'")); } [Test] [ExpectedException(typeof(BuildException))] public void Test_ManifestResourceName_NonExistingResource() { VbcTask vbcTask = new VbcTask(); vbcTask.Project = CreateEmptyProject(); ResourceFileSet resources = new ResourceFileSet(); resources.BaseDirectory = TempDirectory; resources.DynamicPrefix = true; vbcTask.GetManifestResourceName(resources, "I_dont_exist.txt"); } [Test] public void Test_ManifestResourceName_Resx_StandAlone_DynamicPrefix() { VbcTask vbcTask = new VbcTask(); vbcTask.Project = CreateEmptyProject(); vbcTask.RootNamespace = "TestRootNamespace"; ResourceFileSet resources = new ResourceFileSet(); resources.BaseDirectory = TempDirectory; resources.DynamicPrefix = true; // holds the path to the resource file string resourceFile = null; // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "ResourceFile.resx"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual("ResourceFile.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "ResourceFile.en-US.resx"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual("ResourceFile.en-US.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.resx"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual("SubDir" + "." + "ResourceFile.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.en-US.resx"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual("SubDir" + "." + "ResourceFile.en-US.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.en-US.dunno.en-US.resx"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual("SubDir" + "." + "ResourceFile.en-US.dunno.en-US.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); } [Test] public void Test_ManifestResourceName_Resx_StandAlone_DynamicPrefix_With_Prefix() { VbcTask vbcTask = new VbcTask(); vbcTask.Project = CreateEmptyProject(); vbcTask.RootNamespace = "TestRootNamespace"; ResourceFileSet resources = new ResourceFileSet(); resources.BaseDirectory = TempDirectory; resources.Prefix = "TestNamespace"; resources.DynamicPrefix = true; // holds the path to the resource file string resourceFile = null; // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "ResourceFile.resx"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "ResourceFile.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "ResourceFile.en-US.resx"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "ResourceFile.en-US.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.resx"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "SubDir" + "." + "ResourceFile.resources", vbcTask.GetManifestResourceName( resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.en-US.resx"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "SubDir" + "." + "ResourceFile.en-US.resources", vbcTask.GetManifestResourceName( resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.en-US.dunno.en-US.resx"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "SubDir" + "." + "ResourceFile.en-US.dunno.en-US.resources", vbcTask.GetManifestResourceName( resources, resourceFile)); } [Test] public void Test_ManifestResourceName_Resx_StandAlone_Prefix() { VbcTask vbcTask = new VbcTask(); vbcTask.Project = CreateEmptyProject(); vbcTask.RootNamespace = "TestRootNamespace"; ResourceFileSet resources = new ResourceFileSet(); resources.BaseDirectory = TempDirectory; resources.Prefix = "TestNamespace"; resources.DynamicPrefix = false; // holds the path to the resource file string resourceFile = null; // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "ResourceFile.resx"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "ResourceFile.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "ResourceFile.en-US.resx"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "ResourceFile.en-US.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.resx"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "ResourceFile.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.en-US.resx"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "ResourceFile.en-US.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.en-US.dunno.en-US.resx"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "ResourceFile.en-US.dunno.en-US.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); } [Test] public void Test_ManifestResourceName_Resx() { VbcTask vbcTask = new VbcTask(); vbcTask.Project = CreateEmptyProject(); vbcTask.RootNamespace = "TestRootNamespace"; ResourceFileSet resources = new ResourceFileSet(); resources.BaseDirectory = TempDirectory; resources.DynamicPrefix = false; PerformDependentResxTests(vbcTask, resources); } [Test] public void Test_ManifestResourceName_Resx_DynamicPrefix() { VbcTask vbcTask = new VbcTask(); vbcTask.Project = CreateEmptyProject(); vbcTask.RootNamespace = "TestRootNamespace"; ResourceFileSet resources = new ResourceFileSet(); resources.BaseDirectory = TempDirectory; resources.DynamicPrefix = true; PerformDependentResxTests(vbcTask, resources); } [Test] public void Test_ManifestResourceName_Resx_Prefix_DynamicPrefix() { VbcTask vbcTask = new VbcTask(); vbcTask.Project = CreateEmptyProject(); vbcTask.RootNamespace = "TestRootNamespace"; ResourceFileSet resources = new ResourceFileSet(); resources.BaseDirectory = TempDirectory; resources.Prefix = "TestNamespace"; resources.DynamicPrefix = true; // prefix should be ignored for resx files PerformDependentResxTests(vbcTask, resources); } [Test] public void Test_ManifestResourceName_Resx_Prefix() { VbcTask vbcTask = new VbcTask(); vbcTask.Project = CreateEmptyProject(); vbcTask.RootNamespace = "TestRootNamespace"; ResourceFileSet resources = new ResourceFileSet(); resources.BaseDirectory = TempDirectory; resources.Prefix = "TestNamespace"; resources.DynamicPrefix = false; // prefix should be ignored for resx files PerformDependentResxTests(vbcTask, resources); } [Test] public void Test_ManifestResourceName_NonResx_DynamicPrefix() { VbcTask vbcTask = new VbcTask(); vbcTask.Project = CreateEmptyProject(); vbcTask.RootNamespace = "TestRootNamespace"; ResourceFileSet resources = new ResourceFileSet(); resources.BaseDirectory = TempDirectory; resources.DynamicPrefix = true; // holds the path to the resource file string resourceFile = null; // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "ResourceFile.txt"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual("ResourceFile.txt", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "ResourceFile.en-US.txt"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual("ResourceFile.txt", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.txt"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual("SubDir" + "." + "ResourceFile.txt", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.en-US.txt"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual("SubDir" + "." + "ResourceFile.txt", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.en-US.dunno.en-US.txt"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual("SubDir" + "." + "ResourceFile.en-US.dunno.txt", vbcTask.GetManifestResourceName(resources, resourceFile)); } [Test] public void Test_ManifestResourceName_NonResx_Prefix_With_DynamicPrefix() { VbcTask vbcTask = new VbcTask(); vbcTask.Project = CreateEmptyProject(); vbcTask.RootNamespace = "TestRootNamespace"; ResourceFileSet resources = new ResourceFileSet(); resources.BaseDirectory = TempDirectory; resources.Prefix = "TestNamespace"; resources.DynamicPrefix = true; // holds the path to the resource file string resourceFile = null; // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "ResourceFile.txt"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "ResourceFile.txt", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "ResourceFile.en-US.txt"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "ResourceFile.txt", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.txt"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "SubDir" + "." + "ResourceFile.txt", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.en-US.txt"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "SubDir" + "." + "ResourceFile.txt", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.en-US.dunno.en-US.txt"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "SubDir" + "." + "ResourceFile.en-US.dunno.txt", vbcTask.GetManifestResourceName( resources, resourceFile)); } [Test] public void Test_ManifestResourceName_NonResx_Prefix() { VbcTask vbcTask = new VbcTask(); vbcTask.Project = CreateEmptyProject(); vbcTask.RootNamespace = "TestRootNamespace"; ResourceFileSet resources = new ResourceFileSet(); resources.BaseDirectory = TempDirectory; resources.Prefix = "TestNamespace"; resources.DynamicPrefix = false; // holds the path to the resource file string resourceFile = null; // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "ResourceFile.txt"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "ResourceFile.txt", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "ResourceFile.en-US.txt"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "ResourceFile.txt", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.txt"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "ResourceFile.txt", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.en-US.txt"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "ResourceFile.txt", vbcTask.GetManifestResourceName(resources, resourceFile)); } [Test] public void Test_ManifestResourceName_CompiledResource_DynamicPrefix() { VbcTask vbcTask = new VbcTask(); vbcTask.Project = CreateEmptyProject(); vbcTask.RootNamespace = "TestRootNamespace"; ResourceFileSet resources = new ResourceFileSet(); resources.BaseDirectory = TempDirectory; resources.DynamicPrefix = true; // holds the path to the resource file string resourceFile = null; // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "ResourceFile.resources"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual("ResourceFile.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "ResourceFile.en-US.resources"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual("ResourceFile.en-US.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.resources"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual("SubDir" + "." + "ResourceFile.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.en-US.resources"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual("SubDir" + "." + "ResourceFile.en-US.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.en-US.dunno.en-US.resources"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual("SubDir" + "." + "ResourceFile.en-US.dunno.en-US.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); } [Test] public void Test_ManifestResourceName_CompiledResource_Prefix_With_DynamicPrefix() { VbcTask vbcTask = new VbcTask(); vbcTask.Project = CreateEmptyProject(); vbcTask.RootNamespace = "TestRootNamespace"; ResourceFileSet resources = new ResourceFileSet(); resources.BaseDirectory = TempDirectory; resources.Prefix = "TestNamespace"; resources.DynamicPrefix = true; // holds the path to the resource file string resourceFile = null; // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "ResourceFile.resources"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "ResourceFile.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "ResourceFile.en-US.resources"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "ResourceFile.en-US.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.resources"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "SubDir" + "." + "ResourceFile.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.en-US.resources"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "SubDir" + "." + "ResourceFile.en-US.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.en-US.dunno.en-US.resources"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "SubDir" + "." + "ResourceFile.en-US.dunno.en-US.resources", vbcTask.GetManifestResourceName( resources, resourceFile)); } [Test] public void Test_ManifestResourceName_CompiledResource_Prefix() { VbcTask vbcTask = new VbcTask(); vbcTask.Project = CreateEmptyProject(); vbcTask.RootNamespace = "TestRootNamespace"; ResourceFileSet resources = new ResourceFileSet(); resources.BaseDirectory = TempDirectory; resources.Prefix = "TestNamespace"; resources.DynamicPrefix = false; // holds the path to the resource file string resourceFile = null; // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "ResourceFile.resources"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "ResourceFile.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "ResourceFile.en-US.resources"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "ResourceFile.en-US.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.resources"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "ResourceFile.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.en-US.resources"); // create resource file CreateTempFile(resourceFile); // assert manifest resource name Assert.AreEqual(resources.Prefix + "." + "ResourceFile.en-US.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); } #endregion Public Instance Methods #region Private Instance Methods private void PerformDependentResxTests(VbcTask vbcTask, ResourceFileSet resources) { // holds the path to the resource file string resourceFile = null; // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "ResourceFile.resx"); // create resource file CreateTempFile(resourceFile); // create dependent file TempFile.CreateWithContents(_sourceCodeWithNamespace, Path.Combine( resources.BaseDirectory.FullName, "ResourceFile." + vbcTask.Extension)); // assert manifest resource name Assert.AreEqual(vbcTask.RootNamespace + ".ResourceTest.HelloWorld.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "ResourceFile.resx"); // create resource file CreateTempFile(resourceFile); // create dependent file TempFile.CreateWithContents(_sourceCode, Path.Combine( resources.BaseDirectory.FullName, "ResourceFile." + vbcTask.Extension)); // assert manifest resource name Assert.AreEqual(vbcTask.RootNamespace + ".HelloWorld.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "ResourceFile.en-US.resx"); // create resource file CreateTempFile(resourceFile); // create dependent file TempFile.CreateWithContents(_sourceCodeWithNamespace, Path.Combine( resources.BaseDirectory.FullName, "ResourceFile." + vbcTask.Extension)); // assert manifest resource name Assert.AreEqual(vbcTask.RootNamespace + ".ResourceTest.HelloWorld.en-US.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "ResourceFile.en-US.resx"); // create resource file CreateTempFile(resourceFile); // create dependent file TempFile.CreateWithContents(_sourceCode, Path.Combine( resources.BaseDirectory.FullName, "ResourceFile." + vbcTask.Extension)); // assert manifest resource name Assert.AreEqual(vbcTask.RootNamespace + ".HelloWorld.en-US.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.resx"); // create resource file CreateTempFile(resourceFile); // create dependent file TempFile.CreateWithContents(_sourceCodeWithNamespace, Path.Combine( resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile." + vbcTask.Extension)); // assert manifest resource name Assert.AreEqual(vbcTask.RootNamespace + ".ResourceTest.HelloWorld.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.resx"); // create resource file CreateTempFile(resourceFile); // create dependent file TempFile.CreateWithContents(_sourceCode, Path.Combine( resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile." + vbcTask.Extension)); // assert manifest resource name Assert.AreEqual(vbcTask.RootNamespace + ".HelloWorld.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.en-US.resx"); // create resource file CreateTempFile(resourceFile); // create dependent file TempFile.CreateWithContents(_sourceCodeWithNamespace, Path.Combine( resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile." + vbcTask.Extension)); // assert manifest resource name Assert.AreEqual(vbcTask.RootNamespace + ".ResourceTest.HelloWorld.en-US.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.en-US.resx"); // create resource file CreateTempFile(resourceFile); // create dependent file TempFile.CreateWithContents(_sourceCode, Path.Combine( resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile." + vbcTask.Extension)); // assert manifest resource name Assert.AreEqual(vbcTask.RootNamespace + ".HelloWorld.en-US.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.en-US.dunno.en-US.resx"); // create resource file CreateTempFile(resourceFile); // create dependent file TempFile.CreateWithContents(_sourceCodeWithNamespace, Path.Combine( resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.en-US.dunno." + vbcTask.Extension)); // assert manifest resource name Assert.AreEqual(vbcTask.RootNamespace + ".ResourceTest.HelloWorld.en-US.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); // initialize resource file resourceFile = Path.Combine(resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.en-US.dunno.en-US.resx"); // create resource file CreateTempFile(resourceFile); // create dependent file TempFile.CreateWithContents(_sourceCode, Path.Combine( resources.BaseDirectory.FullName, "SubDir" + Path.DirectorySeparatorChar + "ResourceFile.en-US.dunno." + vbcTask.Extension)); // assert manifest resource name Assert.AreEqual(vbcTask.RootNamespace + ".HelloWorld.en-US.resources", vbcTask.GetManifestResourceName(resources, resourceFile)); } private string FormatBuildFile(string attributes) { return string.Format(CultureInfo.InvariantCulture, _format, Path.GetFileName(_sourceFileName), Path.GetDirectoryName(_sourceFileName), attributes); } #endregion Private Instance Methods /// /// Unit tests for FileParser /// [TestFixture] public class TestResourceLinkage { /// /// Uses a representative sampling of classname inputs to verify that the classname line can be found /// [Test] public void TestFindClassname() { // Positive test cases - classname should be found VerifyFindClassname("Public Abstract Class CompilerBase\r\n{} \r\n}", "CompilerBase"); VerifyFindClassname("Public Abstract Class Conference \r\n{}", "Conference"); // Negative test cases - no classname should be found VerifyFindClassname("' this is some Class here\r\n", ""); } /// /// Parses the input, ensuring the class name is found /// public void VerifyFindClassname( string input, string expectedClassname ) { VbcTask vbTask = new VbcTask(); StringReader reader = new StringReader( input ); CompilerBase.ResourceLinkage linkage = vbTask.PerformSearchForResourceLinkage( reader ); Assert.IsNotNull(linkage, "no resourcelinkage found for " + input); Assert.AreEqual(expectedClassname, linkage.ClassName); } } } }