diff options
author | Mike Krüger <mkrueger@xamarin.com> | 2013-09-09 15:12:38 +0400 |
---|---|---|
committer | Mike Krüger <mkrueger@xamarin.com> | 2013-09-09 15:12:38 +0400 |
commit | 9c4d8635c092c7c89665db5d1ea4e408a265221c (patch) | |
tree | 0f07113c6864c21940ec79efe9d6fb731b71183f /main/tests/UnitTests/MonoDevelop.CSharpBinding | |
parent | 5e8d0272bda3d9239ab5a8bf9a44bd336b5f9bc4 (diff) |
Fixed 'Bug 14522 - Unit test editor integration does not work for derived classes '
Diffstat (limited to 'main/tests/UnitTests/MonoDevelop.CSharpBinding')
-rw-r--r-- | main/tests/UnitTests/MonoDevelop.CSharpBinding/UnitTesteditorIntegrationTests.cs | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/main/tests/UnitTests/MonoDevelop.CSharpBinding/UnitTesteditorIntegrationTests.cs b/main/tests/UnitTests/MonoDevelop.CSharpBinding/UnitTesteditorIntegrationTests.cs new file mode 100644 index 0000000000..12ac457f93 --- /dev/null +++ b/main/tests/UnitTests/MonoDevelop.CSharpBinding/UnitTesteditorIntegrationTests.cs @@ -0,0 +1,117 @@ +// +// UnitTesteditorIntegrationTests.cs +// +// Author: +// Mike Krüger <mkrueger@xamarin.com> +// +// Copyright (c) 2013 Xamarin Inc. (http://xamarin.com) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +using System; +using System.Collections; + +using MonoDevelop.Ide.Gui; +using System.Collections.Generic; +using Mono.Addins; +using NUnit.Framework; +using MonoDevelop.CSharp; + +namespace MonoDevelop.CSharpBinding.Tests +{ + [TestFixture] + public class UnitTesteditorIntegrationTests : UnitTests.TestBase + { + static UnitTestTextEditorExtension Setup (string input, out TestViewContent content) + { + TestWorkbenchWindow tww = new TestWorkbenchWindow (); + content = new TestViewContent (); + tww.ViewContent = content; + content.ContentName = "a.cs"; + content.GetTextEditorData ().Document.MimeType = "text/x-csharp"; + + Document doc = new Document (tww); + + var text = @"namespace NUnit.Framework { + using System; + class TestFixtureAttribute : Attribute {} + class TestAttribute : Attribute {} +} namespace Test { " + input +"}"; + int endPos = text.IndexOf ('$'); + if (endPos >= 0) + text = text.Substring (0, endPos) + text.Substring (endPos + 1); + + content.Text = text; + content.CursorPosition = System.Math.Max (0, endPos); + + + var compExt = new UnitTestTextEditorExtension (); + compExt.Initialize (doc); + content.Contents.Add (compExt); + + doc.UpdateParseDocument (); + return compExt; + } + + [Test] + public void TestSimple () + { + TestViewContent content; + var ext = Setup (@"using NUnit.Framework; +[TestFixture] +class Test +{ + [Test] + public void MyTest () {} +} +", out content); + var tests = ext.GatherUnitTests (); + Assert.IsNotNull (tests); + Assert.AreEqual (2, tests.Count); + } + + /// <summary> + /// Bug 14522 - Unit test editor integration does not work for derived classes + /// </summary> + [Test] + public void TestBug14522 () + { + TestViewContent content; + var ext = Setup (@"using NUnit.Framework; +[TestFixture] +abstract class MyBase +{ +} + +public class Derived : MyBase +{ + [Test] + public void MyTest () {} +} +", out content); + var tests = ext.GatherUnitTests (); + Assert.IsNotNull (tests); + Assert.AreEqual (2, tests.Count); + + Assert.AreEqual ("Test.Derived", tests [0].UnitTestIdentifier); + Assert.AreEqual ("Test.Derived.MyTest", tests [1].UnitTestIdentifier); + } + } +} + |