diff --git a/src/AddIns/Analysis/UnitTesting/Src/TestFrameworkDescriptor.cs b/src/AddIns/Analysis/UnitTesting/Src/TestFrameworkDescriptor.cs index 74feaf1df6..98075981a8 100644 --- a/src/AddIns/Analysis/UnitTesting/Src/TestFrameworkDescriptor.cs +++ b/src/AddIns/Analysis/UnitTesting/Src/TestFrameworkDescriptor.cs @@ -56,6 +56,14 @@ namespace ICSharpCode.UnitTesting } public bool IsSupportedProject(IProject project) + { + if (IsSupportedProjectFileExtension(project)) { + return IsSupportedByTestFramework(project); + } + return false; + } + + bool IsSupportedProjectFileExtension(IProject project) { string extension = GetProjectFileExtension(project); return IsSupportedProjectFileExtension(extension); @@ -73,5 +81,10 @@ namespace ICSharpCode.UnitTesting { return supportedProjectFileExtensions.Contains(extension); } - } + + bool IsSupportedByTestFramework(IProject project) + { + return TestFramework.IsTestProject(project); + } + } } diff --git a/src/AddIns/Analysis/UnitTesting/Test/Frameworks/RegisteredTestFrameworksTestFixture.cs b/src/AddIns/Analysis/UnitTesting/Test/Frameworks/RegisteredTestFrameworksTestFixture.cs index 302eef16af..742c51002f 100644 --- a/src/AddIns/Analysis/UnitTesting/Test/Frameworks/RegisteredTestFrameworksTestFixture.cs +++ b/src/AddIns/Analysis/UnitTesting/Test/Frameworks/RegisteredTestFrameworksTestFixture.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Project; using ICSharpCode.UnitTesting; using NUnit.Framework; using UnitTesting.Tests.Utils; @@ -55,6 +56,7 @@ namespace UnitTesting.Tests.Frameworks { MockCSharpProject project = new MockCSharpProject(); project.FileName = @"d:\projects\test\MyProj.csproj"; + nunitTestFramework.AddTestProject(project); Assert.AreEqual(nunitTestFramework, testFrameworks.GetTestFrameworkForProject(project)); } @@ -64,6 +66,7 @@ namespace UnitTesting.Tests.Frameworks { MockCSharpProject project = new MockCSharpProject(); project.FileName = @"d:\projects\test\MyProj.vbproj"; + mbUnitTestFramework.AddTestProject(project); Assert.AreEqual(mbUnitTestFramework, testFrameworks.GetTestFrameworkForProject(project)); } @@ -72,6 +75,8 @@ namespace UnitTesting.Tests.Frameworks public void IsTestMethodReturnsFalseForUnknownMbUnitFrameworkTestMethod() { MockMethod method = MockMethod.CreateMockMethodWithoutAnyAttributes(); + IProject project = method.MockDeclaringType.Project; + mbUnitTestFramework.AddTestProject(project); method.MockDeclaringType.MockProjectContent.ProjectAsIProject.FileName = @"d:\projects\test.vbproj"; Assert.IsFalse(testFrameworks.IsTestMethod(method)); @@ -81,6 +86,8 @@ namespace UnitTesting.Tests.Frameworks public void IsTestMethodReturnsTrueForKnownMbUnitFrameworkTestMethod() { MockMethod method = MockMethod.CreateMockMethodWithoutAnyAttributes(); + IProject project = method.MockDeclaringType.Project; + mbUnitTestFramework.AddTestProject(project); method.MockDeclaringType.MockProjectContent.ProjectAsIProject.FileName = @"d:\projects\test.vbproj"; mbUnitTestFramework.AddTestMethod(method); @@ -107,6 +114,7 @@ namespace UnitTesting.Tests.Frameworks public void IsTestClassReturnsFalseForUnknownMbUnitFrameworkTestClass() { MockClass c = MockClass.CreateMockClassWithoutAnyAttributes(); + mbUnitTestFramework.AddTestProject(c.Project); c.MockProjectContent.ProjectAsIProject.FileName = @"d:\projects\test.vbproj"; Assert.IsFalse(testFrameworks.IsTestClass(c)); @@ -116,8 +124,10 @@ namespace UnitTesting.Tests.Frameworks public void IsTestClassReturnsTrueForKnownMbUnitFrameworkTestClass() { MockClass c = MockClass.CreateMockClassWithoutAnyAttributes(); + c.MockProjectContent.ProjectAsIProject.FileName = @"d:\projects\test.vbproj"; + mbUnitTestFramework.AddTestProject(c.Project); mbUnitTestFramework.AddTestClass(c); Assert.IsTrue(testFrameworks.IsTestClass(c)); @@ -177,6 +187,8 @@ namespace UnitTesting.Tests.Frameworks public void CreateTestRunnerReturnsNewTestRunnerFromCorrectTestFramework() { MockCSharpProject project = new MockCSharpProject(); + nunitTestFramework.AddTestProject(project); + mbUnitTestFramework.AddTestProject(project); project.FileName = @"d:\projects\test.csproj"; ITestRunner testRunner = testFrameworks.CreateTestRunner(project); @@ -197,6 +209,8 @@ namespace UnitTesting.Tests.Frameworks public void CreateTestDebuggerReturnsNewTestRunnerFromCorrectTestFramework() { MockCSharpProject project = new MockCSharpProject(); + nunitTestFramework.AddTestProject(project); + mbUnitTestFramework.AddTestProject(project); project.FileName = @"d:\projects\test.csproj"; ITestRunner testDebugger = testFrameworks.CreateTestDebugger(project); @@ -229,6 +243,7 @@ namespace UnitTesting.Tests.Frameworks MockCSharpProject project = new MockCSharpProject(); project.FileName = @"d:\projects\test.csproj"; nunitTestFramework.IsBuildNeededBeforeTestRun = false; + nunitTestFramework.AddTestProject(project); Assert.IsFalse(testFrameworks.IsBuildNeededBeforeTestRunForProject(project)); } diff --git a/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorIgnoresProjectFileExtensionWhitespaceTestFixture.cs b/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorIgnoresProjectFileExtensionWhitespaceTestFixture.cs index da6ee3b2b7..b512fe5d2b 100644 --- a/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorIgnoresProjectFileExtensionWhitespaceTestFixture.cs +++ b/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorIgnoresProjectFileExtensionWhitespaceTestFixture.cs @@ -13,13 +13,18 @@ namespace UnitTesting.Tests.Frameworks public class TestFrameworkDescriptorIgnoresProjectFileExtensionWhitespaceTestFixture { TestFrameworkDescriptor descriptor; + MockTestFramework fakeTestFramework; [SetUp] public void Init() { MockTestFrameworkFactory factory = new MockTestFrameworkFactory(); + fakeTestFramework = new MockTestFramework(); + factory.Add("NUnitTestFramework", fakeTestFramework); + Properties properties = new Properties(); properties["id"] = "nunit"; + properties["class"] = "NUnitTestFramework"; properties["supportedProjects"] = " .csproj; .vbproj "; descriptor = new TestFrameworkDescriptor(properties, factory); @@ -29,6 +34,7 @@ namespace UnitTesting.Tests.Frameworks public void IsSupportedProjectReturnsTrueForCSharpProject() { MockCSharpProject project = new MockCSharpProject(); + fakeTestFramework.AddTestProject(project); project.FileName = @"d:\projects\myproj.csproj"; Assert.IsTrue(descriptor.IsSupportedProject(project)); @@ -38,6 +44,7 @@ namespace UnitTesting.Tests.Frameworks public void IsSupportedProjectReturnsTrueForVBNetProject() { MockCSharpProject project = new MockCSharpProject(); + fakeTestFramework.AddTestProject(project); project.FileName = @"d:\projects\myproj.vbproj"; Assert.IsTrue(descriptor.IsSupportedProject(project)); diff --git a/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsCSharpAndVBNetProjectsTestFixture.cs b/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsCSharpAndVBNetProjectsTestFixture.cs index 4292416748..5f5cf7ae65 100644 --- a/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsCSharpAndVBNetProjectsTestFixture.cs +++ b/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsCSharpAndVBNetProjectsTestFixture.cs @@ -13,14 +13,19 @@ namespace UnitTesting.Tests.Frameworks public class TestFrameworkDescriptorSupportsCSharpAndVBNetProjectsTestFixture { TestFrameworkDescriptor descriptor; + MockTestFramework fakeTestFramework; [SetUp] public void Init() { MockTestFrameworkFactory factory = new MockTestFrameworkFactory(); + fakeTestFramework = new MockTestFramework(); + factory.Add("NUnitTestFramework", fakeTestFramework); + Properties properties = new Properties(); properties["id"] = "nunit"; properties["supportedProjects"] = ".csproj;.vbproj"; + properties["class"] = "NUnitTestFramework"; descriptor = new TestFrameworkDescriptor(properties, factory); } @@ -29,6 +34,7 @@ namespace UnitTesting.Tests.Frameworks public void IsSupportedProjectReturnsTrueForCSharpProject() { MockCSharpProject project = new MockCSharpProject(); + fakeTestFramework.AddTestProject(project); project.FileName = @"d:\projects\myproj.csproj"; Assert.IsTrue(descriptor.IsSupportedProject(project)); @@ -38,6 +44,7 @@ namespace UnitTesting.Tests.Frameworks public void IsSupportedProjectReturnsTrueForVBNetProject() { MockCSharpProject project = new MockCSharpProject(); + fakeTestFramework.AddTestProject(project); project.FileName = @"d:\projects\myproj.vbproj"; Assert.IsTrue(descriptor.IsSupportedProject(project)); diff --git a/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsCSharpProjectsTestFixture.cs b/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsCSharpProjectsTestFixture.cs index 7b62e737fb..0ced1247fc 100644 --- a/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsCSharpProjectsTestFixture.cs +++ b/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsCSharpProjectsTestFixture.cs @@ -13,14 +13,19 @@ namespace UnitTesting.Tests.Frameworks public class TestFrameworkDescriptorSupportsCSharpProjectsTestFixture { TestFrameworkDescriptor descriptor; + MockTestFramework fakeTestFramework; [SetUp] public void Init() { MockTestFrameworkFactory factory = new MockTestFrameworkFactory(); + fakeTestFramework = new MockTestFramework(); + factory.Add("NUnitTestFramework", fakeTestFramework); + Properties properties = new Properties(); properties["id"] = "nunit"; properties["supportedProjects"] = ".csproj"; + properties["class"] = "NUnitTestFramework"; descriptor = new TestFrameworkDescriptor(properties, factory); } @@ -29,6 +34,7 @@ namespace UnitTesting.Tests.Frameworks public void IsSupportedProjectReturnsTrueForCSharpProject() { MockCSharpProject project = new MockCSharpProject(); + fakeTestFramework.AddTestProject(project); project.FileName = @"d:\projects\myproj.csproj"; Assert.IsTrue(descriptor.IsSupportedProject(project)); @@ -38,6 +44,7 @@ namespace UnitTesting.Tests.Frameworks public void IsSupportedProjectReturnsFalseForVBNetProject() { MockCSharpProject project = new MockCSharpProject(); + fakeTestFramework.AddTestProject(project); project.FileName = @"d:\projects\myproj.vbproj"; Assert.IsFalse(descriptor.IsSupportedProject(project)); @@ -53,6 +60,7 @@ namespace UnitTesting.Tests.Frameworks public void IsSupportedProjectReturnsTrueForCSharpProjectFileExtensionInUpperCase() { MockCSharpProject project = new MockCSharpProject(); + fakeTestFramework.AddTestProject(project); project.FileName = @"d:\projects\myproj.CSPROJ"; Assert.IsTrue(descriptor.IsSupportedProject(project)); diff --git a/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsUpperCaseProjectFileExtensionsTestFixture.cs b/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsUpperCaseProjectFileExtensionsTestFixture.cs index c67a5f7ae1..09a69fb223 100644 --- a/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsUpperCaseProjectFileExtensionsTestFixture.cs +++ b/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorSupportsUpperCaseProjectFileExtensionsTestFixture.cs @@ -13,14 +13,19 @@ namespace UnitTesting.Tests.Frameworks public class TestFrameworkDescriptorSupportsUpperCaseProjectFileExtensionsTestFixture { TestFrameworkDescriptor descriptor; + MockTestFramework fakeTestFramework; [SetUp] public void Init() { MockTestFrameworkFactory factory = new MockTestFrameworkFactory(); + fakeTestFramework = new MockTestFramework(); + factory.Add("NUnitTestFramework", fakeTestFramework); + Properties properties = new Properties(); properties["id"] = "nunit"; properties["supportedProjects"] = ".CSPROJ;.VBPROJ"; + properties["class"] = "NUnitTestFramework"; descriptor = new TestFrameworkDescriptor(properties, factory); } @@ -29,6 +34,7 @@ namespace UnitTesting.Tests.Frameworks public void IsSupportedProjectReturnsTrueForCSharpProject() { MockCSharpProject project = new MockCSharpProject(); + fakeTestFramework.AddTestProject(project); project.FileName = @"d:\projects\myproj.csproj"; Assert.IsTrue(descriptor.IsSupportedProject(project)); @@ -38,6 +44,7 @@ namespace UnitTesting.Tests.Frameworks public void IsSupportedProjectReturnsTrueForVBNetProject() { MockCSharpProject project = new MockCSharpProject(); + fakeTestFramework.AddTestProject(project); project.FileName = @"d:\projects\myproj.vbproj"; Assert.IsTrue(descriptor.IsSupportedProject(project)); diff --git a/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorTests.cs b/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorTests.cs new file mode 100644 index 0000000000..212d2bcb33 --- /dev/null +++ b/src/AddIns/Analysis/UnitTesting/Test/Frameworks/TestFrameworkDescriptorTests.cs @@ -0,0 +1,70 @@ +// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) +// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) + +using System; +using ICSharpCode.Core; +using ICSharpCode.UnitTesting; +using NUnit.Framework; +using UnitTesting.Tests.Utils; + +namespace UnitTesting.Tests.Frameworks +{ + [TestFixture] + public class TestFrameworkDescriptorTests + { + TestFrameworkDescriptor descriptor; + MockTestFrameworkFactory fakeTestFrameworkFactory; + MockTestFramework fakeTestFramework; + + void CreateTestFrameworkDescriptorToSupportCSharpProjects() + { + CreateTestFrameworkDescriptorToSupportProjectFileExtensions(".csproj"); + } + + void CreateTestFrameworkDescriptorToSupportProjectFileExtensions(string fileExtensions) + { + Properties properties = new Properties(); + properties["id"] = "nunit"; + properties["class"] = "NUnitTestFramework"; + properties["supportedProjects"] = ".csproj;.vbproj"; + + fakeTestFrameworkFactory = new MockTestFrameworkFactory(); + fakeTestFramework = new MockTestFramework(); + fakeTestFrameworkFactory.Add("NUnitTestFramework", fakeTestFramework); + + descriptor = new TestFrameworkDescriptor(properties, fakeTestFrameworkFactory); + } + + MockCSharpProject CreateCSharpProjectNotSupportedByTestFramework() + { + return new MockCSharpProject(); + } + + MockCSharpProject CreateCSharpProjectSupportedByTestFramework() + { + var project = new MockCSharpProject(); + fakeTestFramework.AddTestProject(project); + return project; + } + + [Test] + public void IsSupportedProject_CSharpProjectIsSupportedByFileExtensionButNotByTestFramework_ReturnsFalse() + { + CreateTestFrameworkDescriptorToSupportCSharpProjects(); + MockCSharpProject project = CreateCSharpProjectNotSupportedByTestFramework(); + bool supported = descriptor.IsSupportedProject(project); + + Assert.IsFalse(supported); + } + + [Test] + public void IsSupportedProject_CSharpProjectIsSupportedByFileExtensionAndByTestFramework_ReturnsTrue() + { + CreateTestFrameworkDescriptorToSupportCSharpProjects(); + MockCSharpProject project = CreateCSharpProjectSupportedByTestFramework(); + bool supported = descriptor.IsSupportedProject(project); + + Assert.IsTrue(supported); + } + } +} diff --git a/src/AddIns/Analysis/UnitTesting/Test/UnitTesting.Tests.csproj b/src/AddIns/Analysis/UnitTesting/Test/UnitTesting.Tests.csproj index 0f235a3bf8..eee1b3d960 100644 --- a/src/AddIns/Analysis/UnitTesting/Test/UnitTesting.Tests.csproj +++ b/src/AddIns/Analysis/UnitTesting/Test/UnitTesting.Tests.csproj @@ -77,6 +77,7 @@ +