// 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 CscTaskTest : 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 {
static void Main() {
System.Console.WriteLine(""Hello World using C#"");
}
}";
private const string _sourceCodeWithNamespace = @"
namespace ResourceTest {
public class HelloWorld {
static void Main() {
System.Console.WriteLine(""Hello World using C#"");
}
}
}";
#endregion Private Static Fields
#region Override implementation of BuildTestBase
[SetUp]
protected override void SetUp() {
base.SetUp();
_sourceFileName = Path.Combine(TempDirName, "HelloWorld.cs");
TempFile.CreateWithContents(_sourceCode, _sourceFileName);
}
#endregion Override implementation of BuildTestBase
#region Public Instance Methods
///
/// Test to make sure debug option works.
///
[Test]
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]
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]
public void Test_Define() {
string sourceCode = @"
public class HelloWorld {
#if CONSOLE
static void Main() {
#else
public void Whatever () {
#endif
#if !ABC
SomeError
#endif
System.Console.WriteLine(""Hello World using C#"");
}
}";
TempFile.CreateWithContents(sourceCode, _sourceFileName);
RunBuild(FormatBuildFile("define='CONSOLE,ABC'"));
}
[Test]
[ExpectedException(typeof(BuildException))]
public void Test_ManifestResourceName_NonExistingResource() {
CscTask cscTask = new CscTask();
cscTask.Project = CreateEmptyProject();
ResourceFileSet resources = new ResourceFileSet();
resources.BaseDirectory = TempDirectory;
resources.DynamicPrefix = true;
cscTask.GetManifestResourceName(resources, "I_dont_exist.txt");
}
[Test]
public void Test_ManifestResourceName_Resx_StandAlone_DynamicPrefix() {
CscTask cscTask = new CscTask();
cscTask.Project = CreateEmptyProject();
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",
cscTask.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",
cscTask.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",
cscTask.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",
cscTask.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",
cscTask.GetManifestResourceName(resources, resourceFile));
}
[Test]
public void Test_ManifestResourceName_Resx_StandAlone_DynamicPrefix_With_Prefix() {
CscTask cscTask = new CscTask();
cscTask.Project = CreateEmptyProject();
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",
cscTask.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",
cscTask.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", cscTask.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", cscTask.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", cscTask.GetManifestResourceName(
resources, resourceFile));
}
[Test]
public void Test_ManifestResourceName_Resx_StandAlone_Prefix() {
CscTask cscTask = new CscTask();
cscTask.Project = CreateEmptyProject();
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",
cscTask.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",
cscTask.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",
cscTask.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",
cscTask.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",
cscTask.GetManifestResourceName(resources, resourceFile));
}
[Test]
public void Test_ManifestResourceName_Resx() {
CscTask cscTask = new CscTask();
cscTask.Project = CreateEmptyProject();
ResourceFileSet resources = new ResourceFileSet();
resources.BaseDirectory = TempDirectory;
resources.DynamicPrefix = false;
PerformDependentResxTests(cscTask, resources);
}
[Test]
public void Test_ManifestResourceName_Resx_DynamicPrefix() {
CscTask cscTask = new CscTask();
cscTask.Project = CreateEmptyProject();
ResourceFileSet resources = new ResourceFileSet();
resources.BaseDirectory = TempDirectory;
resources.DynamicPrefix = true;
PerformDependentResxTests(cscTask, resources);
}
[Test]
public void Test_ManifestResourceName_Resx_Prefix_DynamicPrefix() {
CscTask cscTask = new CscTask();
cscTask.Project = CreateEmptyProject();
ResourceFileSet resources = new ResourceFileSet();
resources.BaseDirectory = TempDirectory;
resources.Prefix = "TestNamespace";
resources.DynamicPrefix = true;
// prefix should be ignored for resx files
PerformDependentResxTests(cscTask, resources);
}
[Test]
public void Test_ManifestResourceName_Resx_Prefix() {
CscTask cscTask = new CscTask();
cscTask.Project = CreateEmptyProject();
ResourceFileSet resources = new ResourceFileSet();
resources.BaseDirectory = TempDirectory;
resources.Prefix = "TestNamespace";
resources.DynamicPrefix = false;
// prefix should be ignored for resx files
PerformDependentResxTests(cscTask, resources);
}
[Test]
public void Test_ManifestResourceName_NonResx_DynamicPrefix() {
CscTask cscTask = new CscTask();
cscTask.Project = CreateEmptyProject();
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",
cscTask.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",
cscTask.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",
cscTask.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",
cscTask.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",
cscTask.GetManifestResourceName(resources, resourceFile));
}
[Test]
public void Test_ManifestResourceName_NonResx_Prefix_With_DynamicPrefix() {
CscTask cscTask = new CscTask();
cscTask.Project = CreateEmptyProject();
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",
cscTask.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",
cscTask.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",
cscTask.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",
cscTask.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", cscTask.GetManifestResourceName(
resources, resourceFile));
}
[Test]
public void Test_ManifestResourceName_NonResx_Prefix() {
CscTask cscTask = new CscTask();
cscTask.Project = CreateEmptyProject();
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",
cscTask.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",
cscTask.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",
cscTask.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",
cscTask.GetManifestResourceName(resources, resourceFile));
}
[Test]
public void Test_ManifestResourceName_CompiledResource_DynamicPrefix() {
CscTask cscTask = new CscTask();
cscTask.Project = CreateEmptyProject();
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",
cscTask.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",
cscTask.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",
cscTask.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",
cscTask.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",
cscTask.GetManifestResourceName(resources, resourceFile));
}
[Test]
public void Test_ManifestResourceName_CompiledResource_Prefix_With_DynamicPrefix() {
CscTask cscTask = new CscTask();
cscTask.Project = CreateEmptyProject();
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",
cscTask.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",
cscTask.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",
cscTask.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",
cscTask.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", cscTask.GetManifestResourceName(
resources, resourceFile));
}
[Test]
public void Test_ManifestResourceName_CompiledResource_Prefix() {
CscTask cscTask = new CscTask();
cscTask.Project = CreateEmptyProject();
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",
cscTask.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",
cscTask.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",
cscTask.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",
cscTask.GetManifestResourceName(resources, resourceFile));
}
#endregion Public Instance Methods
#region Private Instance Methods
private void PerformDependentResxTests(CscTask cscTask, 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." + cscTask.Extension));
// assert manifest resource name
Assert.AreEqual("ResourceTest.HelloWorld.resources",
cscTask.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." + cscTask.Extension));
// assert manifest resource name
Assert.AreEqual("HelloWorld.resources",
cscTask.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." + cscTask.Extension));
// assert manifest resource name
Assert.AreEqual("ResourceTest.HelloWorld.en-US.resources",
cscTask.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." + cscTask.Extension));
// assert manifest resource name
Assert.AreEqual("HelloWorld.en-US.resources",
cscTask.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." + cscTask.Extension));
// assert manifest resource name
Assert.AreEqual("ResourceTest.HelloWorld.resources",
cscTask.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." + cscTask.Extension));
// assert manifest resource name
Assert.AreEqual("HelloWorld.resources",
cscTask.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." + cscTask.Extension));
// assert manifest resource name
Assert.AreEqual("ResourceTest.HelloWorld.en-US.resources",
cscTask.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." + cscTask.Extension));
// assert manifest resource name
Assert.AreEqual("HelloWorld.en-US.resources",
cscTask.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." + cscTask.Extension));
// assert manifest resource name
Assert.AreEqual("ResourceTest.HelloWorld.en-US.resources",
cscTask.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." + cscTask.Extension));
// assert manifest resource name
Assert.AreEqual("HelloWorld.en-US.resources",
cscTask.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 ResourceLinkage
///
[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" );
VerifyFindClassname( "public class AssemblyAttributeEnumerator : IEnumerator {\r\n", "AssemblyAttributeEnumerator" );
VerifyFindClassname( "internal class FolderCollection : IFolderCollection\r\n{}", "FolderCollection" );
VerifyFindClassname( "class InstallTool\r\n{}", "InstallTool" );
VerifyFindClassname( "internal abstract class FSObject\r\n{}", "FSObject" );
VerifyFindClassname( "private class Enumerator : IEnumerator, ILevelCollectionEnumerator\r\n{}", "Enumerator" );
VerifyFindClassname( "private class Enumerator: IEnumerator, ILevelCollectionEnumerator\r\n{}", "Enumerator" );
VerifyFindClassname( "private class Enumerator:IEnumerator, ILevelCollectionEnumerator\r\n{}", "Enumerator" );
VerifyFindClassname( "public sealed class FrameworkInfoDictionary : IDictionary, ICollection, IEnumerable, ICloneable {\r\n}", "FrameworkInfoDictionary" );
VerifyFindClassname( "\tclass InstallTool\r\n{}", "InstallTool" );
VerifyFindClassname( " class InstallTool\r\n{}", "InstallTool" );
VerifyFindClassname( "internal abstract class FSObject\r\n{}", "FSObject" );
// Negative test cases - no classname should be found
VerifyFindClassname( "// this is some class here\r\n", "" );
//VerifyFindClassname( "/* this is some class here\r\n", null );
}
///
/// Parses the input, ensuring the class name is found
///
public void VerifyFindClassname(string input, string expectedClassname) {
CscTask cscTask = new CscTask();
StringReader reader = new StringReader(input);
CompilerBase.ResourceLinkage linkage = cscTask.PerformSearchForResourceLinkage( reader );
Assert.IsNotNull(linkage, "no resourcelinkage found for " + input);
Assert.AreEqual(expectedClassname, linkage.ClassName);
}
}
}
}