diff options
author | Mike Krüger <mkrueger@novell.com> | 2011-06-20 15:31:28 +0400 |
---|---|---|
committer | Mike Krüger <mkrueger@novell.com> | 2011-06-20 15:31:28 +0400 |
commit | 2c88cd62be1e6b422da94123ac86ddc28feea20e (patch) | |
tree | 7b050cea19cd51a242ad20c6fde09aca82105c0f /main/tests | |
parent | 00a9327b0f4bd6f6f32cada241839d6ed34d1aa4 (diff) |
Translated unit tests.
Diffstat (limited to 'main/tests')
12 files changed, 5693 insertions, 5692 deletions
diff --git a/main/tests/UnitTests/Makefile.am b/main/tests/UnitTests/Makefile.am index ca2614ccb0..b603468cfd 100644 --- a/main/tests/UnitTests/Makefile.am +++ b/main/tests/UnitTests/Makefile.am @@ -60,6 +60,18 @@ FILES = \ Mono.TextEditor.Tests/UndoRedoTests.cs \ Mono.TextEditor.Tests/VirtualSpacesTests.cs \ Mono.TextEditor.Tests/ViTests.cs \ + MonoDevelop.CSharpBinding/CodeCompletionAccessibleTests.cs \ + MonoDevelop.CSharpBinding/CodeCompletionBugTests.cs \ + MonoDevelop.CSharpBinding/CodeCompletionCSharp3Tests.cs \ + MonoDevelop.CSharpBinding/CodeCompletionCSharpTests.cs \ + MonoDevelop.CSharpBinding/CodeCompletionOperatorTests.cs \ + MonoDevelop.CSharpBinding/FindMemberVisitorTests.cs \ + MonoDevelop.CSharpBinding/MemberTests.cs \ + MonoDevelop.CSharpBinding/ParameterCompletionTests.cs \ + MonoDevelop.CSharpBinding/ProjectDomTests.cs \ + MonoDevelop.CSharpBinding/TestViewContent.cs \ + MonoDevelop.CSharpBinding/TestWorkbenchWindow.cs \ + MonoDevelop.CSharpBinding/TopLevelTests.cs \ MonoDevelop.Projects.Gui/CompletionListWindowTests.cs \ MonoDevelop.Projects/LocalCopyTests.cs \ MonoDevelop.Projects/MakefileTests.cs \ diff --git a/main/tests/UnitTests/MonoDevelop.CSharpBinding/CodeCompletionAccessibleTests.cs b/main/tests/UnitTests/MonoDevelop.CSharpBinding/CodeCompletionAccessibleTests.cs index d8691742aa..aeb0299f60 100644 --- a/main/tests/UnitTests/MonoDevelop.CSharpBinding/CodeCompletionAccessibleTests.cs +++ b/main/tests/UnitTests/MonoDevelop.CSharpBinding/CodeCompletionAccessibleTests.cs @@ -1,4 +1,4 @@ -//
+// // CodeCompletionAccessibleTests.cs // // Author: @@ -27,226 +27,225 @@ // using System; -using NUnit.Framework;
-using MonoDevelop.Ide.Gui;
+using NUnit.Framework; +using MonoDevelop.Ide.Gui; using MonoDevelop.Projects; using MonoDevelop.Core; -using MonoDevelop.Ide.CodeCompletion;
-using MonoDevelop.Ide.Gui.Content;
-using MonoDevelop.Projects.Dom.Parser;
+using MonoDevelop.Ide.CodeCompletion; +using MonoDevelop.Ide.Gui.Content; namespace MonoDevelop.CSharpBinding.Tests { [TestFixture()] public class CodeCompletionAccessibleTests: UnitTests.TestBase - {
- static string testClass = @"
+ { + static string testClass = @" using System; -public class TestClass
-{
- public int PubField;
- public int PubProperty { get; set; }
- public void PubMethod () { }
-
- protected int ProtField;
- protected int ProtProperty { get; set; }
- protected void ProtMethod () { }
-
- internal protected int ProtOrInternalField;
- internal protected int ProtOrInternalProperty { get; set; }
- internal protected void ProtOrInternalMethod () { }
-
- protected internal int ProtAndInternalField;
- protected internal int ProtAndInternalProperty { get; set; }
- protected internal void ProtAndInternalMethod () { }
-
- internal int InternalField;
- internal int InternalProperty { get; set; }
- internal void InternalMethod () { }
-
- private int PrivField;
- private int PrivProperty { get; set; }
- private void PrivMethod () { }
-
- public static int PubStaticField;
- public static int PubStaticProperty { get; set; }
- public static void PubStaticMethod () { }
-
- protected static int ProtStaticField;
- protected static int ProtStaticProperty { get; set; }
- protected static void ProtStaticMethod () { }
-
- private static int PrivStaticField;
- private static int PrivStaticProperty { get; set; }
- private static void PrivStaticMethod () { }
+public class TestClass +{ + public int PubField; + public int PubProperty { get; set; } + public void PubMethod () { } + + protected int ProtField; + protected int ProtProperty { get; set; } + protected void ProtMethod () { } + + internal protected int ProtOrInternalField; + internal protected int ProtOrInternalProperty { get; set; } + internal protected void ProtOrInternalMethod () { } + + protected internal int ProtAndInternalField; + protected internal int ProtAndInternalProperty { get; set; } + protected internal void ProtAndInternalMethod () { } + + internal int InternalField; + internal int InternalProperty { get; set; } + internal void InternalMethod () { } + + private int PrivField; + private int PrivProperty { get; set; } + private void PrivMethod () { } + + public static int PubStaticField; + public static int PubStaticProperty { get; set; } + public static void PubStaticMethod () { } + + protected static int ProtStaticField; + protected static int ProtStaticProperty { get; set; } + protected static void ProtStaticMethod () { } + + private static int PrivStaticField; + private static int PrivStaticProperty { get; set; } + private static void PrivStaticMethod () { } "; [Test()] public void TestNonStaticClassAccess () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (testClass +
-@"
- void TestMethod ()
- {
- $this.$
- }
-}");
- Assert.IsNotNull (provider, "provider == null");
-
- CodeCompletionBugTests.CheckProtectedObjectMembers (provider); // 5 from System.Object
- Assert.IsNotNull (provider.Find ("PubField"));
- Assert.IsNotNull (provider.Find ("PubProperty"));
- Assert.IsNotNull (provider.Find ("PubMethod"));
-
- Assert.IsNotNull (provider.Find ("ProtField"));
- Assert.IsNotNull (provider.Find ("ProtProperty"));
- Assert.IsNotNull (provider.Find ("ProtMethod"));
-
- Assert.IsNotNull (provider.Find ("PrivField"));
- Assert.IsNotNull (provider.Find ("PrivProperty"));
- Assert.IsNotNull (provider.Find ("PrivMethod"));
- }
-
- [Test()]
- public void TestInternalAccess ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (testClass +
-@"
- void TestMethod ()
- {
- $this.$
- }
-}");
- Assert.IsNotNull (provider, "provider == null");
-
- Assert.IsNotNull (provider.Find ("InternalField"));
- Assert.IsNotNull (provider.Find ("InternalProperty"));
- Assert.IsNotNull (provider.Find ("InternalMethod"));
-
- Assert.IsNotNull (provider.Find ("ProtAndInternalField"));
- Assert.IsNotNull (provider.Find ("ProtAndInternalProperty"));
- Assert.IsNotNull (provider.Find ("ProtAndInternalMethod"));
-
- Assert.IsNotNull (provider.Find ("ProtOrInternalField"));
- Assert.IsNotNull (provider.Find ("ProtOrInternalProperty"));
- Assert.IsNotNull (provider.Find ("ProtOrInternalMethod"));
- }
-
- [Test()]
- public void TestInternalAccessOutside ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (testClass +
-@"
-}
-class Test2 {
- void TestMethod ()
- {
- TestClass tc;
- $tc.$
- }
-}");
- Assert.IsNotNull (provider, "provider == null");
-
- Assert.IsNotNull (provider.Find ("InternalField"), "InternalField == null");
- Assert.IsNotNull (provider.Find ("InternalProperty"), "InternalProperty == null");
- Assert.IsNotNull (provider.Find ("InternalMethod"), "InternalMethod == null");
-
- Assert.IsNotNull (provider.Find ("ProtOrInternalField"), "ProtOrInternalField == null");
- Assert.IsNotNull (provider.Find ("ProtOrInternalProperty"), "ProtOrInternalProperty == null");
- Assert.IsNotNull (provider.Find ("ProtOrInternalMethod"), "ProtOrInternalMethod == null");
- }
-
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider (testClass + +@" + void TestMethod () + { + $this.$ + } +}"); + Assert.IsNotNull (provider, "provider == null"); + + CodeCompletionBugTests.CheckProtectedObjectMembers (provider); // 5 from System.Object + Assert.IsNotNull (provider.Find ("PubField")); + Assert.IsNotNull (provider.Find ("PubProperty")); + Assert.IsNotNull (provider.Find ("PubMethod")); + + Assert.IsNotNull (provider.Find ("ProtField")); + Assert.IsNotNull (provider.Find ("ProtProperty")); + Assert.IsNotNull (provider.Find ("ProtMethod")); + + Assert.IsNotNull (provider.Find ("PrivField")); + Assert.IsNotNull (provider.Find ("PrivProperty")); + Assert.IsNotNull (provider.Find ("PrivMethod")); + } + + [Test()] + public void TestInternalAccess () + { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider (testClass + +@" + void TestMethod () + { + $this.$ + } +}"); + Assert.IsNotNull (provider, "provider == null"); + + Assert.IsNotNull (provider.Find ("InternalField")); + Assert.IsNotNull (provider.Find ("InternalProperty")); + Assert.IsNotNull (provider.Find ("InternalMethod")); + + Assert.IsNotNull (provider.Find ("ProtAndInternalField")); + Assert.IsNotNull (provider.Find ("ProtAndInternalProperty")); + Assert.IsNotNull (provider.Find ("ProtAndInternalMethod")); + + Assert.IsNotNull (provider.Find ("ProtOrInternalField")); + Assert.IsNotNull (provider.Find ("ProtOrInternalProperty")); + Assert.IsNotNull (provider.Find ("ProtOrInternalMethod")); + } + + [Test()] + public void TestInternalAccessOutside () + { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider (testClass + +@" +} +class Test2 { + void TestMethod () + { + TestClass tc; + $tc.$ + } +}"); + Assert.IsNotNull (provider, "provider == null"); + + Assert.IsNotNull (provider.Find ("InternalField"), "InternalField == null"); + Assert.IsNotNull (provider.Find ("InternalProperty"), "InternalProperty == null"); + Assert.IsNotNull (provider.Find ("InternalMethod"), "InternalMethod == null"); + + Assert.IsNotNull (provider.Find ("ProtOrInternalField"), "ProtOrInternalField == null"); + Assert.IsNotNull (provider.Find ("ProtOrInternalProperty"), "ProtOrInternalProperty == null"); + Assert.IsNotNull (provider.Find ("ProtOrInternalMethod"), "ProtOrInternalMethod == null"); + } + [Test()] public void TestStaticClassAccess () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (testClass +
-@"
- void TestMethod ()
- {
- $TestClass.$
- }
-}");
- Assert.IsNotNull (provider, "provider == null");
-
- CodeCompletionBugTests.CheckStaticObjectMembers (provider); // 2 from System.Object
- Assert.IsNotNull (provider.Find ("PubStaticField"));
- Assert.IsNotNull (provider.Find ("PubStaticProperty"));
- Assert.IsNotNull (provider.Find ("PubStaticMethod"));
-
- Assert.IsNotNull (provider.Find ("ProtStaticField"));
- Assert.IsNotNull (provider.Find ("ProtStaticProperty"));
- Assert.IsNotNull (provider.Find ("ProtStaticMethod"));
-
- Assert.IsNotNull (provider.Find ("PrivStaticField"));
- Assert.IsNotNull (provider.Find ("PrivStaticProperty"));
- Assert.IsNotNull (provider.Find ("PrivStaticMethod"));
- }
-
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider (testClass + +@" + void TestMethod () + { + $TestClass.$ + } +}"); + Assert.IsNotNull (provider, "provider == null"); + + CodeCompletionBugTests.CheckStaticObjectMembers (provider); // 2 from System.Object + Assert.IsNotNull (provider.Find ("PubStaticField")); + Assert.IsNotNull (provider.Find ("PubStaticProperty")); + Assert.IsNotNull (provider.Find ("PubStaticMethod")); + + Assert.IsNotNull (provider.Find ("ProtStaticField")); + Assert.IsNotNull (provider.Find ("ProtStaticProperty")); + Assert.IsNotNull (provider.Find ("ProtStaticMethod")); + + Assert.IsNotNull (provider.Find ("PrivStaticField")); + Assert.IsNotNull (provider.Find ("PrivStaticProperty")); + Assert.IsNotNull (provider.Find ("PrivStaticMethod")); + } + [Test()] public void TestExternalNonStaticClassAccess () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (testClass +
-@"}
-class AClass {
- void TestMethod ()
- {
- TestClass c;
- $c.$
- }
-}");
- Assert.IsNotNull (provider, "provider == null");
-
- CodeCompletionBugTests.CheckObjectMembers (provider);
- Assert.IsNotNull (provider.Find ("PubField"));
- Assert.IsNotNull (provider.Find ("PubProperty"));
- Assert.IsNotNull (provider.Find ("PubMethod"));
- }
-
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider (testClass + +@"} +class AClass { + void TestMethod () + { + TestClass c; + $c.$ + } +}"); + Assert.IsNotNull (provider, "provider == null"); + + CodeCompletionBugTests.CheckObjectMembers (provider); + Assert.IsNotNull (provider.Find ("PubField")); + Assert.IsNotNull (provider.Find ("PubProperty")); + Assert.IsNotNull (provider.Find ("PubMethod")); + } + [Test()] public void TestExternalStaticClassAccess () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (testClass +
-@"}
-class AClass {
- void TestMethod ()
- {
- $TestClass.$
- }
-}");
- Assert.IsNotNull (provider, "provider == null");
-
- CodeCompletionBugTests.CheckStaticObjectMembers (provider); // 2 members
- Assert.IsNotNull (provider.Find ("PubStaticField"));
- Assert.IsNotNull (provider.Find ("PubStaticProperty"));
- Assert.IsNotNull (provider.Find ("PubStaticMethod"));
- }
-
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider (testClass + +@"} +class AClass { + void TestMethod () + { + $TestClass.$ + } +}"); + Assert.IsNotNull (provider, "provider == null"); + + CodeCompletionBugTests.CheckStaticObjectMembers (provider); // 2 members + Assert.IsNotNull (provider.Find ("PubStaticField")); + Assert.IsNotNull (provider.Find ("PubStaticProperty")); + Assert.IsNotNull (provider.Find ("PubStaticMethod")); + } + [Test()] public void TestExternalNonStaticSubclassAccess () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (testClass +
-@"}
-class AClass : TestClass {
- void TestMethod ()
- {
- $this.$
- }
-}");
- Assert.IsNotNull (provider, "provider == null");
-
- CodeCompletionBugTests.CheckProtectedObjectMembers (provider);
- Assert.IsNotNull (provider.Find ("PubField"));
- Assert.IsNotNull (provider.Find ("PubProperty"));
- Assert.IsNotNull (provider.Find ("PubMethod"));
- Assert.IsNotNull (provider.Find ("ProtField"));
- Assert.IsNotNull (provider.Find ("ProtProperty"));
- Assert.IsNotNull (provider.Find ("ProtMethod"));
- }
-
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider (testClass + +@"} +class AClass : TestClass { + void TestMethod () + { + $this.$ + } +}"); + Assert.IsNotNull (provider, "provider == null"); + + CodeCompletionBugTests.CheckProtectedObjectMembers (provider); + Assert.IsNotNull (provider.Find ("PubField")); + Assert.IsNotNull (provider.Find ("PubProperty")); + Assert.IsNotNull (provider.Find ("PubMethod")); + Assert.IsNotNull (provider.Find ("ProtField")); + Assert.IsNotNull (provider.Find ("ProtProperty")); + Assert.IsNotNull (provider.Find ("ProtMethod")); + } + [Test()] public void TestThisProtectedMemberAccess () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( @" class Test { @@ -261,17 +260,17 @@ class Test2 : Test { $this.$ } -}");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("Test"), "method 'Test' not found.");
- }
-
+}"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("Test"), "method 'Test' not found."); + } + [Test()] public void TestBasePrivateMemberAccess () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
-testClass + @"
-}
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( +testClass + @" +} class Test : TestClass { @@ -279,17 +278,17 @@ class Test : TestClass { $base.$ } -}");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNull (provider.Find ("PrivField"), "field 'PrivField' found, but shouldn't.");
- Assert.IsNull (provider.Find ("PrivProperty"), "property 'PrivProperty' found, but shouldn't.");
- Assert.IsNull (provider.Find ("PrivMethod"), "method 'PrivMethod' found, but shouldn't.");
-
- }
+}"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNull (provider.Find ("PrivField"), "field 'PrivField' found, but shouldn't."); + Assert.IsNull (provider.Find ("PrivProperty"), "property 'PrivProperty' found, but shouldn't."); + Assert.IsNull (provider.Find ("PrivMethod"), "method 'PrivMethod' found, but shouldn't."); + + } [Test()] public void TestBaseProtectedMemberAccess () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( @" class Test { @@ -304,14 +303,14 @@ class Test2 : Test { $base.$ } -}");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("Test"), "method 'Test' not found.");
- }
+}"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("Test"), "method 'Test' not found."); + } [Test()] public void TestBasePublicMemberAccess () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( testClass + @" class Test : TestClass { @@ -319,18 +318,18 @@ class Test : TestClass { $base.$ } -} }");
- Assert.IsNotNull (provider, "provider == null");
- CodeCompletionBugTests.CheckObjectMembers (provider);
- Assert.IsNotNull (provider.Find ("PubField"), "field 'PubField' not found.");
- Assert.IsNotNull (provider.Find ("PubProperty"), "property 'PubProperty' not found.");
- Assert.IsNotNull (provider.Find ("PubMethod"), "method 'PubMethod' not found.");
-
- }
+} }"); + Assert.IsNotNull (provider, "provider == null"); + CodeCompletionBugTests.CheckObjectMembers (provider); + Assert.IsNotNull (provider.Find ("PubField"), "field 'PubField' not found."); + Assert.IsNotNull (provider.Find ("PubProperty"), "property 'PubProperty' not found."); + Assert.IsNotNull (provider.Find ("PubMethod"), "method 'PubMethod' not found."); + + } [Test()] public void TestProtectedMemberAccess2 () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( @" class Test { @@ -345,29 +344,29 @@ class Test2 { $(new Test ()).$ } -}");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNull (provider.Find ("Test"), "method 'Test' found, but shouldn't.");
- }
-
+}"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNull (provider.Find ("Test"), "method 'Test' found, but shouldn't."); + } + [Test()] public void TestGenericParameter () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider ( @" class Foo<T> { $public $ } -");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("T"), "generic parameter 'T' not found");
- }
-
+"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("T"), "generic parameter 'T' not found"); + } + [Test()] public void TestGenericParameterB () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider ( @" class Foo<T> { @@ -376,16 +375,16 @@ class Foo<T> $ } } -");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("T"), "generic parameter 'T' not found");
- Assert.IsNotNull (provider.Find ("TValue"), "generic parameter 'TValue' found");
- }
-
+"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("T"), "generic parameter 'T' not found"); + Assert.IsNotNull (provider.Find ("TValue"), "generic parameter 'TValue' found"); + } + [Test()] public void TestGenericParameterC () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider ( @" class Foo<T> { @@ -394,616 +393,616 @@ class Foo<T> $ } } -");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNull (provider.Find ("T"), "generic parameter 'T' found, but shouldn't");
- Assert.IsNotNull (provider.Find ("TValue"), "generic parameter 'TValue' not found");
- }
-
- [Test()]
- public void TestInheritedInnerClasses ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
-@"
-public class A {
- public class B {
- public void MethodB ()
- {
- }
- }
-}
-public class C : A
-{
- public override void MethodA (B something)
- {
- $something.$
- }
-}");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("MethodB"), "method 'MethodB' not found");
- }
-
- [Test()]
- public void TestNamespaceAccess ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
-@"
-namespace Foo.Bar {
- class B
- {
- }
-}
-
-namespace Foo {
- class Test
- {
- void TestMethod ()
- {
- $Bar.$
- }
- }
-}");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("B"), "class 'B' not found");
- }
-
- [Test()]
- public void TestNamespaceAccess2 ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
-@"
-namespace Foo.Bar {
- class B
- {
- }
-}
-
-namespace FooBar {
- using Foo;
- class Test
- {
- void TestMethod ()
- {
- $Bar.$
- }
- }
-}");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNull (provider.Find ("B"), "class 'B' found, but shouldn't");
- }
-
-
- [Test()]
- public void TestNamespaceAccess3 ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (
-@"
-namespace SomeTest.TestNS {
- class TestClass
- {
-
- }
-}
-
-namespace A {
- using SomeTest;
-
- public class Program2
- {
- public void Main ()
- {
- $$
- }
- }
-}
-");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNull (provider.Find ("TestNS"), "namespace 'TestNS' found, but shouldn't");
- }
-
- [Test()]
- public void TestNamespaceAccess4 ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (
-@"
-namespace SomeTest.TestNS {
- class TestClass
- {
-
- }
-}
-
-namespace SomeTest {
-
- public class Program2
- {
- public void Main ()
- {
- $$
- }
- }
-}
-");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("TestNS"), "namespace 'TestNS' not found");
- }
-
- [Test()]
- public void TestHideClassesWithPrivateConstructor ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
-@"
-class A
-{
-}
-
-class TestClass : A
-{
- TestClass ()
- {
- }
-
- void TestMe ()
- {
- $A a = new $
- }
-}
-");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("A"), "class 'A' not found");
- Assert.IsNull (provider.Find ("TestClass"), "class 'TestClass' found, but shouldn't.");
- }
-
- [Test()]
- public void TestAttributePropertyAccess ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
-@"
-public class TestAttribute : System.Attribute
-{
- public int MyIntProperty {
- get;
- set;
- }
-
- public string MyStringProperty {
- get;
- set;
- }
-}
-
-[Test($M$)]
-public class Program
-{
-
-}
-");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("MyIntProperty"), "property 'MyIntProperty' not found");
- Assert.IsNotNull (provider.Find ("MyStringProperty"), "property 'MyStringProperty' not found");
- }
-
- [Test()]
- public void TestInnerClassEnumAccess ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
-@"
-public class TestInnerEnum
-{
- enum InnerEnum { A, B, C }
-
- public class InnerClass
- {
- void TestMethod (InnerEnum e)
- {
- $e = InnerEnum.$
- }
- }
-}");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("A"), "field 'A' not found");
- Assert.IsNotNull (provider.Find ("B"), "field 'B' not found");
- Assert.IsNotNull (provider.Find ("C"), "field 'C' not found");
- }
-
- [Test()]
- public void TestInnerClassPrivateOuterMembersAccess ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
-@"
-public class TestClass
-{
- void TestMethod ()
- {
- }
-
- public class InnerClass
- {
- void TestMethod ()
- {
- TestClass tc = new TestClass ();
- $tc.$
- }
- }
-}");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found");
- }
-
- [Test()]
- public void TestExplicitGenericMethodParameter ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
-@"
-public class TestClass
-{
- public static T TestMethod<T> ()
- {
- return default(T);
- }
-}
-
-public class Test
-{
- public void TestMethod ()
- {
- $TestClass.TestMethod<Test> ().$
- }
-}
-");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found");
- }
-
- [Test()]
- public void TestImplicitGenericMethodParameter ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
-@"
-public class TestClass
-{
- public static T TestMethod<T> (T t)
- {
- return t;
- }
-}
-
-public class Test
-{
- public void TestMethod ()
- {
- $TestClass.TestMethod (this).$
- }
-}
- ");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found");
- }
-
- [Test()]
- public void TestImplicitGenericMethodParameterComplex ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
-@"
-using System;
-
-class SomeTemplate<T>
-{
- public T Val { get; set; }
- public SomeTemplate (T val)
- {
- this.Val = val;
- }
-}
-
-class Test
-{
- public T GetVal<T> (SomeTemplate<T> t)
- {
- return t.Val;
- }
-
- public void TestMethod ()
- {
- SomeTemplate<Test> c = SomeTemplate<Test> (this);
- var x = GetVal (c);
- $x.$
-
- }
-}");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found");
- }
-
- [Test()]
- public void TestImplicitGenericArrayMethodParameter ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
-@"
-public class TestClass
-{
- public static T[] Test<T> ()
- {
- return default(T[]);
- }
-}
-
-public class Test
-{
- public void TestMethod ()
- {
- var v = TestClass.Test<Test>();
- $v[0].$
- }
-}
-");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found");
- }
-
- [Test()]
- public void TestExplicitResolving ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
-@"
-interface IMyInterface {
- object this [object i] { get; }
-}
-
-class MyClass<S, T> : IMyInterface
-{
- object IMyInterface.this[object i] {
- get {
- return null;
- }
- }
-
- public S this[T i] {
- get {
- return default(S);
- }
- }
-}
-
-class TestClass
-{
- void TestMethod ()
- {
- MyClass<TestClass, string> myClass = new MyClass<TestClass, string> ();
- $myClass[""test""].$
- }
-}
-");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found");
- }
-
- [Test()]
- public void TestAlias ()
-
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
-@"
-namespace A
-{
- public class MyClass
- {
- public void MyMethod ()
- {
- }
- }
-}
-
-namespace X
-{
- using GG = A.MyClass;
-
- public abstract class I
- {
- protected virtual GG Foo ()
- {
- return null;
- }
- }
-}
-
-namespace X
-{
- public class B : I
- {
- public void A ()
- {
- $Foo ().$
- }
- }
-}");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("MyMethod"), "method 'MyMethod' not found");
- }
-
- [Test()]
- public void TestEnumInnerClass ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
-@"
-using System;
-namespace CaptainHook.Mail
-{
- public class TestClass
- {
- enum ParsingState
- {
- Any,
- Start,
- InMacro,
- InMacroArgumentList,
- InQuotedMacroArgument,
- PlainText
- }
-
- ParsingState state;
-
- public TestClass ()
- {
- $state = $
- }
- }
-}");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNull (provider.Find ("CaptainHook.Mail.TestClass.ParsingState"), "class 'CaptainHook.Mail.TestClass.ParsingState' found!");
- Assert.IsNull (provider.Find ("TestClass.ParsingState"), "class 'TestClass.ParsingState' found!");
- Assert.IsNotNull (provider.Find ("ParsingState"), "class 'ParsingState' not found");
- }
-
- [Test()]
- public void TestInheritableTypeContext ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
-@"
-class Test
-{
- public class Inner {}
- public static void Foo () {}
-}
-
-$class Test2 : Test.$
-");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("Inner"), "class 'Inner' not found.");
- Assert.IsNull (provider.Find ("Foo"), "method 'Foo' found.");
- }
-
- [Test()]
- public void TestInheritableTypeWhereContext ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
-@"
-class Test
-{
- public class Inner {}
- public static void Foo () {}
-}
-
-$class Test2<T> where T : Test.$
-");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("Inner"), "class 'Inner' not found.");
- Assert.IsNull (provider.Find ("Foo"), "method 'Foo' found.");
- }
-
- [Test()]
- public void TestEnumAssignment ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (
-@"
-public enum TestEnum { A, B, C}
-
-class TestClass
-{
- public void Foo ()
- {
- $TestEnum test = $
- }
-}");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("TestEnum"), "enum 'TestEnum' not found.");
- Assert.IsNotNull (provider.Find ("TestEnum.A"), "enum 'TestEnum.A' not found.");
- Assert.IsNotNull (provider.Find ("TestEnum.B"), "enum 'TestEnum.B' not found.");
- Assert.IsNotNull (provider.Find ("TestEnum.C"), "enum 'TestEnum.C' not found.");
- }
-
- [Test()]
- public void TestEnumAssignmentCase2 ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (
-@"
-public enum TestEnum { A, B, C}
-
-class TestClass
-{
- public void Foo ()
- {
- TestEnum test;
- $test = $
- }
-}");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("TestEnum"), "enum 'TestEnum' not found.");
- Assert.IsNotNull (provider.Find ("TestEnum.A"), "enum 'TestEnum.A' not found.");
- Assert.IsNotNull (provider.Find ("TestEnum.B"), "enum 'TestEnum.B' not found.");
- Assert.IsNotNull (provider.Find ("TestEnum.C"), "enum 'TestEnum.C' not found.");
- }
-
- [Test()]
- public void TestEnumAsParameter ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (
-@"
-public enum TestEnum { A, B, C}
-
-class TestClass
-{
- void Bar (TestEnum test) {}
- public void Foo ()
- {
- $Bar ($
- }
-}");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("TestEnum"), "enum 'TestEnum' not found.");
- Assert.IsNotNull (provider.Find ("TestEnum.A"), "enum 'TestEnum.A' not found.");
- Assert.IsNotNull (provider.Find ("TestEnum.B"), "enum 'TestEnum.B' not found.");
- Assert.IsNotNull (provider.Find ("TestEnum.C"), "enum 'TestEnum.C' not found.");
- }
-
- [Test()]
- public void TestEnumAsParameterCase2 ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (
-@"
-public enum TestEnum { A, B, C}
-
-class TestClass
-{
- void Bar (int a, TestEnum test) {}
- public void Foo ()
- {
- $Bar (5, $
- }
-}");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("TestEnum"), "enum 'TestEnum' not found.");
- Assert.IsNotNull (provider.Find ("TestEnum.A"), "enum 'TestEnum.A' not found.");
- Assert.IsNotNull (provider.Find ("TestEnum.B"), "enum 'TestEnum.B' not found.");
- Assert.IsNotNull (provider.Find ("TestEnum.C"), "enum 'TestEnum.C' not found.");
- }
-
- [Test()]
- public void TestInnerEnums ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (
-@"
-public class InnerEnumTest
-{
- public enum TestEnum { A, B, C}
- void Bar (TestEnum test) {}
-}
-
-class TestClass
-{
- public void Foo ()
- {
- InnerEnumTest test;
- $test.Bar ($
- }
-}");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("InnerEnumTest.TestEnum"), "enum 'InnerEnumTest.TestEnum' not found.");
- Assert.IsNotNull (provider.Find ("InnerEnumTest.TestEnum.A"), "enum 'InnerEnumTest.TestEnum.A' not found.");
- Assert.IsNotNull (provider.Find ("InnerEnumTest.TestEnum.B"), "enum 'InnerEnumTest.TestEnum.B' not found.");
- Assert.IsNotNull (provider.Find ("InnerEnumTest.TestEnum.C"), "enum 'InnerEnumTest.TestEnum.C' not found.");
- }
-
-
- }
+"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNull (provider.Find ("T"), "generic parameter 'T' found, but shouldn't"); + Assert.IsNotNull (provider.Find ("TValue"), "generic parameter 'TValue' not found"); + } + + [Test()] + public void TestInheritedInnerClasses () + { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( +@" +public class A { + public class B { + public void MethodB () + { + } + } +} +public class C : A +{ + public override void MethodA (B something) + { + $something.$ + } +}"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("MethodB"), "method 'MethodB' not found"); + } + + [Test()] + public void TestNamespaceAccess () + { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( +@" +namespace Foo.Bar { + class B + { + } +} + +namespace Foo { + class Test + { + void TestMethod () + { + $Bar.$ + } + } +}"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("B"), "class 'B' not found"); + } + + [Test()] + public void TestNamespaceAccess2 () + { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( +@" +namespace Foo.Bar { + class B + { + } +} + +namespace FooBar { + using Foo; + class Test + { + void TestMethod () + { + $Bar.$ + } + } +}"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNull (provider.Find ("B"), "class 'B' found, but shouldn't"); + } + + + [Test()] + public void TestNamespaceAccess3 () + { + CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider ( +@" +namespace SomeTest.TestNS { + class TestClass + { + + } +} + +namespace A { + using SomeTest; + + public class Program2 + { + public void Main () + { + $$ + } + } +} +"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNull (provider.Find ("TestNS"), "namespace 'TestNS' found, but shouldn't"); + } + + [Test()] + public void TestNamespaceAccess4 () + { + CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider ( +@" +namespace SomeTest.TestNS { + class TestClass + { + + } +} + +namespace SomeTest { + + public class Program2 + { + public void Main () + { + $$ + } + } +} +"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("TestNS"), "namespace 'TestNS' not found"); + } + + [Test()] + public void TestHideClassesWithPrivateConstructor () + { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( +@" +class A +{ +} + +class TestClass : A +{ + TestClass () + { + } + + void TestMe () + { + $A a = new $ + } +} +"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("A"), "class 'A' not found"); + Assert.IsNull (provider.Find ("TestClass"), "class 'TestClass' found, but shouldn't."); + } + + [Test()] + public void TestAttributePropertyAccess () + { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( +@" +public class TestAttribute : System.Attribute +{ + public int MyIntProperty { + get; + set; + } + + public string MyStringProperty { + get; + set; + } +} + +[Test($M$)] +public class Program +{ + +} +"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("MyIntProperty"), "property 'MyIntProperty' not found"); + Assert.IsNotNull (provider.Find ("MyStringProperty"), "property 'MyStringProperty' not found"); + } + + [Test()] + public void TestInnerClassEnumAccess () + { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( +@" +public class TestInnerEnum +{ + enum InnerEnum { A, B, C } + + public class InnerClass + { + void TestMethod (InnerEnum e) + { + $e = InnerEnum.$ + } + } +}"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("A"), "field 'A' not found"); + Assert.IsNotNull (provider.Find ("B"), "field 'B' not found"); + Assert.IsNotNull (provider.Find ("C"), "field 'C' not found"); + } + + [Test()] + public void TestInnerClassPrivateOuterMembersAccess () + { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( +@" +public class TestClass +{ + void TestMethod () + { + } + + public class InnerClass + { + void TestMethod () + { + TestClass tc = new TestClass (); + $tc.$ + } + } +}"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found"); + } + + [Test()] + public void TestExplicitGenericMethodParameter () + { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( +@" +public class TestClass +{ + public static T TestMethod<T> () + { + return default(T); + } +} + +public class Test +{ + public void TestMethod () + { + $TestClass.TestMethod<Test> ().$ + } +} +"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found"); + } + + [Test()] + public void TestImplicitGenericMethodParameter () + { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( +@" +public class TestClass +{ + public static T TestMethod<T> (T t) + { + return t; + } +} + +public class Test +{ + public void TestMethod () + { + $TestClass.TestMethod (this).$ + } +} + "); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found"); + } + + [Test()] + public void TestImplicitGenericMethodParameterComplex () + { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( +@" +using System; + +class SomeTemplate<T> +{ + public T Val { get; set; } + public SomeTemplate (T val) + { + this.Val = val; + } +} + +class Test +{ + public T GetVal<T> (SomeTemplate<T> t) + { + return t.Val; + } + + public void TestMethod () + { + SomeTemplate<Test> c = SomeTemplate<Test> (this); + var x = GetVal (c); + $x.$ + + } +}"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found"); + } + + [Test()] + public void TestImplicitGenericArrayMethodParameter () + { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( +@" +public class TestClass +{ + public static T[] Test<T> () + { + return default(T[]); + } +} + +public class Test +{ + public void TestMethod () + { + var v = TestClass.Test<Test>(); + $v[0].$ + } +} +"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found"); + } + + [Test()] + public void TestExplicitResolving () + { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( +@" +interface IMyInterface { + object this [object i] { get; } +} + +class MyClass<S, T> : IMyInterface +{ + object IMyInterface.this[object i] { + get { + return null; + } + } + + public S this[T i] { + get { + return default(S); + } + } +} + +class TestClass +{ + void TestMethod () + { + MyClass<TestClass, string> myClass = new MyClass<TestClass, string> (); + $myClass[""test""].$ + } +} +"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found"); + } + + [Test()] + public void TestAlias () + + { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( +@" +namespace A +{ + public class MyClass + { + public void MyMethod () + { + } + } +} + +namespace X +{ + using GG = A.MyClass; + + public abstract class I + { + protected virtual GG Foo () + { + return null; + } + } +} + +namespace X +{ + public class B : I + { + public void A () + { + $Foo ().$ + } + } +}"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("MyMethod"), "method 'MyMethod' not found"); + } + + [Test()] + public void TestEnumInnerClass () + { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( +@" +using System; +namespace CaptainHook.Mail +{ + public class TestClass + { + enum ParsingState + { + Any, + Start, + InMacro, + InMacroArgumentList, + InQuotedMacroArgument, + PlainText + } + + ParsingState state; + + public TestClass () + { + $state = $ + } + } +}"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNull (provider.Find ("CaptainHook.Mail.TestClass.ParsingState"), "class 'CaptainHook.Mail.TestClass.ParsingState' found!"); + Assert.IsNull (provider.Find ("TestClass.ParsingState"), "class 'TestClass.ParsingState' found!"); + Assert.IsNotNull (provider.Find ("ParsingState"), "class 'ParsingState' not found"); + } + + [Test()] + public void TestInheritableTypeContext () + { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( +@" +class Test +{ + public class Inner {} + public static void Foo () {} +} + +$class Test2 : Test.$ +"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("Inner"), "class 'Inner' not found."); + Assert.IsNull (provider.Find ("Foo"), "method 'Foo' found."); + } + + [Test()] + public void TestInheritableTypeWhereContext () + { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( +@" +class Test +{ + public class Inner {} + public static void Foo () {} +} + +$class Test2<T> where T : Test.$ +"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("Inner"), "class 'Inner' not found."); + Assert.IsNull (provider.Find ("Foo"), "method 'Foo' found."); + } + + [Test()] + public void TestEnumAssignment () + { + CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider ( +@" +public enum TestEnum { A, B, C} + +class TestClass +{ + public void Foo () + { + $TestEnum test = $ + } +}"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("TestEnum"), "enum 'TestEnum' not found."); + Assert.IsNotNull (provider.Find ("TestEnum.A"), "enum 'TestEnum.A' not found."); + Assert.IsNotNull (provider.Find ("TestEnum.B"), "enum 'TestEnum.B' not found."); + Assert.IsNotNull (provider.Find ("TestEnum.C"), "enum 'TestEnum.C' not found."); + } + + [Test()] + public void TestEnumAssignmentCase2 () + { + CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider ( +@" +public enum TestEnum { A, B, C} + +class TestClass +{ + public void Foo () + { + TestEnum test; + $test = $ + } +}"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("TestEnum"), "enum 'TestEnum' not found."); + Assert.IsNotNull (provider.Find ("TestEnum.A"), "enum 'TestEnum.A' not found."); + Assert.IsNotNull (provider.Find ("TestEnum.B"), "enum 'TestEnum.B' not found."); + Assert.IsNotNull (provider.Find ("TestEnum.C"), "enum 'TestEnum.C' not found."); + } + + [Test()] + public void TestEnumAsParameter () + { + CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider ( +@" +public enum TestEnum { A, B, C} + +class TestClass +{ + void Bar (TestEnum test) {} + public void Foo () + { + $Bar ($ + } +}"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("TestEnum"), "enum 'TestEnum' not found."); + Assert.IsNotNull (provider.Find ("TestEnum.A"), "enum 'TestEnum.A' not found."); + Assert.IsNotNull (provider.Find ("TestEnum.B"), "enum 'TestEnum.B' not found."); + Assert.IsNotNull (provider.Find ("TestEnum.C"), "enum 'TestEnum.C' not found."); + } + + [Test()] + public void TestEnumAsParameterCase2 () + { + CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider ( +@" +public enum TestEnum { A, B, C} + +class TestClass +{ + void Bar (int a, TestEnum test) {} + public void Foo () + { + $Bar (5, $ + } +}"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("TestEnum"), "enum 'TestEnum' not found."); + Assert.IsNotNull (provider.Find ("TestEnum.A"), "enum 'TestEnum.A' not found."); + Assert.IsNotNull (provider.Find ("TestEnum.B"), "enum 'TestEnum.B' not found."); + Assert.IsNotNull (provider.Find ("TestEnum.C"), "enum 'TestEnum.C' not found."); + } + + [Test()] + public void TestInnerEnums () + { + CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider ( +@" +public class InnerEnumTest +{ + public enum TestEnum { A, B, C} + void Bar (TestEnum test) {} +} + +class TestClass +{ + public void Foo () + { + InnerEnumTest test; + $test.Bar ($ + } +}"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("InnerEnumTest.TestEnum"), "enum 'InnerEnumTest.TestEnum' not found."); + Assert.IsNotNull (provider.Find ("InnerEnumTest.TestEnum.A"), "enum 'InnerEnumTest.TestEnum.A' not found."); + Assert.IsNotNull (provider.Find ("InnerEnumTest.TestEnum.B"), "enum 'InnerEnumTest.TestEnum.B' not found."); + Assert.IsNotNull (provider.Find ("InnerEnumTest.TestEnum.C"), "enum 'InnerEnumTest.TestEnum.C' not found."); + } + + + } }
\ No newline at end of file diff --git a/main/tests/UnitTests/MonoDevelop.CSharpBinding/CodeCompletionBugTests.cs b/main/tests/UnitTests/MonoDevelop.CSharpBinding/CodeCompletionBugTests.cs index 067bd2438f..766ee37333 100644 --- a/main/tests/UnitTests/MonoDevelop.CSharpBinding/CodeCompletionBugTests.cs +++ b/main/tests/UnitTests/MonoDevelop.CSharpBinding/CodeCompletionBugTests.cs @@ -1,4 +1,4 @@ -//
+// // CodeCompletionBugTests.cs // // Author: @@ -27,231 +27,231 @@ // using System; -using NUnit.Framework;
-using MonoDevelop.Ide.Gui;
+using NUnit.Framework; +using MonoDevelop.Ide.Gui; using MonoDevelop.Projects; using MonoDevelop.Core; -using MonoDevelop.Ide.CodeCompletion;
-using MonoDevelop.Ide.Gui.Content;
-using MonoDevelop.Projects.Dom.Parser;
-using MonoDevelop.CSharp.Parser;
-using MonoDevelop.CSharp.Resolver;
-using MonoDevelop.CSharp.Completion;
+using MonoDevelop.Ide.CodeCompletion; +using MonoDevelop.Ide.Gui.Content; +using MonoDevelop.CSharp.Parser; +using MonoDevelop.CSharp.Resolver; +using MonoDevelop.CSharp.Completion; +using MonoDevelop.TypeSystem; namespace MonoDevelop.CSharpBinding.Tests { [TestFixture()] public class CodeCompletionBugTests : UnitTests.TestBase - {
- static int pcount = 0;
-
- public static CompletionDataList CreateProvider (string text)
- {
- return CreateProvider (text, false);
- }
-
- public static CompletionDataList CreateCtrlSpaceProvider (string text)
- {
- return CreateProvider (text, true);
- }
-
- class TestCompletionWidget : ICompletionWidget
- {
- Mono.TextEditor.TextEditorData data;
-
- public TestCompletionWidget (Mono.TextEditor.TextEditorData data)
- {
- this.data = data;
- }
-
- #region ICompletionWidget implementation
- public event EventHandler CompletionContextChanged;
-
- public string GetText (int startOffset, int endOffset)
- {
- return data.GetTextBetween (startOffset, endOffset);
- }
-
- public char GetChar (int offset)
- {
- return data.GetCharAt (offset);
- }
-
- public void Replace (int offset, int count, string text)
- {
- data.Replace (offset, count, text);
- }
-
- public CodeCompletionContext CreateCodeCompletionContext (int triggerOffset)
- {
- CodeCompletionContext result = new CodeCompletionContext ();
- result.TriggerOffset = triggerOffset;
- var loc = data.OffsetToLocation (triggerOffset);
- result.TriggerLine = loc.Line;
- result.TriggerLineOffset = loc.Column - 1;
- return result;
- }
-
- public string GetCompletionText (CodeCompletionContext ctx)
- {
- if (ctx == null)
- return null;
- int min = Math.Min (ctx.TriggerOffset, data.Caret.Offset);
- int max = Math.Max (ctx.TriggerOffset, data.Caret.Offset);
- return data.GetTextBetween (min, max);
- }
-
- public void SetCompletionText (CodeCompletionContext ctx, string partial_word, string complete_word)
- {
- }
-
- void ICompletionWidget.SetCompletionText (CodeCompletionContext ctx, string partial_word, string complete_word, int completeWordOffset)
- {
- }
-
- public CodeCompletionContext CurrentCodeCompletionContext {
- get;
- set;
- }
-
- public int TextLength {
- get;
- set;
- }
-
- public int SelectedLength {
- get;
- set;
- }
-
- public Gtk.Style GtkStyle {
- get;
- set;
- }
- #endregion
-
- }
- static CompletionDataList CreateProvider (string text, bool isCtrlSpace)
- {
- string parsedText;
- string editorText;
- int cursorPosition = text.IndexOf ('$');
- int endPos = text.IndexOf ('$', cursorPosition + 1);
- if (endPos == -1) {
- parsedText = editorText = text.Substring (0, cursorPosition) + text.Substring (cursorPosition + 1);
- } else {
- parsedText = text.Substring (0, cursorPosition) + new string (' ', endPos - cursorPosition) + text.Substring (endPos + 1);
- editorText = text.Substring (0, cursorPosition) + text.Substring (cursorPosition + 1, endPos - cursorPosition - 1) + text.Substring (endPos + 1);
- cursorPosition = endPos - 1;
- }
-
- TestWorkbenchWindow tww = new TestWorkbenchWindow ();
- TestViewContent sev = new TestViewContent ();
- DotNetProject project = new DotNetAssemblyProject ("C#");
- project.FileName = GetTempFile (".csproj");
-
- string file = GetTempFile (".cs");
- project.AddFile (file);
-
- ProjectDomService.Load (project);
- ProjectDom dom = ProjectDomService.GetProjectDom (project);
- dom.ForceUpdate (true);
- ProjectDomService.Parse (project, file, delegate { return parsedText; });
- ProjectDomService.Parse (project, file, delegate { return parsedText; });
-
- sev.Project = project;
- sev.ContentName = file;
- sev.Text = editorText;
- sev.CursorPosition = cursorPosition;
- tww.ViewContent = sev;
- Document doc = new Document (tww);
- doc.ParsedDocument = new McsParser ().Parse (null, sev.ContentName, parsedText);
- foreach (var e in doc.ParsedDocument.Errors)
- Console.WriteLine (e);
- CSharpTextEditorCompletion textEditorCompletion = new CSharpTextEditorCompletion (doc);
- int triggerWordLength = 1;
- CodeCompletionContext ctx = new CodeCompletionContext ();
- textEditorCompletion.CompletionWidget = new TestCompletionWidget (doc.Editor) {
- CurrentCodeCompletionContext = ctx
- };
- ctx.TriggerOffset = sev.CursorPosition;
- int line, column;
- sev.GetLineColumnFromPosition (sev.CursorPosition, out line, out column);
- ctx.TriggerLine = line;
- ctx.TriggerLineOffset = column - 1;
- if (isCtrlSpace)
- return textEditorCompletion.CodeCompletionCommand (ctx) as CompletionDataList;
- return textEditorCompletion.HandleCodeCompletion (ctx, editorText[cursorPosition - 1] , ref triggerWordLength) as CompletionDataList;
- }
-
- public static void CheckObjectMembers (CompletionDataList provider)
- {
- Assert.IsNotNull (provider.Find ("Equals"), "Method 'System.Object.Equals' not found.");
- Assert.IsNotNull (provider.Find ("GetHashCode"), "Method 'System.Object.GetHashCode' not found.");
- Assert.IsNotNull (provider.Find ("GetType"), "Method 'System.Object.GetType' not found.");
- Assert.IsNotNull (provider.Find ("ToString"), "Method 'System.Object.ToString' not found.");
- }
-
- public static void CheckProtectedObjectMembers (CompletionDataList provider)
- {
- CheckObjectMembers (provider);
- Assert.IsNotNull (provider.Find ("MemberwiseClone"), "Method 'System.Object.MemberwiseClone' not found.");
- }
-
- public static void CheckStaticObjectMembers (CompletionDataList provider)
- {
- Assert.IsNotNull (provider.Find ("Equals"), "Method 'System.Object.Equals' not found.");
- Assert.IsNotNull (provider.Find ("ReferenceEquals"), "Method 'System.Object.ReferenceEquals' not found.");
- }
+ { + static int pcount = 0; + + public static CompletionDataList CreateProvider (string text) + { + return CreateProvider (text, false); + } + + public static CompletionDataList CreateCtrlSpaceProvider (string text) + { + return CreateProvider (text, true); + } + + class TestCompletionWidget : ICompletionWidget + { + Mono.TextEditor.TextEditorData data; + + public TestCompletionWidget (Mono.TextEditor.TextEditorData data) + { + this.data = data; + } + + #region ICompletionWidget implementation + public event EventHandler CompletionContextChanged; + + public string GetText (int startOffset, int endOffset) + { + return data.GetTextBetween (startOffset, endOffset); + } + + public char GetChar (int offset) + { + return data.GetCharAt (offset); + } + + public void Replace (int offset, int count, string text) + { + data.Replace (offset, count, text); + } + + public CodeCompletionContext CreateCodeCompletionContext (int triggerOffset) + { + CodeCompletionContext result = new CodeCompletionContext (); + result.TriggerOffset = triggerOffset; + var loc = data.OffsetToLocation (triggerOffset); + result.TriggerLine = loc.Line; + result.TriggerLineOffset = loc.Column - 1; + return result; + } + + public string GetCompletionText (CodeCompletionContext ctx) + { + if (ctx == null) + return null; + int min = Math.Min (ctx.TriggerOffset, data.Caret.Offset); + int max = Math.Max (ctx.TriggerOffset, data.Caret.Offset); + return data.GetTextBetween (min, max); + } + + public void SetCompletionText (CodeCompletionContext ctx, string partial_word, string complete_word) + { + } + + void ICompletionWidget.SetCompletionText (CodeCompletionContext ctx, string partial_word, string complete_word, int completeWordOffset) + { + } + + public CodeCompletionContext CurrentCodeCompletionContext { + get; + set; + } + + public int TextLength { + get; + set; + } + + public int SelectedLength { + get; + set; + } + + public Gtk.Style GtkStyle { + get; + set; + } + #endregion + + } + static CompletionDataList CreateProvider (string text, bool isCtrlSpace) + { + string parsedText; + string editorText; + int cursorPosition = text.IndexOf ('$'); + int endPos = text.IndexOf ('$', cursorPosition + 1); + if (endPos == -1) { + parsedText = editorText = text.Substring (0, cursorPosition) + text.Substring (cursorPosition + 1); + } else { + parsedText = text.Substring (0, cursorPosition) + new string (' ', endPos - cursorPosition) + text.Substring (endPos + 1); + editorText = text.Substring (0, cursorPosition) + text.Substring (cursorPosition + 1, endPos - cursorPosition - 1) + text.Substring (endPos + 1); + cursorPosition = endPos - 1; + } + + TestWorkbenchWindow tww = new TestWorkbenchWindow (); + TestViewContent sev = new TestViewContent (); + DotNetProject project = new DotNetAssemblyProject ("C#"); + project.FileName = GetTempFile (".csproj"); + + string file = GetTempFile (".cs"); + project.AddFile (file); + TypeSystemService.Load (project); + var dom = TypeSystemService.GetContext (project); + TypeSystemService.ForceUpdate (dom); + var content = TypeSystemService.GetProjectContext (project); + var parsedDocument = TypeSystemService.ParseFile (content, file, "text/x-csharp", parsedText); + + sev.Project = project; + sev.ContentName = file; + sev.Text = editorText; + sev.CursorPosition = cursorPosition; + tww.ViewContent = sev; + Document doc = new Document (tww); + doc.ParsedDocument = parsedDocument; + foreach (var e in doc.ParsedDocument.Errors) + Console.WriteLine (e); + var textEditorCompletion = new CSharpCompletionTextEditorExtension (doc); + int triggerWordLength = 1; + CodeCompletionContext ctx = new CodeCompletionContext (); + textEditorCompletion.CompletionWidget = new TestCompletionWidget (doc.Editor) { + CurrentCodeCompletionContext = ctx + }; + ctx.TriggerOffset = sev.CursorPosition; + int line, column; + sev.GetLineColumnFromPosition (sev.CursorPosition, out line, out column); + ctx.TriggerLine = line; + ctx.TriggerLineOffset = column - 1; + TypeSystemService.Unload (project); + if (isCtrlSpace) + return textEditorCompletion.CodeCompletionCommand (ctx) as CompletionDataList; + return textEditorCompletion.HandleCodeCompletion (ctx, editorText[cursorPosition - 1] , ref triggerWordLength) as CompletionDataList; + } + + public static void CheckObjectMembers (CompletionDataList provider) + { + Assert.IsNotNull (provider.Find ("Equals"), "Method 'System.Object.Equals' not found."); + Assert.IsNotNull (provider.Find ("GetHashCode"), "Method 'System.Object.GetHashCode' not found."); + Assert.IsNotNull (provider.Find ("GetType"), "Method 'System.Object.GetType' not found."); + Assert.IsNotNull (provider.Find ("ToString"), "Method 'System.Object.ToString' not found."); + } + + public static void CheckProtectedObjectMembers (CompletionDataList provider) + { + CheckObjectMembers (provider); + Assert.IsNotNull (provider.Find ("MemberwiseClone"), "Method 'System.Object.MemberwiseClone' not found."); + } + + public static void CheckStaticObjectMembers (CompletionDataList provider) + { + Assert.IsNotNull (provider.Find ("Equals"), "Method 'System.Object.Equals' not found."); + Assert.IsNotNull (provider.Find ("ReferenceEquals"), "Method 'System.Object.ReferenceEquals' not found."); + } [Test()] public void TestSimpleCodeCompletion () - {
- CompletionDataList provider = CreateProvider (
-@"class Test { public void TM1 () {} public void TM2 () {} public int TF1; }
-class CCTest {
-void TestMethod ()
-{
- Test t;
- $t.$
-}
-}
-");
- Assert.IsNotNull (provider);
- Assert.AreEqual (7, provider.Count);
- CodeCompletionBugTests.CheckObjectMembers (provider); // 4 from System.Object
- Assert.IsNotNull (provider.Find ("TM1"));
- Assert.IsNotNull (provider.Find ("TM2"));
- Assert.IsNotNull (provider.Find ("TF1"));
- }
+ { + CompletionDataList provider = CreateProvider ( +@"class Test { public void TM1 () {} public void TM2 () {} public int TF1; } +class CCTest { +void TestMethod () +{ + Test t; + $t.$ +} +} +"); + Assert.IsNotNull (provider); + Assert.AreEqual (7, provider.Count); + CodeCompletionBugTests.CheckObjectMembers (provider); // 4 from System.Object + Assert.IsNotNull (provider.Find ("TM1")); + Assert.IsNotNull (provider.Find ("TM2")); + Assert.IsNotNull (provider.Find ("TF1")); + } [Test()] public void TestSimpleInterfaceCodeCompletion () - {
- CompletionDataList provider = CreateProvider (
-@"interface ITest { void TM1 (); void TM2 (); int TF1 { get; } }
-class CCTest {
-void TestMethod ()
-{
- ITest t;
- $t.$
-}
-}
-");
- Assert.IsNotNull (provider);
- Assert.AreEqual (7, provider.Count);
- CodeCompletionBugTests.CheckObjectMembers (provider); // 4 from System.Object
- Assert.IsNotNull (provider.Find ("TM1"));
- Assert.IsNotNull (provider.Find ("TM2"));
- Assert.IsNotNull (provider.Find ("TF1"));
- }
-
+ { + CompletionDataList provider = CreateProvider ( +@"interface ITest { void TM1 (); void TM2 (); int TF1 { get; } } +class CCTest { +void TestMethod () +{ + ITest t; + $t.$ +} +} +"); + Assert.IsNotNull (provider); + Assert.AreEqual (7, provider.Count); + CodeCompletionBugTests.CheckObjectMembers (provider); // 4 from System.Object + Assert.IsNotNull (provider.Find ("TM1")); + Assert.IsNotNull (provider.Find ("TM2")); + Assert.IsNotNull (provider.Find ("TF1")); + } + /// <summary> /// Bug 399695 - Code completion not working with an enum in a different namespace /// </summary> - [Test()]
+ [Test()] public void TestBug399695 () - {
- CompletionDataList provider = CreateProvider (
+ { + CompletionDataList provider = CreateProvider ( @"namespace Other { enum TheEnum { One, Two } } namespace ThisOne { public class Test { @@ -263,18 +263,18 @@ namespace ThisOne { $TheEnum = $ } } -}");
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("Other.TheEnum"), "Other.TheEnum not found.");
- }
-
+}"); + Assert.IsNotNull (provider); + Assert.IsNotNull (provider.Find ("Other.TheEnum"), "Other.TheEnum not found."); + } + /// <summary> /// Bug 318834 - autocompletion kicks in when inputting decimals /// </summary> - [Test()]
+ [Test()] public void TestBug318834 () - {
- CompletionDataList provider = CreateProvider (
+ { + CompletionDataList provider = CreateProvider ( @"class T { static void Main () @@ -283,17 +283,17 @@ namespace ThisOne { } } -");
- Assert.IsNull (provider);
- }
-
+"); + Assert.IsNull (provider); + } + /// <summary> /// Bug 321306 - Code completion doesn't recognize child namespaces /// </summary> - [Test()]
+ [Test()] public void TestBug321306 () - {
- CompletionDataList provider = CreateProvider (
+ { + CompletionDataList provider = CreateProvider ( @"namespace a { namespace b @@ -307,146 +307,146 @@ namespace ThisOne { public class d { public d () - {
+ { $b.$ } } -}");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.AreEqual (1, provider.Count);
- Assert.IsNotNull (provider.Find ("c"), "class 'c' not found.");
- }
-
+}"); + Assert.IsNotNull (provider, "provider not found."); + Assert.AreEqual (1, provider.Count); + Assert.IsNotNull (provider.Find ("c"), "class 'c' not found."); + } + /// <summary> /// Bug 322089 - Code completion for indexer /// </summary> - [Test()]
+ [Test()] public void TestBug322089 () - {
- CompletionDataList provider = CreateProvider (
-@"class AClass
-{
- public int AField;
- public int BField;
-}
-
+ { + CompletionDataList provider = CreateProvider ( +@"class AClass +{ + public int AField; + public int BField; +} + class Test { public void TestMethod () - {
- AClass[] list = new AClass[0];
- $list[0].$
- } -}");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.AreEqual (6, provider.Count);
- CodeCompletionBugTests.CheckObjectMembers (provider); // 4 from System.Object
- Assert.IsNotNull (provider.Find ("AField"), "field 'AField' not found.");
- Assert.IsNotNull (provider.Find ("BField"), "field 'BField' not found.");
- }
-
+ { + AClass[] list = new AClass[0]; + $list[0].$ + } +}"); + Assert.IsNotNull (provider, "provider not found."); + Assert.AreEqual (6, provider.Count); + CodeCompletionBugTests.CheckObjectMembers (provider); // 4 from System.Object + Assert.IsNotNull (provider.Find ("AField"), "field 'AField' not found."); + Assert.IsNotNull (provider.Find ("BField"), "field 'BField' not found."); + } + /// <summary> /// Bug 323283 - Code completion for indexers offered by generic types (generics) /// </summary> - [Test()]
+ [Test()] public void TestBug323283 () - {
- CompletionDataList provider = CreateProvider (
-@"class AClass
-{
- public int AField;
- public int BField;
-}
-
-class MyClass<T>
-{
- public T this[int i] {
- get {
- return default (T);
- }
- }
-}
-
+ { + CompletionDataList provider = CreateProvider ( +@"class AClass +{ + public int AField; + public int BField; +} + +class MyClass<T> +{ + public T this[int i] { + get { + return default (T); + } + } +} + class Test { public void TestMethod () - {
- MyClass<AClass> list = new MyClass<AClass> ();
- $list[0].$
- } -}");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.AreEqual (6, provider.Count);
- CodeCompletionBugTests.CheckObjectMembers (provider); // 4 from System.Object
- Assert.IsNotNull (provider.Find ("AField"), "field 'AField' not found.");
- Assert.IsNotNull (provider.Find ("BField"), "field 'BField' not found.");
- }
-
+ { + MyClass<AClass> list = new MyClass<AClass> (); + $list[0].$ + } +}"); + Assert.IsNotNull (provider, "provider not found."); + Assert.AreEqual (6, provider.Count); + CodeCompletionBugTests.CheckObjectMembers (provider); // 4 from System.Object + Assert.IsNotNull (provider.Find ("AField"), "field 'AField' not found."); + Assert.IsNotNull (provider.Find ("BField"), "field 'BField' not found."); + } + /// <summary> /// Bug 323317 - Code completion not working just after a constructor /// </summary> - [Test()]
+ [Test()] public void TestBug323317 () - {
- CompletionDataList provider = CreateProvider (
-@"class AClass
-{
- public int AField;
- public int BField;
-}
-
+ { + CompletionDataList provider = CreateProvider ( +@"class AClass +{ + public int AField; + public int BField; +} + class Test { public void TestMethod () - {
- $new AClass().$
- } -}");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.AreEqual (6, provider.Count);
- CodeCompletionBugTests.CheckObjectMembers (provider); // 4 from System.Object
- Assert.IsNotNull (provider.Find ("AField"), "field 'AField' not found.");
- Assert.IsNotNull (provider.Find ("BField"), "field 'BField' not found.");
- }
-
+ { + $new AClass().$ + } +}"); + Assert.IsNotNull (provider, "provider not found."); + Assert.AreEqual (6, provider.Count); + CodeCompletionBugTests.CheckObjectMembers (provider); // 4 from System.Object + Assert.IsNotNull (provider.Find ("AField"), "field 'AField' not found."); + Assert.IsNotNull (provider.Find ("BField"), "field 'BField' not found."); + } + /// <summary> /// Bug 325509 - Inaccessible methods displayed in autocomplete /// </summary> - [Test()]
+ [Test()] public void TestBug325509 () - {
- CompletionDataList provider = CreateProvider (
-@"class AClass
-{
- public int A;
- public int B;
-
- protected int C;
- int D;
-}
-
+ { + CompletionDataList provider = CreateProvider ( +@"class AClass +{ + public int A; + public int B; + + protected int C; + int D; +} + class Test { public void TestMethod () - {
- AClass a;
- $a.$
- } -}");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.AreEqual (6, provider.Count);
- CodeCompletionBugTests.CheckObjectMembers (provider); // 4 from System.Object
- Assert.IsNotNull (provider.Find ("A"), "field 'A' not found.");
- Assert.IsNotNull (provider.Find ("B"), "field 'B' not found.");
- }
-
+ { + AClass a; + $a.$ + } +}"); + Assert.IsNotNull (provider, "provider not found."); + Assert.AreEqual (6, provider.Count); + CodeCompletionBugTests.CheckObjectMembers (provider); // 4 from System.Object + Assert.IsNotNull (provider.Find ("A"), "field 'A' not found."); + Assert.IsNotNull (provider.Find ("B"), "field 'B' not found."); + } + /// <summary> /// Bug 338392 - MD tries to use types when declaring namespace /// </summary> - [Test()]
+ [Test()] public void TestBug338392 () - {
- CompletionDataList provider = CreateProvider (
+ { + CompletionDataList provider = CreateProvider ( @"namespace A { class C @@ -454,73 +454,73 @@ class Test } } -$namespace A.$
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.AreEqual (0, provider.Count);
- }
-
+$namespace A.$ +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.AreEqual (0, provider.Count); + } + /// <summary> /// Bug 427284 - Code Completion: class list shows the full name of classes /// </summary> - [Test()]
+ [Test()] public void TestBug427284 () - {
- CompletionDataList provider = CreateProvider (
+ { + CompletionDataList provider = CreateProvider ( @"namespace TestNamespace { class Test { } -}
-class TestClass
-{
- void Method ()
- {
- $TestNamespace.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.AreEqual (1, provider.Count);
+} +class TestClass +{ + void Method () + { + $TestNamespace.$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.AreEqual (1, provider.Count); Assert.IsNotNull (provider.Find ("Test"), "class 'Test' not found."); - }
-
+ } + /// <summary> /// Bug 427294 - Code Completion: completion on values returned by methods doesn't work /// </summary> - [Test()]
+ [Test()] public void TestBug427294 () - {
- CompletionDataList provider = CreateProvider (
-@"class TestClass
-{
- public TestClass GetTestClass ()
- {
- }
-} -
+ { + CompletionDataList provider = CreateProvider ( +@"class TestClass +{ + public TestClass GetTestClass () + { + } +} + class Test { public void TestMethod () - {
- TestClass a;
- $a.GetTestClass ().$
- } -}");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.AreEqual (5, provider.Count);
- CodeCompletionBugTests.CheckObjectMembers (provider); // 4 from System.Object
+ { + TestClass a; + $a.GetTestClass ().$ + } +}"); + Assert.IsNotNull (provider, "provider not found."); + Assert.AreEqual (5, provider.Count); + CodeCompletionBugTests.CheckObjectMembers (provider); // 4 from System.Object Assert.IsNotNull (provider.Find ("GetTestClass"), "method 'GetTestClass' not found."); - }
-
+ } + /// <summary> /// Bug 405000 - Namespace alias qualifier operator (::) does not trigger code completion /// </summary> - [Test()]
+ [Test()] public void TestBug405000 () - {
- CompletionDataList provider = CreateProvider (
+ { + CompletionDataList provider = CreateProvider ( @"namespace A { class Test { @@ -536,19 +536,19 @@ namespace B { $foo::$ } } -}");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.AreEqual (1, provider.Count);
+}"); + Assert.IsNotNull (provider, "provider not found."); + Assert.AreEqual (1, provider.Count); Assert.IsNotNull (provider.Find ("Test"), "class 'Test' not found."); - }
-
+ } + /// <summary> /// Bug 427649 - Code Completion: protected methods shown in code completion /// </summary> - [Test()]
+ [Test()] public void TestBug427649 () - {
- CompletionDataList provider = CreateProvider (
+ { + CompletionDataList provider = CreateProvider ( @"class BaseClass { protected void ProtecedMember () @@ -564,19 +564,19 @@ class C : BaseClass $bc.$ } } -");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.AreEqual (4, provider.Count);
- CodeCompletionBugTests.CheckObjectMembers (provider); // 4 from System.Object
- }
-
+"); + Assert.IsNotNull (provider, "provider not found."); + Assert.AreEqual (4, provider.Count); + CodeCompletionBugTests.CheckObjectMembers (provider); // 4 from System.Object + } + /// <summary> /// Bug 427734 - Code Completion issues with enums /// </summary> - [Test()]
+ [Test()] public void TestBug427734A () - {
- CompletionDataList provider = CreateProvider (
+ { + CompletionDataList provider = CreateProvider ( @"public class Test { public enum SomeEnum { a,b } @@ -585,20 +585,20 @@ class C : BaseClass { $Test.$ } -}");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.AreEqual (3, provider.Count);
- CodeCompletionBugTests.CheckStaticObjectMembers (provider); // 2 from System.Object
+}"); + Assert.IsNotNull (provider, "provider not found."); + Assert.AreEqual (3, provider.Count); + CodeCompletionBugTests.CheckStaticObjectMembers (provider); // 2 from System.Object Assert.IsNotNull (provider.Find ("SomeEnum"), "enum 'SomeEnum' not found."); - }
-
+ } + /// <summary> /// Bug 427734 - Code Completion issues with enums /// </summary> - [Test()]
+ [Test()] public void TestBug427734B () - {
- CompletionDataList provider = CreateProvider (
+ { + CompletionDataList provider = CreateProvider ( @"public class Test { public enum SomeEnum { a,b } @@ -607,74 +607,74 @@ class C : BaseClass { $SomeEnum.$ } -}");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.AreEqual (2, provider.Count);
+}"); + Assert.IsNotNull (provider, "provider not found."); + Assert.AreEqual (2, provider.Count); Assert.IsNotNull (provider.Find ("a"), "enum member 'a' not found."); Assert.IsNotNull (provider.Find ("b"), "enum member 'b' not found."); - }
-
+ } + /// <summary> /// Bug 431764 - Completion doesn't work in properties /// </summary> - [Test()]
- public void TestBug431764 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
+ [Test()] + public void TestBug431764 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( @"public class Test { - int number;
- public int Number {
- set { $this.number = $ }
+ int number; + public int Number { + set { $this.number = $ } } -}");
- Assert.IsNotNull (provider, "provider not found.");
+}"); + Assert.IsNotNull (provider, "provider not found."); Assert.IsNotNull (provider.Find ("value"), "Should contain 'value'"); - }
-
+ } + /// <summary> /// Bug 431797 - Code completion showing invalid options - /// </summary>
- [Test()]
+ /// </summary> + [Test()] public void TestBug431797A () - {
+ { CompletionDataList provider = CreateCtrlSpaceProvider ( -@"public class Test
-{
+@"public class Test +{ private List<string> strings; $public $ }"); Assert.IsNotNull (provider, "provider not found."); Assert.IsNull (provider.Find ("strings"), "should not contain 'strings'"); - }
-
+ } + /// <summary> /// Bug 431797 - Code completion showing invalid options - /// </summary>
- [Test()]
+ /// </summary> + [Test()] public void TestBug431797B () - {
+ { CompletionDataList provider = CreateProvider ( @"public class Test -{
+{ public delegate string [] AutoCompleteHandler (string text, int pos); public void Method () - {
+ { Test t = new Test (); - $t.$
+ $t.$ } }"); Assert.IsNotNull (provider, "provider not found."); Assert.IsNull (provider.Find ("AutoCompleteHandler"), "should not contain 'AutoCompleteHandler' delegate"); - }
-
+ } + /// <summary> /// Bug 432681 - Incorrect completion in nested classes - /// </summary>
- [Test()]
- public void TestBug432681 ()
- {
+ /// </summary> + [Test()] + public void TestBug432681 () + { CompletionDataList provider = CreateProvider ( @" @@ -687,36 +687,36 @@ class C { { $C.D c = new $ } -}");
- Assert.IsNotNull (provider, "provider not found.");
+}"); + Assert.IsNotNull (provider, "provider not found."); Assert.AreEqual ("D", provider.DefaultCompletionString, "Completion string is incorrect"); - }
-
- [Test()]
- public void TestGenericObjectCreation ()
- {
+ } + + [Test()] + public void TestGenericObjectCreation () + { CompletionDataList provider = CreateProvider ( -@"
-class List<T>
-{
-}
+@" +class List<T> +{ +} class Test{ public void Method () { $List<int> i = new $ } -}");
- Assert.IsNotNull (provider, "provider not found.");
+}"); + Assert.IsNotNull (provider, "provider not found."); Assert.IsTrue (provider.Find ("List<int>") != null, "List<int> not found"); - }
-
+ } + /// <summary> /// Bug 431803 - Autocomplete not giving any options - /// </summary>
+ /// </summary> [Test()] public void TestBug431803 () - {
- CompletionDataList provider = CreateProvider (
+ { + CompletionDataList provider = CreateProvider ( @"public class Test { public string[] GetStrings () @@ -726,30 +726,30 @@ class Test{ }"); Assert.IsNotNull (provider, "provider not found."); Assert.IsNotNull (provider.Find ("string"), "type string not found."); - }
-
+ } + /// <summary> /// Bug 434770 - No autocomplete on array types - /// </summary>
+ /// </summary> [Test()] public void TestBug434770 () - {
- CompletionDataList provider = CreateProvider (
-@"
-namespace System {
- public class Array
- {
- public int Length {
- get {}
- set {}
- }
- public int MyField;
- }
-}
+ { + CompletionDataList provider = CreateProvider ( +@" +namespace System { + public class Array + { + public int Length { + get {} + set {} + } + public int MyField; + } +} public class Test { public void AMethod () - {
+ { byte[] buffer = new byte[1024]; $buffer.$ } @@ -757,16 +757,16 @@ public class Test Assert.IsNotNull (provider, "provider not found."); Assert.IsNotNull (provider.Find ("Length"), "property 'Length' not found."); Assert.IsNotNull (provider.Find ("MyField"), "field 'MyField' not found."); - }
-
+ } + /// <summary> /// Bug 439601 - Intellisense Broken For Partial Classes - /// </summary>
+ /// </summary> [Test()] public void TestBug439601 () - {
- CompletionDataList provider = CreateProvider (
-@"
+ { + CompletionDataList provider = CreateProvider ( +@" namespace MyNamespace { partial class FormMain @@ -802,14 +802,14 @@ namespace MyNamespace Assert.IsNotNull (provider.Find ("Foo"), "method 'Foo' not found."); Assert.IsNotNull (provider.Find ("Blah"), "method 'Blah' not found."); Assert.IsNotNull (provider.Find ("Bar"), "method 'Bar' not found."); - }
-
+ } + /// <summary> /// Bug 432434 - Code completion doesn't work with subclasses - /// </summary>
- [Test()]
- public void TestBug432434 ()
- {
+ /// </summary> + [Test()] + public void TestBug432434 () + { CompletionDataList provider = CreateProvider ( @"public class Test @@ -831,18 +831,18 @@ namespace MyNamespace $inner.$ } } -");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Inner1"), "Method inner1 not found.");
+"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Inner1"), "Method inner1 not found."); Assert.IsNotNull (provider.Find ("Inner2"), "Method inner2 not found."); - }
-
+ } + /// <summary> /// Bug 432434A - Code completion doesn't work with subclasses - /// </summary>
- [Test()]
- public void TestBug432434A ()
- {
+ /// </summary> + [Test()] + public void TestBug432434A () + { CompletionDataList provider = CreateProvider ( @" public class E @@ -856,17 +856,17 @@ namespace MyNamespace } } } -");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Method"), "Method 'Method' not found.");
+"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Method"), "Method 'Method' not found."); } -
+ /// <summary> /// Bug 432434B - Code completion doesn't work with subclasses - /// </summary>
- [Test()]
- public void TestBug432434B ()
- {
+ /// </summary> + [Test()] + public void TestBug432434B () + { CompletionDataList provider = CreateProvider ( @" public class E @@ -879,20 +879,20 @@ namespace MyNamespace } } } -");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("E"), "Class 'E' not found.");
- Assert.IsNotNull (provider.Find ("Inner"), "Class 'Inner' not found.");
- Assert.IsNull (provider.Find ("ReallyInner"), "Class 'ReallyInner' found, but shouldn't.");
+"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("E"), "Class 'E' not found."); + Assert.IsNotNull (provider.Find ("Inner"), "Class 'Inner' not found."); + Assert.IsNull (provider.Find ("ReallyInner"), "Class 'ReallyInner' found, but shouldn't."); } /// <summary> /// Bug 436705 - code completion for constructors does not handle class name collisions properly - /// </summary>
- [Test()]
- public void TestBug436705 ()
- {
+ /// </summary> + [Test()] + public void TestBug436705 () + { CompletionDataList provider = CreateProvider ( @" public class Point @@ -905,17 +905,17 @@ class C { { $System.Drawing.Point p = new $ } -}");
- Assert.IsNotNull (provider, "provider not found.");
+}"); + Assert.IsNotNull (provider, "provider not found."); Assert.AreEqual ("System.Drawing.Point", provider.DefaultCompletionString, "Completion string is incorrect"); - }
-
+ } + /// <summary> /// Bug 439963 - Lacking members in code completion - /// </summary>
- [Test()]
- public void TestBug439963 ()
- {
+ /// </summary> + [Test()] + public void TestBug439963 () + { CompletionDataList provider = CreateProvider ( @"public class StaticTest { @@ -936,27 +936,27 @@ public class Test $StaticTest.GetObject ().$ } } -");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Test1"), "Method 'Test1' not found.");
- Assert.IsNotNull (provider.Find ("Test2"), "Method 'Test2' not found.");
- Assert.IsNull (provider.Find ("GetObject"), "Method 'GetObject' found, but shouldn't.");
- }
-
+"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Test1"), "Method 'Test1' not found."); + Assert.IsNotNull (provider.Find ("Test2"), "Method 'Test2' not found."); + Assert.IsNull (provider.Find ("GetObject"), "Method 'GetObject' found, but shouldn't."); + } + /// <summary> /// Bug 441671 - Finalisers show up in code completion /// </summary> - [Test()]
+ [Test()] public void TestBug441671 () - {
- CompletionDataList provider = CreateProvider (
+ { + CompletionDataList provider = CreateProvider ( @"class TestClass { public TestClass (int i) { - }
- public void TestMethod ()
- {
+ } + public void TestMethod () + { } public ~TestClass () { @@ -970,22 +970,22 @@ class AClass TestClass c; $c.$ } -}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.AreEqual (5, provider.Count);
- CodeCompletionBugTests.CheckObjectMembers (provider); // 4 from System.Object
+} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.AreEqual (5, provider.Count); + CodeCompletionBugTests.CheckObjectMembers (provider); // 4 from System.Object Assert.IsNull (provider.Find (".dtor"), "destructor found - but shouldn't."); - Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found.");
- }
-
+ Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found."); + } + /// <summary> /// Bug 444110 - Code completion doesn't activate /// </summary> - [Test()]
+ [Test()] public void TestBug444110 () - {
- CompletionDataList provider = CreateProvider (
+ { + CompletionDataList provider = CreateProvider ( @"using System; using System.Collections.Generic; @@ -1013,50 +1013,50 @@ namespace CCTests $t.TemplateClass.$ } } -}");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.AreEqual (5, provider.Count);
- CodeCompletionBugTests.CheckObjectMembers (provider); // 4 from System.Object
- Assert.IsNotNull (provider.Find ("TestField"), "field 'TestField' not found.");
- }
-
+}"); + Assert.IsNotNull (provider, "provider not found."); + Assert.AreEqual (5, provider.Count); + CodeCompletionBugTests.CheckObjectMembers (provider); // 4 from System.Object + Assert.IsNotNull (provider.Find ("TestField"), "field 'TestField' not found."); + } + /// <summary> /// Bug 460234 - Invalid options shown when typing 'override' /// </summary> - [Test()]
+ [Test()] public void TestBug460234 () - {
- CompletionDataList provider = CreateProvider (
-@"
-namespace System {
- public class Object
- {
- public virtual int GetHashCode ()
- {
- }
- protected virtual void Finalize ()
- {
- } - }
-}
-public class TestMe : System.Object
-{
- $override $
-}");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.AreEqual (1, provider.Count);
- Assert.IsNull (provider.Find ("Finalize"), "method 'Finalize' found, but shouldn't.");
- Assert.IsNotNull (provider.Find ("GetHashCode"), "method 'GetHashCode' not found.");
- }
-
+ { + CompletionDataList provider = CreateProvider ( +@" +namespace System { + public class Object + { + public virtual int GetHashCode () + { + } + protected virtual void Finalize () + { + } + } +} +public class TestMe : System.Object +{ + $override $ +}"); + Assert.IsNotNull (provider, "provider not found."); + Assert.AreEqual (1, provider.Count); + Assert.IsNull (provider.Find ("Finalize"), "method 'Finalize' found, but shouldn't."); + Assert.IsNotNull (provider.Find ("GetHashCode"), "method 'GetHashCode' not found."); + } + /// <summary> /// Bug 457003 - code completion shows variables out of scope /// </summary> - [Test()]
+ [Test()] public void TestBug457003 () - {
- CompletionDataList provider = CreateProvider (
-@"
+ { + CompletionDataList provider = CreateProvider ( +@" class A { public void Test () @@ -1071,19 +1071,19 @@ class A } } } -");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsTrue (provider.Count == 0, "variable 'st' found, but shouldn't.");
- }
-
+"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsTrue (provider.Count == 0, "variable 'st' found, but shouldn't."); + } + /// <summary> /// Bug 457237 - code completion doesn't show static methods when setting global variable /// </summary> - [Test()]
+ [Test()] public void TestBug457237 () - {
- CompletionDataList provider = CreateProvider (
-@"
+ { + CompletionDataList provider = CreateProvider ( +@" class Test { public static double Val = 0.5; @@ -1093,63 +1093,63 @@ class Test2 { $double dd = Test.$ } -");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Val"), "field 'Val' not found.");
- }
-
+"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Val"), "field 'Val' not found."); + } + /// <summary> /// Bug 459682 - Static methods/properties don't show up in subclasses /// </summary> - [Test()]
+ [Test()] public void TestBug459682 () - {
- CompletionDataList provider = CreateProvider (
+ { + CompletionDataList provider = CreateProvider ( @"public class BaseC { public static int TESTER; } public class Child : BaseC -{
+{ public Child() { $Child.$ } } -");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("TESTER"), "field 'TESTER' not found.");
- }
-
+"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("TESTER"), "field 'TESTER' not found."); + } + /// <summary> /// Bug 466692 - Missing completion for return/break keywords after yield /// </summary> - [Test()]
+ [Test()] public void TestBug466692 () - {
- CompletionDataList provider = CreateProvider (
-@"
-public class TestMe
-{
- public int Test ()
- {
- $yield $
- }
-}");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.AreEqual (2, provider.Count);
- Assert.IsNotNull (provider.Find ("break"), "keyword 'break' not found");
- Assert.IsNotNull (provider.Find ("return"), "keyword 'return' not found");
- }
-
+ { + CompletionDataList provider = CreateProvider ( +@" +public class TestMe +{ + public int Test () + { + $yield $ + } +}"); + Assert.IsNotNull (provider, "provider not found."); + Assert.AreEqual (2, provider.Count); + Assert.IsNotNull (provider.Find ("break"), "keyword 'break' not found"); + Assert.IsNotNull (provider.Find ("return"), "keyword 'return' not found"); + } + /// <summary> /// Bug 467507 - No completion of base members inside explicit events /// </summary> - [Test()]
+ [Test()] public void TestBug467507 () - {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"
+ { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@" using System; class Test @@ -1167,21 +1167,21 @@ class Test } } } -");
- Assert.IsNotNull (provider, "provider not found.");
-
- Assert.IsNotNull (provider.Find ("TestMe"), "method 'TestMe' not found");
- Assert.IsNotNull (provider.Find ("value"), "keyword 'value' not found");
- }
-
+"); + Assert.IsNotNull (provider, "provider not found."); + + Assert.IsNotNull (provider.Find ("TestMe"), "method 'TestMe' not found"); + Assert.IsNotNull (provider.Find ("value"), "keyword 'value' not found"); + } + /// <summary> /// Bug 444643 - Extension methods don't show up on array types /// </summary> - [Test()]
+ [Test()] public void TestBug444643 () - {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"
+ { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@" using System; using System.Collections.Generic; @@ -1196,2257 +1196,2257 @@ using System.Collections.Generic; class MainClass { public static void Main(string[] args) - {
+ { $args.$ } } -");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("TestExt"), "method 'TestExt' not found");
- }
-
+"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("TestExt"), "method 'TestExt' not found"); + } + /// <summary> /// Bug 471935 - Code completion window not showing in MD1CustomDataItem.cs /// </summary> - [Test()]
- public void TestBug471935 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"
-public class AClass
-{
- public AClass Test ()
- {
- if (true) {
- AClass data;
- $data.$
- return data;
- } else if (false) {
- AClass data;
- return data;
- }
- return null;
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
-
- Assert.IsNotNull (provider.Find ("Test"), "method 'Test' not found");
- }
-
- /// <summary>
- /// Bug 471937 - Code completion of 'new' showing invorrect entries
- /// </summary>
- [Test()]
- public void TestBug471937 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"
-class B
-{
-}
-
-class A
-{
- public void Test()
- {
- int i = 5;
- i += 5;
- $A a = new $
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
-
- Assert.IsNull (provider.Find ("B"), "class 'B' found, but shouldn'tj.");
- }
-
- /// <summary>
- /// Bug 473686 - Constants are not included in code completion
- /// </summary>
- [Test()]
- public void TestBug473686 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"
-class ATest
-{
- const int TESTCONST = 0;
-
- static void Test()
- {
- $$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
-
- Assert.IsNotNull (provider.Find ("TESTCONST"), "constant 'TESTCONST' not found.");
- }
-
- /// <summary>
- /// Bug 473849 - Classes with no visible constructor shouldn't appear in "new" completion
- /// </summary>
- [Test()]
- public void TestBug473849 ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-class TestB
-{
- protected TestB()
- {
- }
-}
-
-class TestC : TestB
-{
- internal TestC ()
- {
- }
-}
-
-class TestD : TestB
-{
- public TestD ()
- {
- }
-}
-
-class TestE : TestD
-{
- protected TestE ()
- {
- }
-}
-
-class Test : TestB
-{
- void TestMethod ()
- {
- $TestB test = new $
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
-
- Assert.IsNull (provider.Find ("TestE"), "class 'TestE' found, but shouldn't.");
- Assert.IsNotNull (provider.Find ("TestD"), "class 'TestD' not found");
- Assert.IsNotNull (provider.Find ("TestC"), "class 'TestC' not found");
- Assert.IsNotNull (provider.Find ("TestB"), "class 'TestB' not found");
- Assert.IsNotNull (provider.Find ("Test"), "class 'Test' not found");
- }
-
- /// <summary>
- /// Bug 474199 - Code completion not working for a nested class
- /// </summary>
- [Test()]
- public void TestBug474199A ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-public class InnerTest
-{
- public class Inner
- {
- public void Test()
- {
- }
- }
-}
-
-public class ExtInner : InnerTest
-{
-}
-
-class Test
-{
- public void TestMethod ()
- {
- var inner = new ExtInner.Inner ();
- $inner.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Test"), "method 'Test' not found");
- }
-
- /// <summary>
- /// Bug 474199 - Code completion not working for a nested class
- /// </summary>
- [Test()]
- public void TestBug474199B ()
- {
- IParameterDataProvider provider = ParameterCompletionTests.CreateProvider (
-@"
-public class InnerTest
-{
- public class Inner
- {
- public Inner(string test)
- {
- }
- }
-}
-
-public class ExtInner : InnerTest
-{
-}
-
-class Test
-{
- public void TestMethod ()
- {
- $new ExtInner.Inner ($
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.AreEqual (1, provider.OverloadCount, "There should be one overload");
- Assert.AreEqual (1, provider.GetParameterCount(0), "Parameter 'test' should exist");
- }
-
- /// <summary>
- /// Bug 350862 - Autocomplete bug with enums
- /// </summary>
- [Test()]
- public void TestBug350862 ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-public enum MyEnum {
- A,
- B,
- C
-}
-
-public class Test
-{
- MyEnum item;
- public void Method (MyEnum val)
- {
- $item = $
- }
-}
-
-");
- Assert.IsNotNull (provider, "provider not found.");
-
- Assert.IsNotNull (provider.Find ("val"), "parameter 'val' not found");
- }
-
- /// <summary>
- /// Bug 470954 - using System.Windows.Forms is not honored
- /// </summary>
- [Test()]
- public void TestBug470954 ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-public class Control
-{
- public MouseButtons MouseButtons { get; set; }
-}
-
-public enum MouseButtons {
- Left, Right
-}
-
-public class SomeControl : Control
-{
- public void Run ()
- {
- $MouseButtons m = MouseButtons.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
-
- Assert.IsNotNull (provider.Find ("Left"), "enum 'Left' not found");
- Assert.IsNotNull (provider.Find ("Right"), "enum 'Right' not found");
- }
-
- /// <summary>
- /// Bug 470954 - using System.Windows.Forms is not honored
- /// </summary>
- [Test()]
- public void TestBug470954_bis ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-public class Control
-{
- public string MouseButtons { get; set; }
-}
-
-public enum MouseButtons {
- Left, Right
-}
-
-public class SomeControl : Control
-{
- public void Run ()
- {
- $int m = MouseButtons.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
-
- Assert.IsNull (provider.Find ("Left"), "enum 'Left' found");
- Assert.IsNull (provider.Find ("Right"), "enum 'Right' found");
- }
-
- /// <summary>
- /// Bug 487236 - Object initializer completion uses wrong type
- /// </summary>
- [Test()]
- public void TestBug487236 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"
-public class A
-{
- public string Name { get; set; }
-}
-
-class MyTest
-{
- public void Test ()
- {
- $var x = new A () { $
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
-
- Assert.IsNotNull (provider.Find ("Name"), "property 'Name' not found.");
- }
-
- /// <summary>
- /// Bug 487236 - Object initializer completion uses wrong type
- /// </summary>
- [Test()]
- public void TestBug487236B ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"
-public class A
-{
- public string Name { get; set; }
-}
-
-class MyTest
-{
- public void Test ()
- {
- $A x = new NotExists () { $
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
-
- Assert.IsNull (provider.Find ("Name"), "property 'Name' found, but shouldn't'.");
- }
-
- /// <summary>
- /// Bug 487228 - No intellisense for implicit arrays
- /// </summary>
- [Test()]
- public void TestBug487228 ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-public class Test
-{
- public void Method ()
- {
- var v = new [] { new Test () };
- $v[0].$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
-
- Assert.IsNotNull (provider.Find ("Method"), "method 'Method' not found");
- }
-
- /// <summary>
- /// Bug 487218 - var does not work with arrays
- /// </summary>
- [Test()]
- public void TestBug487218 ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-public class Test
-{
- public void Method ()
- {
- var v = new Test[] { new Test () };
- $v[0].$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
-
- Assert.IsNotNull (provider.Find ("Method"), "method 'Method' not found");
- }
-
- /// <summary>
- /// Bug 487206 - Intellisense not working
- /// </summary>
- [Test()]
- public void TestBug487206 ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-class CastByExample
-{
- static T Cast<T> (object obj, T type)
- {
- return (T) obj;
- }
-
- static void Main ()
- {
- var typed = Cast (o, new { Foo = 5 });
- $typed.$
- }
-}");
- Assert.IsNotNull (provider, "provider not found.");
-
- Assert.IsNotNull (provider.Find ("Foo"), "property 'Foo' not found");
- }
-
- /// <summary>
- /// Bug 487203 - Extension methods not working
- /// </summary>
- [Test()]
- public void TestBug487203 ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-using System;
-using System.Collections.Generic;
-
-static class Linq
-{
- public static IEnumerable<T> Select<S, T> (this IEnumerable<S> collection, Func<S, T> func)
- {
- }
-}
-
-class Program
-{
- public void Foo ()
- {
- Program[] prgs;
- foreach (var prg in (from Program p in prgs select p)) {
- $prg.$
- }
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Foo"), "method 'Foo' not found");
- }
-
- /// <summary>
- /// Bug 491020 - Wrong typeof intellisense
- /// </summary>
- [Test()]
- public void TestBug491020 ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-public class EventClass<T>
-{
- public class Inner {}
- public delegate void HookDelegate (T del);
- public void Method ()
- {}
-}
-
-public class Test
-{
- public static void Main ()
- {
- $EventClass<int>.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Inner"), "class 'Inner' not found.");
- Assert.IsNotNull (provider.Find ("HookDelegate"), "delegate 'HookDelegate' not found.");
- Assert.IsNull (provider.Find ("Method"), "method 'Method' found, but shouldn't.");
- }
-
- /// <summary>
- /// Bug 491020 - Wrong typeof intellisense
- /// It's a different case when the class is inside a namespace.
- /// </summary>
- [Test()]
- public void TestBug491020B ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-
-namespace A {
- public class EventClass<T>
- {
- public class Inner {}
- public delegate void HookDelegate (T del);
- public void Method ()
- {}
- }
-}
-
-public class Test
-{
- public static void Main ()
- {
- $A.EventClass<int>.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Inner"), "class 'Inner' not found.");
- Assert.IsNotNull (provider.Find ("HookDelegate"), "delegate 'HookDelegate' not found.");
- Assert.IsNull (provider.Find ("Method"), "method 'Method' found, but shouldn't.");
- }
-
- /// <summary>
- /// Bug 491019 - No intellisense for recursive generics
- /// </summary>
- [Test()]
- public void TestBug491019 ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-public abstract class NonGenericBase
-{
- public abstract int this[int i] { get; }
-}
-
-public abstract class GenericBase<T> : NonGenericBase where T : GenericBase<T>
-{
- T Instance { get { return default (T); } }
-
- public void Foo ()
- {
- $Instance.Instance.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Instance"), "property 'Instance' not found.");
- Assert.IsNull (provider.Find ("this"), "'this' found, but shouldn't.");
- }
-
-
-
- /// <summary>
- /// Bug 429034 - Class alias completion not working properly
- /// </summary>
- [Test()]
- public void TestBug429034 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"
-using Path = System.IO.Path;
-
-class Test
-{
- void Test ()
- {
- $$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Path"), "class 'Path' not found.");
- }
-
- /// <summary>
- /// Bug 429034 - Class alias completion not working properly
- /// </summary>
- [Test()]
- public void TestBug429034B ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-using Path = System.IO.Path;
-
-class Test
-{
- void Test ()
- {
- $Path.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("DirectorySeparatorChar"), "method 'PathTest' not found.");
- }
-
- [Test()]
- public void TestInvalidCompletion ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-class TestClass
-{
- public void TestMethod ()
- {
- }
-}
-
-class Test
-{
- public void Foo ()
- {
- TestClass tc;
- $tc.garbage.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNull (provider.Find ("TestMethod"), "method 'TestMethod' found, but shouldn't.");
- }
-
- /// <summary>
- /// Bug 510919 - Code completion does not show interface method when not using a local var
- /// </summary>
- [Test()]
- public void TestBug510919 ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-public class Foo : IFoo
-{
- public void Bar () { }
-}
-
-public interface IFoo
-{
- void Bar ();
-}
-
-public class Program
-{
- static IFoo GiveMeFoo ()
- {
- return new Foo ();
- }
-
- static void Main ()
- {
- $GiveMeFoo ().$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Bar"), "method 'Bar' not found.");
- }
-
-
- /// <summary>
- /// Bug 526667 - wrong code completion in object initialisation (new O() {...};)
- /// </summary>
- [Test()]
- public void TestBug526667 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"
-using System;
-using System.Collections.Generic;
-
-public class O
-{
- public string X {
- get;
- set;
- }
- public string Y {
- get;
- set;
- }
- public List<string> Z {
- get;
- set;
- }
-
- public static O A ()
- {
- return new O {
- X = ""x"",
- Z = new List<string> (new string[] {
- ""abc"",
- ""def""
- })
- $, $
- };
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Y"), "property 'Y' not found.");
- }
-
-
-
- /// <summary>
- /// Bug 538208 - Go to declaration not working over a generic method...
- /// </summary>
- [Test()]
- public void TestBug538208 ()
- {
- // We've to test 2 expressions for this bug. Since there are 2 ways of accessing
- // members.
- // First: the identifier expression
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"
-class MyClass
-{
- public string Test { get; set; }
-
- T foo<T>(T arg)
- {
- return arg;
- }
-
- public void Main(string[] args)
- {
- var myObject = foo<MyClass>(new MyClass());
- $myObject.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Test"), "property 'Test' not found.");
-
- // now the member reference expression
- provider = CreateCtrlSpaceProvider (
-@"
-class MyClass2
-{
- public string Test { get; set; }
-
- T foo<T>(T arg)
- {
- return arg;
- }
-
- public void Main(string[] args)
- {
- var myObject = this.foo<MyClass2>(new MyClass2());
- $myObject.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Test"), "property 'Test' not found.");
- }
-
- /// <summary>
- /// Bug 542976 resolution problem
- /// </summary>
- [Test()]
- public void TestBug542976 ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-class KeyValuePair<S, T>
-{
- public S Key { get; set;}
- public T Value { get; set;}
-}
-
-class TestMe<T> : System.Collections.Generic.IEnumerable<T>
-{
- public System.Collections.Generic.IEnumerator<T> GetEnumerator ()
- {
- throw new System.NotImplementedException();
- }
-
- System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator ()
- {
- throw new System.NotImplementedException();
- }
-}
-
-namespace TestMe
-{
- class Bar
- {
- public int Field;
- }
-
- class Test
- {
- void Foo (TestMe<KeyValuePair<Bar, int>> things)
- {
- foreach (var thing in things) {
- $thing.Key.$
- }
- }
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Field"), "field 'Field' not found.");
- }
-
-
- /// <summary>
- /// Bug 545189 - C# resolver bug
- /// </summary>
- [Test()]
- public void TestBug545189A ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-class A<T>
-{
- class B
- {
- public T field;
- }
-}
-
-public class Foo
-{
- public void Bar ()
- {
- A<Foo>.B baz = new A<Foo>.B ();
- $baz.field.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Bar"), "method 'Bar' not found.");
- }
-
- /// <summary>
- /// Bug 549864 - Intellisense does not work properly with expressions
- /// </summary>
- [Test()]
- public void TestBug549864 ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-delegate T MyFunc<S, T> (S t);
-
-class TestClass
-{
- public string Value {
- get;
- set;
- }
-
- public static object GetProperty<TType> (MyFunc<TType, object> expression)
- {
- return null;
- }
- private static object ValueProperty = TestClass.GetProperty<TestClass> ($x => x.$);
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Value"), "property 'Value' not found.");
- }
-
-
- /// <summary>
- /// Bug 550185 - Intellisence for extension methods
- /// </summary>
- [Test()]
- public void TestBug550185 ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-public interface IMyinterface<T> {
- T Foo ();
-}
-
-public static class ExtMethods {
- public static int MyCountMethod(this IMyinterface<string> i)
- {
- return 0;
- }
-}
-
-class TestClass
-{
- void Test ()
- {
- IMyinterface<int> test;
- $test.$
- }
-}
-
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNull (provider.Find ("MyCountMet2hod"), "method 'MyCountMethod' found, but shouldn't.");
- }
-
-
- /// <summary>
- /// Bug 553101 – Enum completion does not use type aliases
- /// </summary>
- [Test()]
- public void TestBug553101 ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-namespace Some.Type
-{
- public enum Name { Foo, Bar }
-}
-
-namespace Test
-{
- using STN = Some.Type.Name;
-
- public class Main
- {
- public void TestMe ()
- {
- $STN foo = $
- }
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- }
-
- /// <summary>
- /// Bug 555523 - C# code completion gets confused by extension methods with same names as properties
- /// </summary>
- [Test()]
- public void TestBug555523A ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-class A
-{
- public int AA { get; set; }
-}
-
-class B
-{
- public int BB { get; set; }
-}
-
-static class ExtMethod
-{
- public static A Extension (this MyClass myClass)
- {
- return null;
- }
-}
-
-class MyClass
-{
- public B Extension {
- get;
- set;
- }
-}
-
-class MainClass
-{
- public static void Main (string[] args)
- {
- MyClass myClass;
- $myClass.Extension ().$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("AA"), "property 'AA' not found.");
- }
-
- /// <summary>
- /// Bug 555523 - C# code completion gets confused by extension methods with same names as properties
- /// </summary>
- [Test()]
- public void TestBug555523B ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-class A
-{
- public int AA { get; set; }
-}
-
-class B
-{
- public int BB { get; set; }
-}
-
-static class ExtMethod
-{
- public static A Extension (this MyClass myClass)
- {
- return null;
- }
-}
-
-class MyClass
-{
- public B Extension {
- get;
- set;
- }
-}
-
-class MainClass
-{
- public static void Main (string[] args)
- {
- MyClass myClass;
- $myClass.Extension.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("BB"), "property 'BB' not found.");
- }
-
-
- /// <summary>
- /// Bug 561964 - Wrong type in tooltip when there are two properties with the same name
- /// </summary>
- [Test()]
- public void TestBug561964 ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-interface A1 {
- int A { get; }
-}
-interface A2 {
- int B { get; }
-}
-
-interface IFoo {
- A1 Bar { get; }
-}
-
-class Foo : IFoo
-{
- A1 IFoo.Bar { get { return null; } }
- public A2 Bar { get { return null; } }
-
- public static int Main (string[] args)
- {
- $new Foo().Bar.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("B"), "property 'B' not found.");
- }
-
-
- /// <summary>
- /// Bug 568204 - Inconsistency in resolution
- /// </summary>
- [Test()]
- public void TestBug568204 ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-public class Style
-{
- public static Style TestMe ()
- {
- return new Style ();
- }
-
- public void Print ()
- {
- System.Console.WriteLine (""Hello World!"");
- }
-}
-
-public class Foo
-{
- public Style Style { get; set;}
-
- public void Bar ()
- {
- $Style.TestMe ().$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Print"), "method 'Print' not found.");
- }
-
- /// <summary>
- /// Bug 577225 - Inconsistent autocomplete on returned value of generic method.
- /// </summary>
- [Test()]
- public void TestBug577225 ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-using Foo;
-
-namespace Foo
-{
- public class FooBar
- {
- public void Bar ()
- {
- }
- }
-}
-
-namespace Other
-{
- public class MainClass
- {
- public static T Test<T> ()
- {
- return default (T);
- }
-
- public static void Main (string[] args)
- {
- $Test<FooBar> ().$
- }
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Bar"), "method 'Bar' not found.");
- }
-
-
-
- /// <summary>
- /// Bug 582017 - C# Generic Type Constraints
- /// </summary>
- [Test()]
- public void TestBug582017 ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-class Bar
-{
- public void MyMethod ()
- {
- }
-}
-
-class Foo
-{
- public static void Test<T> (T theObject) where T : Bar
- {
- $theObject.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("MyMethod"), "method 'MyMethod' not found.");
- }
-
- /// <summary>
- /// Bug 586304 - Intellisense does not show several linq extenion methods when using nested generic type
- /// </summary>
- [Test()]
- public void TestBug586304 ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-using System;
-using System.Collections.Generic;
-
-public static class ExtMethods
-{
- public static bool IsEmpty<T> (this IEnumerable<T> v)
- {
- return !v.Any ();
- }
-}
-
-public class Lazy<T> {}
-
-public class IntelliSenseProblems
-{
- public IEnumerable<Lazy<T>> GetLazies<T>()
- {
- return Enumerable.Empty<Lazy<T>>();
- }
-}
-
-public class Test
-{
- void test ()
- {
- var values = new IntelliSenseProblems ();
- $var x = values.GetLazies<string> ().$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("IsEmpty"), "method 'IsEmpty' not found.");
- }
-
- /// <summary>
- /// Bug 586304 - Intellisense does not show several linq extenion methods when using nested generic type
- /// </summary>
- [Test()]
- public void TestBug586304B ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-public delegate S Func<T, S> (T t);
-
-public class Lazy<T> {
- public virtual bool IsLazy ()
- {
- return true;
- }
-}
-
-static class ExtMethods
-{
- public static T Where<T>(this Lazy<T> t, Func<T, bool> pred)
- {
- return default (T);
- }
-}
-
-class MyClass
-{
- public void Test()
- {
- Lazy<Lazy<MyClass>> c;
- $c.Where (x => x.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNull (provider.Find ("Test"), "method 'Test' found, but shouldn't.");
- Assert.IsNotNull (provider.Find ("IsLazy"), "method 'IsLazy' not found.");
- }
-
-
- /// <summary>
- /// Bug 587543 - Intellisense ignores interface constraints
- /// </summary>
- [Test()]
- public void TestBug587543 ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-interface ITest
-{
- void Foo ();
-}
-
-class C
-{
- void Test<T> (T t) where T : ITest
- {
- $t.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Foo"), "method 'Foo' not found.");
- }
-
-
- /// <summary>
- /// Bug 587549 - Intellisense does not work with override constraints
- /// </summary>
- [Test()]
- public void TestBug587549 ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-public interface ITest
-{
- void Bar();
-}
-
-public class BaseClass
-{
- public void Foo ()
- {}
-}
-
-public abstract class Printer
-{
- public abstract void Print<T, U> (object x) where T : BaseClass, U where U : ITest;
-}
-
-public class PrinterImpl : Printer
-{
- public override void Print<A, B> (object x)
- {
- A a;
- $a.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Foo"), "method 'Foo' not found.");
- Assert.IsNotNull (provider.Find ("Bar"), "method 'Bar' not found.");
- }
-
- /// <summary>
- /// Bug 588223 - Intellisense does not recognize nested generics correctly.
- /// </summary>
- [Test()]
- public void TestBug588223 ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-class Lazy<T> { public void Foo () {} }
-class Lazy<T, S> { public void Bar () {} }
-
-class Test
-{
- public object Get ()
- {
- return null;
- }
-
- public Lazy<T> Get<T> ()
- {
- return null;
- }
-
- public Lazy<T, TMetaDataView> Get<T, TMetaDataView> ()
- {
- return null;
- }
-
- public Test ()
- {
- Test t = new Test ();
- var bug = t.Get<string, string> ();
- $bug.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Bar"), "method 'Bar' not found.");
- }
-
- /// <summary>
- /// Bug 592120 - Type resolver bug with this.Property[]
- /// </summary>
- [Test()]
- public void TestBug592120 ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-
-interface IBar
-{
- void Test ();
-}
-
-class Foo
-{
- public IBar[] X { get; set; }
-
- public void Bar ()
- {
- var y = this.X;
- $y.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNull (provider.Find ("Test"), "method 'Test' found, but shouldn't.");
- }
-
-
- /// <summary>
- /// Bug 576354 - Type inference failure
- /// </summary>
- [Test()]
- public void TestBug576354 ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-delegate T Func<S, T> (S s);
-
-class Foo
-{
- string str;
-
- public Foo (string str)
- {
- this.str = str;
- }
-
- public void Bar ()
- {
- System.Console.WriteLine (str);
- }
-}
-
-class MyTest
-{
- static T Test<T> (Func<string, T> myFunc)
- {
- return myFunc (""Hello World"");
- }
-
- public static void Main (string[] args)
- {
- var result = Test (str => new Foo (str));
- $result.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Bar"), "method 'Bar' not found.");
- }
-
- /// <summary>
- /// Bug 534680 - LINQ keywords missing from Intellisense
- /// </summary>
- [Test()]
- public void TestBug534680 ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-class Foo
-{
- public static void Main (string[] args)
- {
- $from str in args $
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("select"), "keyword 'select' not found.");
- }
-
- /// <summary>
- /// Bug 610006 - Intellisense gives members of return type of functions even when that function isn't invoked
- /// </summary>
- [Test()]
- public void TestBug610006 ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-class MainClass
-{
- public MainClass FooBar ()
- {
- }
-
- public void Test ()
- {
- $FooBar.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNull (provider.Find ("FooBar"), "method 'FooBar' found, but shouldn't.");
- }
-
-
- /// <summary>
- /// Bug 614045 - Types hidden by members are not formatted properly by ambience
- /// </summary>
- [Test()]
- public void TestBug614045 ()
- {
- CompletionDataList provider = CreateProvider (
-@"
-namespace A
-{
- enum Foo
- {
- One,
- Two,
- Three
- }
-}
-
-namespace B
-{
- using A;
-
- public class Baz
- {
- public string Foo;
-
- void Test (Foo a)
- {
- $switch (a) {
- case $
- }
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNull (provider.Find ("Foo"), "enum 'Foo' found, but shouldn't.");
- Assert.IsNotNull (provider.Find ("A.Foo"), "enum 'A.Foo' not found.");
- }
-
- /// <summary>
- /// Bug 615992 - Intellisense broken when calling generic method.
- /// </summary>
- [Test()]
- public void TestBug615992 ()
- {
- CompletionDataList provider = CreateProvider (
-@"public delegate void Act<T> (T t);
-
-public class Foo
-{
- public void Bar ()
- {
- }
-}
-
-class TestBase
-{
- protected void Method<T> (Act<T> action)
- {
- }
-}
-
-class Test : TestBase
-{
- public Test ()
- {
- $Method<Foo> (f => f.$
- }
-}");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Bar"), "method 'Bar' not found.");
- }
-
- /// <summary>
- /// Bug 625064 - Internal classes aren't suggested for completion
- /// </summary>
- [Test()]
- public void TestBug625064 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"class Foo
-{
- class Bar { }
- $List<$
-}");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Bar"), "class 'Bar' not found.");
- }
-
-
- /// <summary>
- /// Bug 631875 - No Intellisense for arrays
- /// </summary>
- [Test()]
- public void TestBug631875 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"class C
-{
- static void Main ()
- {
- var objects = new[] { new { X = (object)null }};
- $objects[0].$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("X"), "property 'X' not found.");
- }
-
- /// <summary>
- /// Bug 632228 - Wrong var inference
- /// </summary>
- [Test()]
- public void TestBug632228 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"
-class C {
- public void FooBar () {}
- public static void Main ()
- {
- var thingToTest = new[] { new C (), 22, new object(), string.Empty, null };
- $thingToTest[0].$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNull (provider.Find ("FooBar"), "method 'FooBar' found, but shouldn't.");
- }
-
- /// <summary>
- /// Bug 632696 - No intellisense for constraints
- /// </summary>
- [Test()]
- public void TestBug632696 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"
-class Program
-{
- void Foo ()
- {
- }
-
- static void Foo<T> () where T : Program
- {
- var s = new[] { default(T) };
- $s[0].$
- }
-}");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Foo"), "method 'Foo' not found.");
- }
-
- [Test()]
- public void TestCommentsWithWindowsEol ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider ("class TestClass\r\n{\r\npublic static void Main (string[] args) {\r\n// TestComment\r\n$args.$\r\n}\r\n}");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("ToString"), "method 'ToString' not found.");
- }
-
- [Test()]
- public void TestGhostEntryBug ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"
-using System.IO;
-
-class TestClass
-{
- public Path Path {
- get;
- set;
- }
-
- void Test ()
- {
- $$
- }
-}");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNull (provider.Find ("System.IO.Path"), "'System.IO.Path' found but shouldn't.");
- Assert.IsNotNull (provider.Find ("Path"), "property 'Path' not found.");
- }
-
-
- /// <summary>
- /// Bug 648562 – Abstract members are allowed by base call
- /// </summary>
- [Test()]
- public void TestBug648562 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"using System;
-
-abstract class A
-{
- public abstract void Foo<T> (T type);
-}
-
-class B : A
-{
- public override void Foo<U> (U type)
- {
- $base.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNull (provider.Find ("Foo"), "method 'Foo' found, but shouldn't.");
- }
-
- /// <summary>
- /// Bug 633767 - Wrong intellisense for simple lambda
- /// </summary>
- [Test()]
- public void TestBug633767 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"using System;
-
-public class E
-{
- public int Foo { get; set; }
-}
-
-public class C
-{
- delegate void D<T> (T t);
-
- static T M<T> (T t, D<T> a)
- {
- return t;
- }
-
- static void MethodArg (object o)
- {
- }
-
- public static int Main ()
- {
- D<object> action = l => Console.WriteLine (l);
- var b = M (new E (), action);
- $b.$
- }
-}");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNull (provider.Find ("Foo"), "property 'Foo' found, but shouldn't.");
- }
-
- /// <summary>
- /// Bug 616208 - Renaming a struct/class is renaming too much
- /// </summary>
- [Test()]
- public void TestBug616208 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"using System;
-
-namespace System
-{
- public class Foo { public int Bar; };
-}
-
-namespace test.Util
-{
- public class Foo { public string x; }
-}
-
-namespace Test
-{
- public class A
- {
- public Foo X;
-
- public A ()
- {
- $X.$
- }
- }
-}
-
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Bar"), "property 'Bar' not found.");
- }
-
- /// <summary>
- /// Bug 668135 - Problems with "new" completion
- /// </summary>
- [Test()]
- public void TestBug668135a ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"public class A
-{
- public A ()
- {
- string test;
- $Console.WriteLine (test = new $
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("string"), "class 'string' not found.");
- }
-
- /// <summary>
- /// Bug 668453 - var completion infers var type too eagerly
- /// </summary>
- [Test()]
- public void TestBug668453 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"public class Test
-{
- private void FooBar ()
- {
- $var str = new $
- FooBar ();
- }
-}
-
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNull (provider.Find ("FooBar"), "method 'FooBar' found.");
- }
-
- /// <summary>
- /// Bug 669285 - Extension method on T[] shows up on T
- /// </summary>
- [Test()]
- public void TestBug669285 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"static class Ext
-{
- public static void Foo<T> (this T[] t)
- {
- }
-}
-
-public class Test<T>
-{
- public void Foo ()
- {
- T t;
- $t.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNull (provider.Find ("Foo"), "method 'Foo' found.");
- provider = CreateCtrlSpaceProvider (
-@"static class Ext
-{
- public static void Foo<T> (this T[] t)
- {
- }
-}
-
-public class Test<T>
-{
- public void Foo ()
- {
- T[] t;
- $t.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Foo"), "method 'Foo' not found.");
- }
-
-
- /// <summary>
- /// Bug 669818 - Autocomplete missing for new nested class
- /// </summary>
- [Test()]
- public void TestBug669818 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"using System;
-public class Foo
-{
- public class Bar
- {
- }
- public static void FooBar () {}
-}
-class TestNested
-{
- public static void Main (string[] args)
- {
- $new Foo.$
- }
-}
-
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Bar"), "class 'Bar' not found.");
- Assert.IsNull (provider.Find ("FooBar"), "method 'FooBar' found.");
- }
-
- /// <summary>
- /// Bug 674514 - foreach value should not be in the completion list
- /// </summary>
- [Test()]
- public void TestBug674514 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"using System;
-using System.Linq;
-using System.Collections.Generic;
-
-class Foo
-{
- public static void Main (string[] args)
- {
- $foreach (var arg in $
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("args"), "parameter 'args' not found.");
- Assert.IsNull (provider.Find ("arg"), "variable 'arg' found.");
-
- provider = CreateCtrlSpaceProvider (
-@"using System;
-using System.Linq;
-using System.Collections.Generic;
-
-class Foo
-{
- public static void Main (string[] args)
- {
- $foreach (var arg in args)
- Console.WriteLine ($
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("args"), "parameter 'args' not found.");
- Assert.IsNotNull (provider.Find ("arg"), "variable 'arg' not found.");
- }
-
- /// <summary>
- /// Bug 675436 - Completion is trying to complete symbol names in declarations
- /// </summary>
- [Test()]
- public void TestBug675436_LocalVar ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"class Test
-{
- public static void Main (string[] args)
- {
- $int test = $
- }
-}
-");
- Assert.IsNull (provider.Find ("test"), "name 'test' found.");
- }
-
- /// <summary>
- /// Bug 675956 - Completion in for loops is broken
- /// </summary>
- [Test()]
- public void TestBug675956 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"class Test
-{
- public static void Main (string[] args)
- {
- $for (int i = 0; $
- }
-}
-");
- Assert.IsNotNull (provider.Find ("i"), "variable 'i' not found.");
- }
-
- /// <summary>
- /// Bug 676311 - auto completion too few proposals in fluent API (Moq)
- /// </summary>
- [Test()]
- public void TestBug676311 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"using System;
-
-namespace Test
-{
- public interface IFoo<T>
- {
- void Foo1 ();
- }
-
- public interface IFoo<T, S>
- {
- void Foo2 ();
- }
-
- public class Test<T>
- {
- public IFoo<T> TestMe (Expression<Action<T>> act)
- {
- return null;
- }
-
- public IFoo<T, S> TestMe<S> (Expression<Func<S, T>> func)
- {
- return null;
- }
-
- public string TestMethod (string str)
- {
- return str;
- }
- }
-
- class MainClass
- {
- public static void Main (string[] args)
- {
- var t = new Test<string> ();
- var s = t.TestMe (x => t.TestMethod (x));
- $s.$
- }
- }
-}");
- Assert.IsNotNull (provider.Find ("Foo2"), "method 'Foo2' not found.");
- }
-
- /// <summary>
- /// Bug 676311 - auto completion too few proposals in fluent API (Moq)
- /// </summary>
- [Test()]
- public void TestBug676311_Case2 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"using System;
-using System.Linq.Expressions;
-
-namespace Test
-{
- public interface IFoo<T>
- {
- void Foo1 ();
- }
-
- public interface IFoo<T, S>
- {
- void Foo2 ();
- }
-
- public class Test<T>
- {
- public IFoo<T> TestMe (Expression<Action<T>> act)
- {
- return null;
- }
-
- public IFoo<T, S> TestMe<S> (Expression<Func<S, T>> func)
- {
- return null;
- }
-
- public void TestMethod (string str)
- {
- }
- }
-
- class MainClass
- {
- public static void Main (string[] args)
- {
- var t = new Test<string> ();
- var s = t.TestMe (x => t.TestMethod (x));
- $s.$
- }
- }
-}");
- Assert.IsNotNull (provider.Find ("Foo1"), "method 'Foo2' not found.");
- }
-
- /// <summary>
- /// Bug 678340 - Cannot infer types from Dictionary<K,V>.Values
- /// </summary>
- [Test()]
- public void TestBug678340 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"using System;
-using System.Collections.Generic;
-
-public class Test
-{
- public void SomeMethod ()
- {
- var foo = new Dictionary<string,Test> ();
- foreach (var bar in foo.Values) {
+ [Test()] + public void TestBug471935 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@" +public class AClass +{ + public AClass Test () + { + if (true) { + AClass data; + $data.$ + return data; + } else if (false) { + AClass data; + return data; + } + return null; + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + + Assert.IsNotNull (provider.Find ("Test"), "method 'Test' not found"); + } + + /// <summary> + /// Bug 471937 - Code completion of 'new' showing invorrect entries + /// </summary> + [Test()] + public void TestBug471937 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@" +class B +{ +} + +class A +{ + public void Test() + { + int i = 5; + i += 5; + $A a = new $ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + + Assert.IsNull (provider.Find ("B"), "class 'B' found, but shouldn'tj."); + } + + /// <summary> + /// Bug 473686 - Constants are not included in code completion + /// </summary> + [Test()] + public void TestBug473686 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@" +class ATest +{ + const int TESTCONST = 0; + + static void Test() + { + $$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + + Assert.IsNotNull (provider.Find ("TESTCONST"), "constant 'TESTCONST' not found."); + } + + /// <summary> + /// Bug 473849 - Classes with no visible constructor shouldn't appear in "new" completion + /// </summary> + [Test()] + public void TestBug473849 () + { + CompletionDataList provider = CreateProvider ( +@" +class TestB +{ + protected TestB() + { + } +} + +class TestC : TestB +{ + internal TestC () + { + } +} + +class TestD : TestB +{ + public TestD () + { + } +} + +class TestE : TestD +{ + protected TestE () + { + } +} + +class Test : TestB +{ + void TestMethod () + { + $TestB test = new $ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + + Assert.IsNull (provider.Find ("TestE"), "class 'TestE' found, but shouldn't."); + Assert.IsNotNull (provider.Find ("TestD"), "class 'TestD' not found"); + Assert.IsNotNull (provider.Find ("TestC"), "class 'TestC' not found"); + Assert.IsNotNull (provider.Find ("TestB"), "class 'TestB' not found"); + Assert.IsNotNull (provider.Find ("Test"), "class 'Test' not found"); + } + + /// <summary> + /// Bug 474199 - Code completion not working for a nested class + /// </summary> + [Test()] + public void TestBug474199A () + { + CompletionDataList provider = CreateProvider ( +@" +public class InnerTest +{ + public class Inner + { + public void Test() + { + } + } +} + +public class ExtInner : InnerTest +{ +} + +class Test +{ + public void TestMethod () + { + var inner = new ExtInner.Inner (); + $inner.$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Test"), "method 'Test' not found"); + } + + /// <summary> + /// Bug 474199 - Code completion not working for a nested class + /// </summary> + [Test()] + public void TestBug474199B () + { + IParameterDataProvider provider = ParameterCompletionTests.CreateProvider ( +@" +public class InnerTest +{ + public class Inner + { + public Inner(string test) + { + } + } +} + +public class ExtInner : InnerTest +{ +} + +class Test +{ + public void TestMethod () + { + $new ExtInner.Inner ($ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.AreEqual (1, provider.OverloadCount, "There should be one overload"); + Assert.AreEqual (1, provider.GetParameterCount(0), "Parameter 'test' should exist"); + } + + /// <summary> + /// Bug 350862 - Autocomplete bug with enums + /// </summary> + [Test()] + public void TestBug350862 () + { + CompletionDataList provider = CreateProvider ( +@" +public enum MyEnum { + A, + B, + C +} + +public class Test +{ + MyEnum item; + public void Method (MyEnum val) + { + $item = $ + } +} + +"); + Assert.IsNotNull (provider, "provider not found."); + + Assert.IsNotNull (provider.Find ("val"), "parameter 'val' not found"); + } + + /// <summary> + /// Bug 470954 - using System.Windows.Forms is not honored + /// </summary> + [Test()] + public void TestBug470954 () + { + CompletionDataList provider = CreateProvider ( +@" +public class Control +{ + public MouseButtons MouseButtons { get; set; } +} + +public enum MouseButtons { + Left, Right +} + +public class SomeControl : Control +{ + public void Run () + { + $MouseButtons m = MouseButtons.$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + + Assert.IsNotNull (provider.Find ("Left"), "enum 'Left' not found"); + Assert.IsNotNull (provider.Find ("Right"), "enum 'Right' not found"); + } + + /// <summary> + /// Bug 470954 - using System.Windows.Forms is not honored + /// </summary> + [Test()] + public void TestBug470954_bis () + { + CompletionDataList provider = CreateProvider ( +@" +public class Control +{ + public string MouseButtons { get; set; } +} + +public enum MouseButtons { + Left, Right +} + +public class SomeControl : Control +{ + public void Run () + { + $int m = MouseButtons.$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + + Assert.IsNull (provider.Find ("Left"), "enum 'Left' found"); + Assert.IsNull (provider.Find ("Right"), "enum 'Right' found"); + } + + /// <summary> + /// Bug 487236 - Object initializer completion uses wrong type + /// </summary> + [Test()] + public void TestBug487236 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@" +public class A +{ + public string Name { get; set; } +} + +class MyTest +{ + public void Test () + { + $var x = new A () { $ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + + Assert.IsNotNull (provider.Find ("Name"), "property 'Name' not found."); + } + + /// <summary> + /// Bug 487236 - Object initializer completion uses wrong type + /// </summary> + [Test()] + public void TestBug487236B () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@" +public class A +{ + public string Name { get; set; } +} + +class MyTest +{ + public void Test () + { + $A x = new NotExists () { $ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + + Assert.IsNull (provider.Find ("Name"), "property 'Name' found, but shouldn't'."); + } + + /// <summary> + /// Bug 487228 - No intellisense for implicit arrays + /// </summary> + [Test()] + public void TestBug487228 () + { + CompletionDataList provider = CreateProvider ( +@" +public class Test +{ + public void Method () + { + var v = new [] { new Test () }; + $v[0].$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + + Assert.IsNotNull (provider.Find ("Method"), "method 'Method' not found"); + } + + /// <summary> + /// Bug 487218 - var does not work with arrays + /// </summary> + [Test()] + public void TestBug487218 () + { + CompletionDataList provider = CreateProvider ( +@" +public class Test +{ + public void Method () + { + var v = new Test[] { new Test () }; + $v[0].$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + + Assert.IsNotNull (provider.Find ("Method"), "method 'Method' not found"); + } + + /// <summary> + /// Bug 487206 - Intellisense not working + /// </summary> + [Test()] + public void TestBug487206 () + { + CompletionDataList provider = CreateProvider ( +@" +class CastByExample +{ + static T Cast<T> (object obj, T type) + { + return (T) obj; + } + + static void Main () + { + var typed = Cast (o, new { Foo = 5 }); + $typed.$ + } +}"); + Assert.IsNotNull (provider, "provider not found."); + + Assert.IsNotNull (provider.Find ("Foo"), "property 'Foo' not found"); + } + + /// <summary> + /// Bug 487203 - Extension methods not working + /// </summary> + [Test()] + public void TestBug487203 () + { + CompletionDataList provider = CreateProvider ( +@" +using System; +using System.Collections.Generic; + +static class Linq +{ + public static IEnumerable<T> Select<S, T> (this IEnumerable<S> collection, Func<S, T> func) + { + } +} + +class Program +{ + public void Foo () + { + Program[] prgs; + foreach (var prg in (from Program p in prgs select p)) { + $prg.$ + } + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Foo"), "method 'Foo' not found"); + } + + /// <summary> + /// Bug 491020 - Wrong typeof intellisense + /// </summary> + [Test()] + public void TestBug491020 () + { + CompletionDataList provider = CreateProvider ( +@" +public class EventClass<T> +{ + public class Inner {} + public delegate void HookDelegate (T del); + public void Method () + {} +} + +public class Test +{ + public static void Main () + { + $EventClass<int>.$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Inner"), "class 'Inner' not found."); + Assert.IsNotNull (provider.Find ("HookDelegate"), "delegate 'HookDelegate' not found."); + Assert.IsNull (provider.Find ("Method"), "method 'Method' found, but shouldn't."); + } + + /// <summary> + /// Bug 491020 - Wrong typeof intellisense + /// It's a different case when the class is inside a namespace. + /// </summary> + [Test()] + public void TestBug491020B () + { + CompletionDataList provider = CreateProvider ( +@" + +namespace A { + public class EventClass<T> + { + public class Inner {} + public delegate void HookDelegate (T del); + public void Method () + {} + } +} + +public class Test +{ + public static void Main () + { + $A.EventClass<int>.$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Inner"), "class 'Inner' not found."); + Assert.IsNotNull (provider.Find ("HookDelegate"), "delegate 'HookDelegate' not found."); + Assert.IsNull (provider.Find ("Method"), "method 'Method' found, but shouldn't."); + } + + /// <summary> + /// Bug 491019 - No intellisense for recursive generics + /// </summary> + [Test()] + public void TestBug491019 () + { + CompletionDataList provider = CreateProvider ( +@" +public abstract class NonGenericBase +{ + public abstract int this[int i] { get; } +} + +public abstract class GenericBase<T> : NonGenericBase where T : GenericBase<T> +{ + T Instance { get { return default (T); } } + + public void Foo () + { + $Instance.Instance.$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Instance"), "property 'Instance' not found."); + Assert.IsNull (provider.Find ("this"), "'this' found, but shouldn't."); + } + + + + /// <summary> + /// Bug 429034 - Class alias completion not working properly + /// </summary> + [Test()] + public void TestBug429034 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@" +using Path = System.IO.Path; + +class Test +{ + void Test () + { + $$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Path"), "class 'Path' not found."); + } + + /// <summary> + /// Bug 429034 - Class alias completion not working properly + /// </summary> + [Test()] + public void TestBug429034B () + { + CompletionDataList provider = CreateProvider ( +@" +using Path = System.IO.Path; + +class Test +{ + void Test () + { + $Path.$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("DirectorySeparatorChar"), "method 'PathTest' not found."); + } + + [Test()] + public void TestInvalidCompletion () + { + CompletionDataList provider = CreateProvider ( +@" +class TestClass +{ + public void TestMethod () + { + } +} + +class Test +{ + public void Foo () + { + TestClass tc; + $tc.garbage.$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNull (provider.Find ("TestMethod"), "method 'TestMethod' found, but shouldn't."); + } + + /// <summary> + /// Bug 510919 - Code completion does not show interface method when not using a local var + /// </summary> + [Test()] + public void TestBug510919 () + { + CompletionDataList provider = CreateProvider ( +@" +public class Foo : IFoo +{ + public void Bar () { } +} + +public interface IFoo +{ + void Bar (); +} + +public class Program +{ + static IFoo GiveMeFoo () + { + return new Foo (); + } + + static void Main () + { + $GiveMeFoo ().$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Bar"), "method 'Bar' not found."); + } + + + /// <summary> + /// Bug 526667 - wrong code completion in object initialisation (new O() {...};) + /// </summary> + [Test()] + public void TestBug526667 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@" +using System; +using System.Collections.Generic; + +public class O +{ + public string X { + get; + set; + } + public string Y { + get; + set; + } + public List<string> Z { + get; + set; + } + + public static O A () + { + return new O { + X = ""x"", + Z = new List<string> (new string[] { + ""abc"", + ""def"" + }) + $, $ + }; + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Y"), "property 'Y' not found."); + } + + + + /// <summary> + /// Bug 538208 - Go to declaration not working over a generic method... + /// </summary> + [Test()] + public void TestBug538208 () + { + // We've to test 2 expressions for this bug. Since there are 2 ways of accessing + // members. + // First: the identifier expression + CompletionDataList provider = CreateCtrlSpaceProvider ( +@" +class MyClass +{ + public string Test { get; set; } + + T foo<T>(T arg) + { + return arg; + } + + public void Main(string[] args) + { + var myObject = foo<MyClass>(new MyClass()); + $myObject.$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Test"), "property 'Test' not found."); + + // now the member reference expression + provider = CreateCtrlSpaceProvider ( +@" +class MyClass2 +{ + public string Test { get; set; } + + T foo<T>(T arg) + { + return arg; + } + + public void Main(string[] args) + { + var myObject = this.foo<MyClass2>(new MyClass2()); + $myObject.$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Test"), "property 'Test' not found."); + } + + /// <summary> + /// Bug 542976 resolution problem + /// </summary> + [Test()] + public void TestBug542976 () + { + CompletionDataList provider = CreateProvider ( +@" +class KeyValuePair<S, T> +{ + public S Key { get; set;} + public T Value { get; set;} +} + +class TestMe<T> : System.Collections.Generic.IEnumerable<T> +{ + public System.Collections.Generic.IEnumerator<T> GetEnumerator () + { + throw new System.NotImplementedException(); + } + + System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator () + { + throw new System.NotImplementedException(); + } +} + +namespace TestMe +{ + class Bar + { + public int Field; + } + + class Test + { + void Foo (TestMe<KeyValuePair<Bar, int>> things) + { + foreach (var thing in things) { + $thing.Key.$ + } + } + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Field"), "field 'Field' not found."); + } + + + /// <summary> + /// Bug 545189 - C# resolver bug + /// </summary> + [Test()] + public void TestBug545189A () + { + CompletionDataList provider = CreateProvider ( +@" +class A<T> +{ + class B + { + public T field; + } +} + +public class Foo +{ + public void Bar () + { + A<Foo>.B baz = new A<Foo>.B (); + $baz.field.$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Bar"), "method 'Bar' not found."); + } + + /// <summary> + /// Bug 549864 - Intellisense does not work properly with expressions + /// </summary> + [Test()] + public void TestBug549864 () + { + CompletionDataList provider = CreateProvider ( +@" +delegate T MyFunc<S, T> (S t); + +class TestClass +{ + public string Value { + get; + set; + } + + public static object GetProperty<TType> (MyFunc<TType, object> expression) + { + return null; + } + private static object ValueProperty = TestClass.GetProperty<TestClass> ($x => x.$); +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Value"), "property 'Value' not found."); + } + + + /// <summary> + /// Bug 550185 - Intellisence for extension methods + /// </summary> + [Test()] + public void TestBug550185 () + { + CompletionDataList provider = CreateProvider ( +@" +public interface IMyinterface<T> { + T Foo (); +} + +public static class ExtMethods { + public static int MyCountMethod(this IMyinterface<string> i) + { + return 0; + } +} + +class TestClass +{ + void Test () + { + IMyinterface<int> test; + $test.$ + } +} + +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNull (provider.Find ("MyCountMet2hod"), "method 'MyCountMethod' found, but shouldn't."); + } + + + /// <summary> + /// Bug 553101 – Enum completion does not use type aliases + /// </summary> + [Test()] + public void TestBug553101 () + { + CompletionDataList provider = CreateProvider ( +@" +namespace Some.Type +{ + public enum Name { Foo, Bar } +} + +namespace Test +{ + using STN = Some.Type.Name; + + public class Main + { + public void TestMe () + { + $STN foo = $ + } + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + } + + /// <summary> + /// Bug 555523 - C# code completion gets confused by extension methods with same names as properties + /// </summary> + [Test()] + public void TestBug555523A () + { + CompletionDataList provider = CreateProvider ( +@" +class A +{ + public int AA { get; set; } +} + +class B +{ + public int BB { get; set; } +} + +static class ExtMethod +{ + public static A Extension (this MyClass myClass) + { + return null; + } +} + +class MyClass +{ + public B Extension { + get; + set; + } +} + +class MainClass +{ + public static void Main (string[] args) + { + MyClass myClass; + $myClass.Extension ().$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("AA"), "property 'AA' not found."); + } + + /// <summary> + /// Bug 555523 - C# code completion gets confused by extension methods with same names as properties + /// </summary> + [Test()] + public void TestBug555523B () + { + CompletionDataList provider = CreateProvider ( +@" +class A +{ + public int AA { get; set; } +} + +class B +{ + public int BB { get; set; } +} + +static class ExtMethod +{ + public static A Extension (this MyClass myClass) + { + return null; + } +} + +class MyClass +{ + public B Extension { + get; + set; + } +} + +class MainClass +{ + public static void Main (string[] args) + { + MyClass myClass; + $myClass.Extension.$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("BB"), "property 'BB' not found."); + } + + + /// <summary> + /// Bug 561964 - Wrong type in tooltip when there are two properties with the same name + /// </summary> + [Test()] + public void TestBug561964 () + { + CompletionDataList provider = CreateProvider ( +@" +interface A1 { + int A { get; } +} +interface A2 { + int B { get; } +} + +interface IFoo { + A1 Bar { get; } +} + +class Foo : IFoo +{ + A1 IFoo.Bar { get { return null; } } + public A2 Bar { get { return null; } } + + public static int Main (string[] args) + { + $new Foo().Bar.$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("B"), "property 'B' not found."); + } + + + /// <summary> + /// Bug 568204 - Inconsistency in resolution + /// </summary> + [Test()] + public void TestBug568204 () + { + CompletionDataList provider = CreateProvider ( +@" +public class Style +{ + public static Style TestMe () + { + return new Style (); + } + + public void Print () + { + System.Console.WriteLine (""Hello World!""); + } +} + +public class Foo +{ + public Style Style { get; set;} + + public void Bar () + { + $Style.TestMe ().$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Print"), "method 'Print' not found."); + } + + /// <summary> + /// Bug 577225 - Inconsistent autocomplete on returned value of generic method. + /// </summary> + [Test()] + public void TestBug577225 () + { + CompletionDataList provider = CreateProvider ( +@" +using Foo; + +namespace Foo +{ + public class FooBar + { + public void Bar () + { + } + } +} + +namespace Other +{ + public class MainClass + { + public static T Test<T> () + { + return default (T); + } + + public static void Main (string[] args) + { + $Test<FooBar> ().$ + } + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Bar"), "method 'Bar' not found."); + } + + + + /// <summary> + /// Bug 582017 - C# Generic Type Constraints + /// </summary> + [Test()] + public void TestBug582017 () + { + CompletionDataList provider = CreateProvider ( +@" +class Bar +{ + public void MyMethod () + { + } +} + +class Foo +{ + public static void Test<T> (T theObject) where T : Bar + { + $theObject.$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("MyMethod"), "method 'MyMethod' not found."); + } + + /// <summary> + /// Bug 586304 - Intellisense does not show several linq extenion methods when using nested generic type + /// </summary> + [Test()] + public void TestBug586304 () + { + CompletionDataList provider = CreateProvider ( +@" +using System; +using System.Collections.Generic; + +public static class ExtMethods +{ + public static bool IsEmpty<T> (this IEnumerable<T> v) + { + return !v.Any (); + } +} + +public class Lazy<T> {} + +public class IntelliSenseProblems +{ + public IEnumerable<Lazy<T>> GetLazies<T>() + { + return Enumerable.Empty<Lazy<T>>(); + } +} + +public class Test +{ + void test () + { + var values = new IntelliSenseProblems (); + $var x = values.GetLazies<string> ().$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("IsEmpty"), "method 'IsEmpty' not found."); + } + + /// <summary> + /// Bug 586304 - Intellisense does not show several linq extenion methods when using nested generic type + /// </summary> + [Test()] + public void TestBug586304B () + { + CompletionDataList provider = CreateProvider ( +@" +public delegate S Func<T, S> (T t); + +public class Lazy<T> { + public virtual bool IsLazy () + { + return true; + } +} + +static class ExtMethods +{ + public static T Where<T>(this Lazy<T> t, Func<T, bool> pred) + { + return default (T); + } +} + +class MyClass +{ + public void Test() + { + Lazy<Lazy<MyClass>> c; + $c.Where (x => x.$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNull (provider.Find ("Test"), "method 'Test' found, but shouldn't."); + Assert.IsNotNull (provider.Find ("IsLazy"), "method 'IsLazy' not found."); + } + + + /// <summary> + /// Bug 587543 - Intellisense ignores interface constraints + /// </summary> + [Test()] + public void TestBug587543 () + { + CompletionDataList provider = CreateProvider ( +@" +interface ITest +{ + void Foo (); +} + +class C +{ + void Test<T> (T t) where T : ITest + { + $t.$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Foo"), "method 'Foo' not found."); + } + + + /// <summary> + /// Bug 587549 - Intellisense does not work with override constraints + /// </summary> + [Test()] + public void TestBug587549 () + { + CompletionDataList provider = CreateProvider ( +@" +public interface ITest +{ + void Bar(); +} + +public class BaseClass +{ + public void Foo () + {} +} + +public abstract class Printer +{ + public abstract void Print<T, U> (object x) where T : BaseClass, U where U : ITest; +} + +public class PrinterImpl : Printer +{ + public override void Print<A, B> (object x) + { + A a; + $a.$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Foo"), "method 'Foo' not found."); + Assert.IsNotNull (provider.Find ("Bar"), "method 'Bar' not found."); + } + + /// <summary> + /// Bug 588223 - Intellisense does not recognize nested generics correctly. + /// </summary> + [Test()] + public void TestBug588223 () + { + CompletionDataList provider = CreateProvider ( +@" +class Lazy<T> { public void Foo () {} } +class Lazy<T, S> { public void Bar () {} } + +class Test +{ + public object Get () + { + return null; + } + + public Lazy<T> Get<T> () + { + return null; + } + + public Lazy<T, TMetaDataView> Get<T, TMetaDataView> () + { + return null; + } + + public Test () + { + Test t = new Test (); + var bug = t.Get<string, string> (); + $bug.$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Bar"), "method 'Bar' not found."); + } + + /// <summary> + /// Bug 592120 - Type resolver bug with this.Property[] + /// </summary> + [Test()] + public void TestBug592120 () + { + CompletionDataList provider = CreateProvider ( +@" + +interface IBar +{ + void Test (); +} + +class Foo +{ + public IBar[] X { get; set; } + + public void Bar () + { + var y = this.X; + $y.$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNull (provider.Find ("Test"), "method 'Test' found, but shouldn't."); + } + + + /// <summary> + /// Bug 576354 - Type inference failure + /// </summary> + [Test()] + public void TestBug576354 () + { + CompletionDataList provider = CreateProvider ( +@" +delegate T Func<S, T> (S s); + +class Foo +{ + string str; + + public Foo (string str) + { + this.str = str; + } + + public void Bar () + { + System.Console.WriteLine (str); + } +} + +class MyTest +{ + static T Test<T> (Func<string, T> myFunc) + { + return myFunc (""Hello World""); + } + + public static void Main (string[] args) + { + var result = Test (str => new Foo (str)); + $result.$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Bar"), "method 'Bar' not found."); + } + + /// <summary> + /// Bug 534680 - LINQ keywords missing from Intellisense + /// </summary> + [Test()] + public void TestBug534680 () + { + CompletionDataList provider = CreateProvider ( +@" +class Foo +{ + public static void Main (string[] args) + { + $from str in args $ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("select"), "keyword 'select' not found."); + } + + /// <summary> + /// Bug 610006 - Intellisense gives members of return type of functions even when that function isn't invoked + /// </summary> + [Test()] + public void TestBug610006 () + { + CompletionDataList provider = CreateProvider ( +@" +class MainClass +{ + public MainClass FooBar () + { + } + + public void Test () + { + $FooBar.$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNull (provider.Find ("FooBar"), "method 'FooBar' found, but shouldn't."); + } + + + /// <summary> + /// Bug 614045 - Types hidden by members are not formatted properly by ambience + /// </summary> + [Test()] + public void TestBug614045 () + { + CompletionDataList provider = CreateProvider ( +@" +namespace A +{ + enum Foo + { + One, + Two, + Three + } +} + +namespace B +{ + using A; + + public class Baz + { + public string Foo; + + void Test (Foo a) + { + $switch (a) { + case $ + } + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNull (provider.Find ("Foo"), "enum 'Foo' found, but shouldn't."); + Assert.IsNotNull (provider.Find ("A.Foo"), "enum 'A.Foo' not found."); + } + + /// <summary> + /// Bug 615992 - Intellisense broken when calling generic method. + /// </summary> + [Test()] + public void TestBug615992 () + { + CompletionDataList provider = CreateProvider ( +@"public delegate void Act<T> (T t); + +public class Foo +{ + public void Bar () + { + } +} + +class TestBase +{ + protected void Method<T> (Act<T> action) + { + } +} + +class Test : TestBase +{ + public Test () + { + $Method<Foo> (f => f.$ + } +}"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Bar"), "method 'Bar' not found."); + } + + /// <summary> + /// Bug 625064 - Internal classes aren't suggested for completion + /// </summary> + [Test()] + public void TestBug625064 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@"class Foo +{ + class Bar { } + $List<$ +}"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Bar"), "class 'Bar' not found."); + } + + + /// <summary> + /// Bug 631875 - No Intellisense for arrays + /// </summary> + [Test()] + public void TestBug631875 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@"class C +{ + static void Main () + { + var objects = new[] { new { X = (object)null }}; + $objects[0].$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("X"), "property 'X' not found."); + } + + /// <summary> + /// Bug 632228 - Wrong var inference + /// </summary> + [Test()] + public void TestBug632228 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@" +class C { + public void FooBar () {} + public static void Main () + { + var thingToTest = new[] { new C (), 22, new object(), string.Empty, null }; + $thingToTest[0].$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNull (provider.Find ("FooBar"), "method 'FooBar' found, but shouldn't."); + } + + /// <summary> + /// Bug 632696 - No intellisense for constraints + /// </summary> + [Test()] + public void TestBug632696 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@" +class Program +{ + void Foo () + { + } + + static void Foo<T> () where T : Program + { + var s = new[] { default(T) }; + $s[0].$ + } +}"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Foo"), "method 'Foo' not found."); + } + + [Test()] + public void TestCommentsWithWindowsEol () + { + CompletionDataList provider = CreateCtrlSpaceProvider ("class TestClass\r\n{\r\npublic static void Main (string[] args) {\r\n// TestComment\r\n$args.$\r\n}\r\n}"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("ToString"), "method 'ToString' not found."); + } + + [Test()] + public void TestGhostEntryBug () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@" +using System.IO; + +class TestClass +{ + public Path Path { + get; + set; + } + + void Test () + { + $$ + } +}"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNull (provider.Find ("System.IO.Path"), "'System.IO.Path' found but shouldn't."); + Assert.IsNotNull (provider.Find ("Path"), "property 'Path' not found."); + } + + + /// <summary> + /// Bug 648562 – Abstract members are allowed by base call + /// </summary> + [Test()] + public void TestBug648562 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@"using System; + +abstract class A +{ + public abstract void Foo<T> (T type); +} + +class B : A +{ + public override void Foo<U> (U type) + { + $base.$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNull (provider.Find ("Foo"), "method 'Foo' found, but shouldn't."); + } + + /// <summary> + /// Bug 633767 - Wrong intellisense for simple lambda + /// </summary> + [Test()] + public void TestBug633767 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@"using System; + +public class E +{ + public int Foo { get; set; } +} + +public class C +{ + delegate void D<T> (T t); + + static T M<T> (T t, D<T> a) + { + return t; + } + + static void MethodArg (object o) + { + } + + public static int Main () + { + D<object> action = l => Console.WriteLine (l); + var b = M (new E (), action); + $b.$ + } +}"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNull (provider.Find ("Foo"), "property 'Foo' found, but shouldn't."); + } + + /// <summary> + /// Bug 616208 - Renaming a struct/class is renaming too much + /// </summary> + [Test()] + public void TestBug616208 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@"using System; + +namespace System +{ + public class Foo { public int Bar; }; +} + +namespace test.Util +{ + public class Foo { public string x; } +} + +namespace Test +{ + public class A + { + public Foo X; + + public A () + { + $X.$ + } + } +} + +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Bar"), "property 'Bar' not found."); + } + + /// <summary> + /// Bug 668135 - Problems with "new" completion + /// </summary> + [Test()] + public void TestBug668135a () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@"public class A +{ + public A () + { + string test; + $Console.WriteLine (test = new $ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("string"), "class 'string' not found."); + } + + /// <summary> + /// Bug 668453 - var completion infers var type too eagerly + /// </summary> + [Test()] + public void TestBug668453 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@"public class Test +{ + private void FooBar () + { + $var str = new $ + FooBar (); + } +} + +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNull (provider.Find ("FooBar"), "method 'FooBar' found."); + } + + /// <summary> + /// Bug 669285 - Extension method on T[] shows up on T + /// </summary> + [Test()] + public void TestBug669285 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@"static class Ext +{ + public static void Foo<T> (this T[] t) + { + } +} + +public class Test<T> +{ + public void Foo () + { + T t; + $t.$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNull (provider.Find ("Foo"), "method 'Foo' found."); + provider = CreateCtrlSpaceProvider ( +@"static class Ext +{ + public static void Foo<T> (this T[] t) + { + } +} + +public class Test<T> +{ + public void Foo () + { + T[] t; + $t.$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Foo"), "method 'Foo' not found."); + } + + + /// <summary> + /// Bug 669818 - Autocomplete missing for new nested class + /// </summary> + [Test()] + public void TestBug669818 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@"using System; +public class Foo +{ + public class Bar + { + } + public static void FooBar () {} +} +class TestNested +{ + public static void Main (string[] args) + { + $new Foo.$ + } +} + +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Bar"), "class 'Bar' not found."); + Assert.IsNull (provider.Find ("FooBar"), "method 'FooBar' found."); + } + + /// <summary> + /// Bug 674514 - foreach value should not be in the completion list + /// </summary> + [Test()] + public void TestBug674514 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@"using System; +using System.Linq; +using System.Collections.Generic; + +class Foo +{ + public static void Main (string[] args) + { + $foreach (var arg in $ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("args"), "parameter 'args' not found."); + Assert.IsNull (provider.Find ("arg"), "variable 'arg' found."); + + provider = CreateCtrlSpaceProvider ( +@"using System; +using System.Linq; +using System.Collections.Generic; + +class Foo +{ + public static void Main (string[] args) + { + $foreach (var arg in args) + Console.WriteLine ($ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("args"), "parameter 'args' not found."); + Assert.IsNotNull (provider.Find ("arg"), "variable 'arg' not found."); + } + + /// <summary> + /// Bug 675436 - Completion is trying to complete symbol names in declarations + /// </summary> + [Test()] + public void TestBug675436_LocalVar () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@"class Test +{ + public static void Main (string[] args) + { + $int test = $ + } +} +"); + Assert.IsNull (provider.Find ("test"), "name 'test' found."); + } + + /// <summary> + /// Bug 675956 - Completion in for loops is broken + /// </summary> + [Test()] + public void TestBug675956 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@"class Test +{ + public static void Main (string[] args) + { + $for (int i = 0; $ + } +} +"); + Assert.IsNotNull (provider.Find ("i"), "variable 'i' not found."); + } + + /// <summary> + /// Bug 676311 - auto completion too few proposals in fluent API (Moq) + /// </summary> + [Test()] + public void TestBug676311 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@"using System; + +namespace Test +{ + public interface IFoo<T> + { + void Foo1 (); + } + + public interface IFoo<T, S> + { + void Foo2 (); + } + + public class Test<T> + { + public IFoo<T> TestMe (Expression<Action<T>> act) + { + return null; + } + + public IFoo<T, S> TestMe<S> (Expression<Func<S, T>> func) + { + return null; + } + + public string TestMethod (string str) + { + return str; + } + } + + class MainClass + { + public static void Main (string[] args) + { + var t = new Test<string> (); + var s = t.TestMe (x => t.TestMethod (x)); + $s.$ + } + } +}"); + Assert.IsNotNull (provider.Find ("Foo2"), "method 'Foo2' not found."); + } + + /// <summary> + /// Bug 676311 - auto completion too few proposals in fluent API (Moq) + /// </summary> + [Test()] + public void TestBug676311_Case2 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@"using System; +using System.Linq.Expressions; + +namespace Test +{ + public interface IFoo<T> + { + void Foo1 (); + } + + public interface IFoo<T, S> + { + void Foo2 (); + } + + public class Test<T> + { + public IFoo<T> TestMe (Expression<Action<T>> act) + { + return null; + } + + public IFoo<T, S> TestMe<S> (Expression<Func<S, T>> func) + { + return null; + } + + public void TestMethod (string str) + { + } + } + + class MainClass + { + public static void Main (string[] args) + { + var t = new Test<string> (); + var s = t.TestMe (x => t.TestMethod (x)); + $s.$ + } + } +}"); + Assert.IsNotNull (provider.Find ("Foo1"), "method 'Foo2' not found."); + } + + /// <summary> + /// Bug 678340 - Cannot infer types from Dictionary<K,V>.Values + /// </summary> + [Test()] + public void TestBug678340 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@"using System; +using System.Collections.Generic; + +public class Test +{ + public void SomeMethod () + { + var foo = new Dictionary<string,Test> (); + foreach (var bar in foo.Values) { $bar.$ - }
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("SomeMethod"), "method 'SomeMethod' not found.");
- }
- /// <summary>
- /// Bug 678340 - Cannot infer types from Dictionary<K,V>.Values
- /// </summary>
- [Test()]
- public void TestBug678340_Case2 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"public class Foo<T>
-{
- public class TestFoo
- {
- T Return ()
- {
-
- }
- }
-
- public TestFoo Bar;
-}
-
-public class Test
-{
- public void SomeMethod ()
- {
- Foo<Test> foo;
- var f = foo.Bar;
- $f.Return ().$
- }
-}
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("SomeMethod"), "method 'SomeMethod' not found.");
- }
-
- /// <summary>
- /// Bug 679792 - MonoDevelop becomes unresponsive and leaks memory
- /// </summary>
- [Test()]
- public void TestBug679792 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"using System.Collections.Generic;
-
-class TestClass
-{
- public static void Main (string[] args)
- {
- Dictionary<string, Dictionary<string, TestClass>> cache;
- $cache[""Hello""] [""World""] = new $
- }
-}");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("TestClass"), "class 'TestClass' not found.");
- }
-
- /// <summary>
- /// Bug 679995 - Variable missing from completiom
- /// </summary>
- ///
- [Test()]
- public void TestBug679995 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"class TestClass
-{
- public void Foo ()
- {
- using (var testMe = new TestClass ()) {
- $$
- }
- }
-}");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("testMe"), "variable 'testMe' not found.");
- }
-
- /// <summary>
- /// Bug 680264 - Lamba completion inference issues
- /// </summary>
- ///
- [Test()]
- public void TestBug680264 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"
-public delegate S Func<T, S> (T t);
-
-public static class Linq
-{
- public static bool Any<T> (this T[] t, Func<T, bool> func)
- {
- return true;
- }
-}
-
-class TestClass
-{
- public void Foo ()
- {
- TestClass[] test;
- $test.Any (t => t.$
- }
-}");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Foo"), "method 'Foo' not found.");
- }
-
- /// <summary>
- /// Bug 683037 - Missing autocompletion when 'using' directive references namespace by relative names
- /// </summary>
- ///
- [Test()]
- public void TestBug683037 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"namespace N1.N2
-{
- public class C1
- {
- public void Foo () {
- System.Console.WriteLine (1);
- }
- }
-}
-
-namespace N1
-{
- using N2;
-
- public class C2
- {
- public static void Main (string[] args)
- {
- C1 x = new C1 ();
- - $x.$
- }
- }
-}
-
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("Foo"), "method 'Foo' not found.");
- }
-
- /// <summary>
- /// Bug 690606 - Incomplete subclasses listing in code completion
- -
- /// <summary>
- /// Bug 690606 - Incomplete subclasses listing in code completion
- /// </summary>
- [Test()]
- public void TestBug690606 ()
- {
- CompletionDataList provider = CreateCtrlSpaceProvider (
-@"
-public abstract class Base {}
-public abstract class MyBase<T> : Base {}
-public class A : MyBase<string> {}
-public class B : MyBase<int> {}
-public class C : MyBase<bool> {}
-
-public class Test
-{
- public static void Main (string[] args)
- {
- $Base x = new $
- }
-}
-
-");
- Assert.IsNotNull (provider, "provider not found.");
- Assert.IsNotNull (provider.Find ("A"), "class 'A' not found.");
- Assert.IsNotNull (provider.Find ("B"), "class 'B' not found.");
- Assert.IsNotNull (provider.Find ("C"), "class 'C' not found.");
- }
- }
+ } + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("SomeMethod"), "method 'SomeMethod' not found."); + } + /// <summary> + /// Bug 678340 - Cannot infer types from Dictionary<K,V>.Values + /// </summary> + [Test()] + public void TestBug678340_Case2 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@"public class Foo<T> +{ + public class TestFoo + { + T Return () + { + + } + } + + public TestFoo Bar; +} + +public class Test +{ + public void SomeMethod () + { + Foo<Test> foo; + var f = foo.Bar; + $f.Return ().$ + } +} +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("SomeMethod"), "method 'SomeMethod' not found."); + } + + /// <summary> + /// Bug 679792 - MonoDevelop becomes unresponsive and leaks memory + /// </summary> + [Test()] + public void TestBug679792 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@"using System.Collections.Generic; + +class TestClass +{ + public static void Main (string[] args) + { + Dictionary<string, Dictionary<string, TestClass>> cache; + $cache[""Hello""] [""World""] = new $ + } +}"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("TestClass"), "class 'TestClass' not found."); + } + + /// <summary> + /// Bug 679995 - Variable missing from completiom + /// </summary> + /// + [Test()] + public void TestBug679995 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@"class TestClass +{ + public void Foo () + { + using (var testMe = new TestClass ()) { + $$ + } + } +}"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("testMe"), "variable 'testMe' not found."); + } + + /// <summary> + /// Bug 680264 - Lamba completion inference issues + /// </summary> + /// + [Test()] + public void TestBug680264 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@" +public delegate S Func<T, S> (T t); + +public static class Linq +{ + public static bool Any<T> (this T[] t, Func<T, bool> func) + { + return true; + } +} + +class TestClass +{ + public void Foo () + { + TestClass[] test; + $test.Any (t => t.$ + } +}"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Foo"), "method 'Foo' not found."); + } + + /// <summary> + /// Bug 683037 - Missing autocompletion when 'using' directive references namespace by relative names + /// </summary> + /// + [Test()] + public void TestBug683037 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@"namespace N1.N2 +{ + public class C1 + { + public void Foo () { + System.Console.WriteLine (1); + } + } +} + +namespace N1 +{ + using N2; + + public class C2 + { + public static void Main (string[] args) + { + C1 x = new C1 (); + + $x.$ + } + } +} + +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("Foo"), "method 'Foo' not found."); + } + + /// <summary> + /// Bug 690606 - Incomplete subclasses listing in code completion + + + /// <summary> + /// Bug 690606 - Incomplete subclasses listing in code completion + /// </summary> + [Test()] + public void TestBug690606 () + { + CompletionDataList provider = CreateCtrlSpaceProvider ( +@" +public abstract class Base {} +public abstract class MyBase<T> : Base {} +public class A : MyBase<string> {} +public class B : MyBase<int> {} +public class C : MyBase<bool> {} + +public class Test +{ + public static void Main (string[] args) + { + $Base x = new $ + } +} + +"); + Assert.IsNotNull (provider, "provider not found."); + Assert.IsNotNull (provider.Find ("A"), "class 'A' not found."); + Assert.IsNotNull (provider.Find ("B"), "class 'B' not found."); + Assert.IsNotNull (provider.Find ("C"), "class 'C' not found."); + } + } } diff --git a/main/tests/UnitTests/MonoDevelop.CSharpBinding/CodeCompletionCSharp3Tests.cs b/main/tests/UnitTests/MonoDevelop.CSharpBinding/CodeCompletionCSharp3Tests.cs index 30092d1089..167dff5d4d 100644 --- a/main/tests/UnitTests/MonoDevelop.CSharpBinding/CodeCompletionCSharp3Tests.cs +++ b/main/tests/UnitTests/MonoDevelop.CSharpBinding/CodeCompletionCSharp3Tests.cs @@ -1,4 +1,4 @@ -//
+// // CodeCompletionCSharp3Tests.cs // // Author: @@ -27,24 +27,23 @@ // using System; -using NUnit.Framework;
-using MonoDevelop.Ide.Gui;
+using NUnit.Framework; +using MonoDevelop.Ide.Gui; using MonoDevelop.Projects; using MonoDevelop.Core; -using MonoDevelop.Ide.CodeCompletion;
-using MonoDevelop.Ide.Gui.Content;
-using MonoDevelop.Projects.Dom.Parser;
+using MonoDevelop.Ide.CodeCompletion; +using MonoDevelop.Ide.Gui.Content; namespace MonoDevelop.CSharpBinding.Tests { [TestFixture()] public class CodeCompletionCSharp3Tests : UnitTests.TestBase - {
- /* Currently fails but works in monodevelop. Seems to be a bug in the unit test somewhere.
+ { + /* Currently fails but works in monodevelop. Seems to be a bug in the unit test somewhere. [Test()] public void TestExtensionMethods () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( @"using System; public static class EMClass @@ -63,23 +62,23 @@ class Program int i = s.$ } } -");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("ToInt32Ext"), "extension method 'ToInt32Ext' not found.");
- }
- */
+"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("ToInt32Ext"), "extension method 'ToInt32Ext' not found."); + } + */ [Test()] public void TestVarLocalVariables () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( @"using System; -class Test
-{
- public void TestMethod ()
- {
- }
-}
+class Test +{ + public void TestMethod () + { + } +} class Program { @@ -89,293 +88,293 @@ class Program $t.$ } } -");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found.");
- }
-
+"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found."); + } + [Test()] public void TestVarLoopVariable () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( @"using System; -class Test
-{
- public void TestMethod ()
- {
- }
-}
+class Test +{ + public void TestMethod () + { + } +} class Program { static void Main (string[] args) { var t = new Test[] {}; - foreach (var loopVar in t) {
- $loopVar.$
+ foreach (var loopVar in t) { + $loopVar.$ + } + } +} +"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found."); + } + + [Test()] + public void TestAnonymousType () + { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( +@" +class Program +{ + static void Main (string[] args) + { + var t = new { TestInt = 6, TestChar='e', TestString =""Test""}; + $t.$ + } +} +"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("TestInt"), "property 'TestInt' not found."); + Assert.IsNotNull (provider.Find ("TestChar"), "property 'TestChar' not found."); + Assert.IsNotNull (provider.Find ("TestString"), "property 'TestString' not found."); } + + [Test()] + public void TestQueryExpression () + { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( +@" +using System; +using System.Collections.Generic; + +static class Linq +{ + public static IEnumerable<T> Select<S, T> (this IEnumerable<S> collection, Func<S, T> func) + { } } -");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found.");
- }
-
- [Test()]
- public void TestAnonymousType ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
-@"
-class Program
-{
- static void Main (string[] args)
- {
- var t = new { TestInt = 6, TestChar='e', TestString =""Test""};
- $t.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("TestInt"), "property 'TestInt' not found.");
- Assert.IsNotNull (provider.Find ("TestChar"), "property 'TestChar' not found.");
- Assert.IsNotNull (provider.Find ("TestString"), "property 'TestString' not found.");
- }
-
- [Test()]
- public void TestQueryExpression ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
-@"
-using System;
-using System.Collections.Generic;
-
-static class Linq
-{
- public static IEnumerable<T> Select<S, T> (this IEnumerable<S> collection, Func<S, T> func)
- {
- }
-}
-
-class Program
-{
- public void TestMethod ()
- {
- }
-
- static void Main (string[] args)
- {
- Program[] numbers;
- foreach (var x in from n in numbers select n) {
- $x.$
- }
- }
-}
-");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found.");
- }
-
- [Test()]
- public void TestObjectInitializer ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (
-@"
-class foo {
- public string bar { get; set; }
- public string baz { get; set; }
-}
-
-class test {
- public void testcc ()
- {
- foo f = new foo () {
- $$
- };
- }
-}
-");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("bar"), "property 'bar' not found.");
- Assert.IsNotNull (provider.Find ("baz"), "property 'baz' not found.");
- }
-
- [Test()]
- public void TestLambdaExpressionCase1 ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (
-@"
-using System;
-class Test
-{
- public void Foo ()
- {
- $Func<Test,int> x = s => s.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("Foo"), "method 'Foo' not found.");
- }
-
- [Test()]
- public void TestLambdaExpressionCase2 ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
-@"
-
-namespace System {
- public class Array {
- public Test this[int i] {
- get {
- }
- set {
- }
- }
- }
-}
-
-static class ExtMethods
-{
- public static T Where<T>(this T[] t, Func<T, bool> pred)
- {
- return t;
- }
-}
-
-class Test
-{
- public void TestMethod ()
- {
- Test[] en = new Test[0];
- var x = en.Where (t => t != null);
- $x.$
- }
-}
-");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found.");
- }
-
- /// <summary>
- /// Bug 487237 - Broken lambda intellisense
- /// </summary>
- [Test()]
- public void TestBug487237 ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
-@"
-public interface IHelper
-{
- void DoIt ();
-}
-
-public class Program
-{
- delegate T MyDelegate <T> (T t);
-
- static int Main ()
- {
- $MyDelegate<IHelper> e = helper => helper.$
- return 0;
- }
-}
-");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("DoIt"), "method 'DoIt' not found.");
- }
-
- /// <summary>
- /// Bug 491016 - No intellisense for lambdas inside linq query
- /// </summary>
- [Test()]
- public void TestBug491016 ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
-@"
-using System;
-using System.Collections.Generic;
-
-namespace System.Collections.Generic {
- public interface IEnumerable<T>
- {
-
- }
-}
-namespace Foo
-{
- class Data
- {
- public int Value = 5;
- }
-
- static class Ex
- {
- public static System.Collections.Generic.IEnumerable<TR> Foo<T, TR> (this System.Collections.Generic.IEnumerable<T> t, Func<T, TR> f)
- {
- yield return f (t.First ());
- }
- }
-
- public class C
- {
- public static void Main ()
- {
- System.Collections.Generic.IEnumerable<Data> i = new Data [0];
- $var prods = from pe in i.Foo (p2 => p2.$
- }
- }
-}
-");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("Value"), "field 'Value' not found.");
- }
-
- /// <summary>
- /// Bug 491017 - No intellisense for static LINQ queries
- /// </summary>
- [Test()]
- public void TestBug491017 ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
-@"
-using System.Linq;
-using System.Linq.Expressions;
-
-class Test
-{
- $object e = from entity in ""olololcolc"" select entity.$
-}
-");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("ToString"), "method 'ToString' not found.");
- Assert.IsNull (provider.Find ("Length"), "property 'Length' found, but shouldn't (indicates wrong return type).");
- }
-
- [Test()]
- public void TestDefaultParameterBug ()
- {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
-@"
-namespace Foo
-{
- class Data
- {
- public int Value = 5;
- }
-
- public class C
- {
- public void Foo (bool aBool = false)
- {
- Data data;
- $data.$
- }
- }
-}
-");
- Assert.IsNotNull (provider, "provider == null");
- Assert.IsNotNull (provider.Find ("Value"), "field 'Value' not found.");
- }
- }
+ +class Program +{ + public void TestMethod () + { + } + + static void Main (string[] args) + { + Program[] numbers; + foreach (var x in from n in numbers select n) { + $x.$ + } + } +} +"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found."); + } + + [Test()] + public void TestObjectInitializer () + { + CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider ( +@" +class foo { + public string bar { get; set; } + public string baz { get; set; } +} + +class test { + public void testcc () + { + foo f = new foo () { + $$ + }; + } +} +"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("bar"), "property 'bar' not found."); + Assert.IsNotNull (provider.Find ("baz"), "property 'baz' not found."); + } + + [Test()] + public void TestLambdaExpressionCase1 () + { + CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider ( +@" +using System; +class Test +{ + public void Foo () + { + $Func<Test,int> x = s => s.$ + } +} +"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("Foo"), "method 'Foo' not found."); + } + + [Test()] + public void TestLambdaExpressionCase2 () + { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( +@" + +namespace System { + public class Array { + public Test this[int i] { + get { + } + set { + } + } + } +} + +static class ExtMethods +{ + public static T Where<T>(this T[] t, Func<T, bool> pred) + { + return t; + } +} + +class Test +{ + public void TestMethod () + { + Test[] en = new Test[0]; + var x = en.Where (t => t != null); + $x.$ + } +} +"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found."); + } + + /// <summary> + /// Bug 487237 - Broken lambda intellisense + /// </summary> + [Test()] + public void TestBug487237 () + { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( +@" +public interface IHelper +{ + void DoIt (); +} + +public class Program +{ + delegate T MyDelegate <T> (T t); + + static int Main () + { + $MyDelegate<IHelper> e = helper => helper.$ + return 0; + } +} +"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("DoIt"), "method 'DoIt' not found."); + } + + /// <summary> + /// Bug 491016 - No intellisense for lambdas inside linq query + /// </summary> + [Test()] + public void TestBug491016 () + { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( +@" +using System; +using System.Collections.Generic; + +namespace System.Collections.Generic { + public interface IEnumerable<T> + { + + } +} +namespace Foo +{ + class Data + { + public int Value = 5; + } + + static class Ex + { + public static System.Collections.Generic.IEnumerable<TR> Foo<T, TR> (this System.Collections.Generic.IEnumerable<T> t, Func<T, TR> f) + { + yield return f (t.First ()); + } + } + + public class C + { + public static void Main () + { + System.Collections.Generic.IEnumerable<Data> i = new Data [0]; + $var prods = from pe in i.Foo (p2 => p2.$ + } + } +} +"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("Value"), "field 'Value' not found."); + } + + /// <summary> + /// Bug 491017 - No intellisense for static LINQ queries + /// </summary> + [Test()] + public void TestBug491017 () + { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( +@" +using System.Linq; +using System.Linq.Expressions; + +class Test +{ + $object e = from entity in ""olololcolc"" select entity.$ +} +"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("ToString"), "method 'ToString' not found."); + Assert.IsNull (provider.Find ("Length"), "property 'Length' found, but shouldn't (indicates wrong return type)."); + } + + [Test()] + public void TestDefaultParameterBug () + { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( +@" +namespace Foo +{ + class Data + { + public int Value = 5; + } + + public class C + { + public void Foo (bool aBool = false) + { + Data data; + $data.$ + } + } +} +"); + Assert.IsNotNull (provider, "provider == null"); + Assert.IsNotNull (provider.Find ("Value"), "field 'Value' not found."); + } + } } diff --git a/main/tests/UnitTests/MonoDevelop.CSharpBinding/CodeCompletionCSharpTests.cs b/main/tests/UnitTests/MonoDevelop.CSharpBinding/CodeCompletionCSharpTests.cs index 02497fb779..4ef3a39997 100644 --- a/main/tests/UnitTests/MonoDevelop.CSharpBinding/CodeCompletionCSharpTests.cs +++ b/main/tests/UnitTests/MonoDevelop.CSharpBinding/CodeCompletionCSharpTests.cs @@ -33,7 +33,6 @@ using MonoDevelop.Projects; using MonoDevelop.Core; using MonoDevelop.Ide.CodeCompletion;
using MonoDevelop.Ide.Gui.Content;
-using MonoDevelop.Projects.Dom.Parser;
namespace MonoDevelop.CSharpBinding.Tests { diff --git a/main/tests/UnitTests/MonoDevelop.CSharpBinding/CodeCompletionOperatorTests.cs b/main/tests/UnitTests/MonoDevelop.CSharpBinding/CodeCompletionOperatorTests.cs index b200b73919..88985df108 100644 --- a/main/tests/UnitTests/MonoDevelop.CSharpBinding/CodeCompletionOperatorTests.cs +++ b/main/tests/UnitTests/MonoDevelop.CSharpBinding/CodeCompletionOperatorTests.cs @@ -1,4 +1,4 @@ -//
+// // OperatorTests.cs // // Author: @@ -27,13 +27,12 @@ // using System; -using NUnit.Framework;
-using MonoDevelop.Ide.Gui;
+using NUnit.Framework; +using MonoDevelop.Ide.Gui; using MonoDevelop.Projects; using MonoDevelop.Core; -using MonoDevelop.Ide.CodeCompletion;
-using MonoDevelop.Ide.Gui.Content;
-using MonoDevelop.Projects.Dom.Parser;
+using MonoDevelop.Ide.CodeCompletion; +using MonoDevelop.Ide.Gui.Content; namespace MonoDevelop.CSharpBinding.Tests { @@ -42,8 +41,8 @@ namespace MonoDevelop.CSharpBinding.Tests { [Test()] public void TestAddOperator () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( @"class A { public static B operator+(A left, A right) @@ -67,15 +66,15 @@ class TestClass A b = new A (); $(a + b).$ } -}");
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("BMethod"));
- }
-
+}"); + Assert.IsNotNull (provider); + Assert.IsNotNull (provider.Find ("BMethod")); + } + [Test()] public void TestSubtractOperator () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( @"class A { public static B operator-(A left, A right) @@ -99,15 +98,15 @@ class TestClass A b = new A (); $(a - b).$ } -}");
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("BMethod"));
- }
-
+}"); + Assert.IsNotNull (provider); + Assert.IsNotNull (provider.Find ("BMethod")); + } + [Test()] public void TestMultiplyOperator () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( @"class A { public static B operator*(A left, A right) @@ -131,15 +130,15 @@ class TestClass A b = new A (); $(a * b).$ } -}");
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("BMethod"));
- }
-
+}"); + Assert.IsNotNull (provider); + Assert.IsNotNull (provider.Find ("BMethod")); + } + [Test()] public void TestDivideOperator () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( @"class A { public static B operator/(A left, A right) @@ -163,15 +162,15 @@ class TestClass A b = new A (); $(a / b).$ } -}");
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("BMethod"));
- }
-
+}"); + Assert.IsNotNull (provider); + Assert.IsNotNull (provider.Find ("BMethod")); + } + [Test()] public void TestModulusOperator () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( @"class A { public static B operator%(A left, A right) @@ -195,15 +194,15 @@ class TestClass A b = new A (); $(a % b).$ } -}");
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("BMethod"));
- }
-
+}"); + Assert.IsNotNull (provider); + Assert.IsNotNull (provider.Find ("BMethod")); + } + [Test()] public void TestBitwiseAndOperator () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( @"class A { public static B operator&(A left, A right) @@ -227,15 +226,15 @@ class TestClass A b = new A (); $(a & b).$ } -}");
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("BMethod"));
- }
-
+}"); + Assert.IsNotNull (provider); + Assert.IsNotNull (provider.Find ("BMethod")); + } + [Test()] public void TestBitwiseOrOperator () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( @"class A { public static B operator|(A left, A right) @@ -259,15 +258,15 @@ class TestClass A b = new A (); $(a | b).$ } -}");
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("BMethod"));
- }
-
+}"); + Assert.IsNotNull (provider); + Assert.IsNotNull (provider.Find ("BMethod")); + } + [Test()] public void TestExclusiveOrOperator () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( @"class A { public static B operator^(A left, A right) @@ -291,15 +290,15 @@ class TestClass A b = new A (); $(a ^ b).$ } -}");
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("BMethod"));
- }
-
+}"); + Assert.IsNotNull (provider); + Assert.IsNotNull (provider.Find ("BMethod")); + } + [Test()] public void TestShiftLeftOperator () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( @"class A { public static B operator<<(A left, A right) @@ -323,15 +322,15 @@ class TestClass A b = new A (); $(a << b).$ } -}");
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("BMethod"));
- }
-
+}"); + Assert.IsNotNull (provider); + Assert.IsNotNull (provider.Find ("BMethod")); + } + [Test()] public void TestShiftRightOperator () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( @"class A { public static B operator>>(A left, A right) @@ -355,15 +354,15 @@ class TestClass A b = new A (); $(a >> b).$ } -}");
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("BMethod"));
- }
-
+}"); + Assert.IsNotNull (provider); + Assert.IsNotNull (provider.Find ("BMethod")); + } + [Test()] public void TestGreaterThanOperator () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( @"class A { public static B operator>(A left, A right) @@ -387,15 +386,15 @@ class TestClass A b = new A (); $(a > b).$ } -}");
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("BMethod"));
- }
-
+}"); + Assert.IsNotNull (provider); + Assert.IsNotNull (provider.Find ("BMethod")); + } + [Test()] public void TestGreaterThanOrEqualOperator () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( @"class A { public static B operator>=(A left, A right) @@ -419,15 +418,15 @@ class TestClass A b = new A (); $(a >= b).$ } -}");
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("BMethod"));
- }
-
+}"); + Assert.IsNotNull (provider); + Assert.IsNotNull (provider.Find ("BMethod")); + } + [Test()] public void TestEqualityOperator () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( @"class A { public static B operator==(A left, A right) @@ -451,15 +450,15 @@ class TestClass A b = new A (); $(a == b).$ } -}");
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("BMethod"));
- }
-
+}"); + Assert.IsNotNull (provider); + Assert.IsNotNull (provider.Find ("BMethod")); + } + [Test()] public void TestInEqualityOperator () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( @"class A { public static B operator!=(A left, A right) @@ -483,15 +482,15 @@ class TestClass A b = new A (); $(a != b).$ } -}");
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("BMethod"));
- }
-
+}"); + Assert.IsNotNull (provider); + Assert.IsNotNull (provider.Find ("BMethod")); + } + [Test()] public void TestLessThanOperator () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( @"class A { public static B operator<(A left, A right) @@ -515,15 +514,15 @@ class TestClass A b = new A (); $(a < b).$ } -}");
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("BMethod"));
- }
-
+}"); + Assert.IsNotNull (provider); + Assert.IsNotNull (provider.Find ("BMethod")); + } + [Test()] public void TestLessThanOrEqualOperator () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( @"class A { public static B operator<=(A left, A right) @@ -547,15 +546,15 @@ class TestClass A b = new A (); $(a <= b).$ } -}");
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("BMethod"));
- }
-
+}"); + Assert.IsNotNull (provider); + Assert.IsNotNull (provider.Find ("BMethod")); + } + [Test()] public void TestUnaryPlusOperator () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( @"class A { public static B operator+(A left) @@ -578,15 +577,15 @@ class TestClass A a = new A (); $(+a).$ } -}");
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("BMethod"));
- }
-
+}"); + Assert.IsNotNull (provider); + Assert.IsNotNull (provider.Find ("BMethod")); + } + [Test()] public void TestUnaryMinusOperator () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( @"class A { public static B operator-(A left) @@ -609,15 +608,15 @@ class TestClass A a = new A (); $(-a).$ } -}");
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("BMethod"));
- }
-
+}"); + Assert.IsNotNull (provider); + Assert.IsNotNull (provider.Find ("BMethod")); + } + [Test()] public void TestUnaryNotOperator () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( @"class A { public static B operator!(A left) @@ -640,15 +639,15 @@ class TestClass A a = new A (); $(!a).$ } -}");
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("BMethod"));
- }
-
+}"); + Assert.IsNotNull (provider); + Assert.IsNotNull (provider.Find ("BMethod")); + } + [Test()] public void TestUnaryBitwiseNotOperator () - {
- CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
+ { + CompletionDataList provider = CodeCompletionBugTests.CreateProvider ( @"class A { public static B operator~(A left) @@ -671,9 +670,9 @@ class TestClass A a = new A (); $(~a).$ } -}");
- Assert.IsNotNull (provider);
- Assert.IsNotNull (provider.Find ("BMethod"));
- }
+}"); + Assert.IsNotNull (provider); + Assert.IsNotNull (provider.Find ("BMethod")); + } } } diff --git a/main/tests/UnitTests/MonoDevelop.CSharpBinding/FindMemberVisitorTests.cs b/main/tests/UnitTests/MonoDevelop.CSharpBinding/FindMemberVisitorTests.cs index e472f48db8..352140e5fd 100644 --- a/main/tests/UnitTests/MonoDevelop.CSharpBinding/FindMemberVisitorTests.cs +++ b/main/tests/UnitTests/MonoDevelop.CSharpBinding/FindMemberVisitorTests.cs @@ -1,874 +1,874 @@ +//// +//// FindMemberVisitorTests.cs +//// +//// Author: +//// Mike Krüger <mkrueger@novell.com> +//// +//// Copyright (C) 2009 Novell, Inc (http://www.novell.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. +//// // -// FindMemberVisitorTests.cs -// -// Author: -// Mike Krüger <mkrueger@novell.com> -// -// Copyright (C) 2009 Novell, Inc (http://www.novell.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.Generic;
-using System.Text; - -using NUnit.Framework; -using Mono.TextEditor;
-using MonoDevelop.Core; -using MonoDevelop.Projects; -using MonoDevelop.Projects.Dom;
-using MonoDevelop.Projects.Dom.Parser; -using MonoDevelop.CSharpBinding;
-using MonoDevelop.Projects.CodeGeneration; -using MonoDevelop.Projects.Text; -using ICSharpCode.OldNRefactory.Visitors; -using MonoDevelop.CSharp.Parser; -using MonoDevelop.CSharp.Resolver; -using MonoDevelop.CSharp.Refactoring; - -namespace MonoDevelop.CSharpBinding.Tests -{ - [TestFixture] - public class FindMemberVisitorTests : UnitTests.TestBase - { - #region TestHelper - static McsParser parser = new McsParser (); - - void RunTest (string test) - { - RunTest (test, null); - } - - void RunTest (string test, LocalVariable localVariable) - { - StringBuilder testText = new StringBuilder (); - List<DomLocation> expectedReferences = new List<DomLocation> (); - DomLocation memberLocation = DomLocation.Empty; - int line = 1, col = 1; - foreach (char ch in test) { - switch (ch) { - case '$': - memberLocation = new DomLocation (line, col); - break; - case '@': - expectedReferences.Add (new DomLocation (line, col)); - break; - default: - col++; - if (ch == '\n') { - col = 1; - line++; - } - testText.Append (ch); - break; - } - } - DotNetProject project = new DotNetAssemblyProject ("C#");
- project.FileName = "/tmp/a.csproj";
-
- SimpleProjectDom dom = new SimpleProjectDom ();
- dom.Project = project;
- ProjectDomService.RegisterDom (dom, "Project:" + project.FileName); - - ParsedDocument parsedDocument = parser.Parse (null, "a.cs", testText.ToString ()); - dom.Add (parsedDocument.CompilationUnit); - - TestViewContent testViewContent = new TestViewContent (); - testViewContent.Name = "a.cs"; - testViewContent.Text = testText.ToString (); - // RefactorerContext ctx = new RefactorerContext (dom, new DumbTextFileProvider(testViewContent), null); - NRefactoryResolver resolver = new NRefactoryResolver (dom, - parsedDocument.CompilationUnit, - testViewContent.Data, - "a.cs"); - SearchMemberVisitor smv = new SearchMemberVisitor (memberLocation.Line); - if (localVariable != null) { - ((LocalVariable)localVariable).DeclaringMember = parsedDocument.CompilationUnit.GetMemberAt (expectedReferences[0]); - smv.FoundMember = localVariable; - } else { - smv.Visit (parsedDocument.CompilationUnit, null); - if (smv.FoundMember == null) { - ResolveResult resolveResult = resolver.ResolveIdentifier ("a", memberLocation); - if (resolveResult is LocalVariableResolveResult) - smv.FoundMember = ((LocalVariableResolveResult)resolveResult).LocalVariable; - } - } - - Assert.IsNotNull (smv.FoundMember, "Member to search not found."); - if (smv.FoundMember is IType) { - smv.FoundMember = dom.GetType (((IType)smv.FoundMember).FullName, - ((IType)smv.FoundMember).TypeParameters.Count, - true); - } - FindMemberAstVisitor astVisitor = new FindMemberAstVisitor (testViewContent.GetTextEditorData ().Document, smv.FoundMember); - astVisitor.RunVisitor (resolver); - - int i = 0, j = 0; - StringBuilder errorText = new StringBuilder (); - Document doc = new Document (); - doc.Text = testViewContent.Text; - while (i < expectedReferences.Count && j < astVisitor.FoundReferences.Count) { - - if (expectedReferences[i].Line != astVisitor.FoundReferences[j].Line || expectedReferences[i].Column != astVisitor.FoundReferences[j].Column) { - if (expectedReferences[i].Line < astVisitor.FoundReferences[j].Line) { - errorText.Append ("Reference at line " + expectedReferences[i].Line + " not found."); - errorText.AppendLine (); - errorText.Append (doc.GetTextAt (doc.GetLine (expectedReferences[i].Line)).Replace ('\t', ' ')); - errorText.AppendLine (); - errorText.Append (new string (' ', expectedReferences[i].Column));errorText.Append ('^'); - errorText.AppendLine (); - i++; - continue; - } - if (expectedReferences[i].Line > astVisitor.FoundReferences[j].Line) { - errorText.Append ("Found unexpected Reference at line " + astVisitor.FoundReferences[j].Line); - errorText.AppendLine (); - errorText.Append (doc.GetTextAt (doc.GetLine (astVisitor.FoundReferences[j].Line)).Replace ('\t', ' ')); - errorText.AppendLine (); - errorText.Append (new string (' ', astVisitor.FoundReferences[j].Column));errorText.Append ('^'); - errorText.AppendLine (); - j++; - continue; - } - - errorText.Append ("Column mismatch at line " + astVisitor.FoundReferences[j].Line + " was: " + astVisitor.FoundReferences[j].Column + " should be:" + expectedReferences[i].Column); - errorText.AppendLine (); - errorText.Append (doc.GetTextAt (doc.GetLine (astVisitor.FoundReferences[j].Line)).Replace ('\t', ' ')); - errorText.Append (new string (' ', expectedReferences[i].Column));errorText.Append ('^'); - errorText.AppendLine (); - errorText.Append (new string (' ', astVisitor.FoundReferences[j].Column));errorText.Append ('^'); - errorText.AppendLine (); - } - i++;j++; - } - while (i < expectedReferences.Count) { - errorText.Append ("Reference at line " + expectedReferences[i].Line + " not found."); - errorText.AppendLine (); - errorText.Append (doc.GetTextAt (doc.GetLine (expectedReferences[i].Line)).Replace ('\t', ' ')); - errorText.AppendLine (); - errorText.Append (new string (' ', expectedReferences[j].Column));errorText.Append ('^'); - errorText.AppendLine (); - i++; - } - while (j < astVisitor.FoundReferences.Count) { - errorText.Append ("Found unexpected Reference at line " + astVisitor.FoundReferences[j].Line); - errorText.AppendLine (); - errorText.Append (doc.GetTextAt (doc.GetLine (astVisitor.FoundReferences[j].Line)).Replace ('\t', ' ')); - errorText.AppendLine (); - errorText.Append (new string (' ', astVisitor.FoundReferences[i].Column));errorText.Append ('^'); - errorText.AppendLine (); - j++; - } - if (errorText.Length > 0) - Assert.Fail ("Member to find:" + smv.FoundMember + Environment.NewLine + errorText.ToString () + Environment.NewLine + "found : " + astVisitor.FoundReferences.Count + " expected:" + expectedReferences.Count); - } - - class DumbTextFileProvider : ITextFileProvider - { - IEditableTextFile file; - public DumbTextFileProvider (IEditableTextFile file) - { - this.file = file; - } - public IEditableTextFile GetEditableTextFile (FilePath filePath) - { - return file; - } - } - - class SearchMemberVisitor : AbstractDomVisitor<object, object> - { - public INode FoundMember { - get; - set; - } - int lineNumber; - public SearchMemberVisitor (int lineNumber) - { - this.lineNumber = lineNumber; - } - - void Check (IMember member) - { - if (member.Location.Line == lineNumber) { - FoundMember = member; - } - } - - public override object Visit (IType type, object data) - { - Check (type); - foreach (IMember member in type.Members) { - member.AcceptVisitor (this, data); - } - return base.Visit (type, data); - } - - public override object Visit (IField field, object data) - { - Check (field); - return base.Visit (field, data); - } - - public override object Visit (IMethod method, object data) - { - Check (method); - return base.Visit (method, data); - } - - public override object Visit (MonoDevelop.Projects.Dom.IParameter parameter, object data) - { - if (parameter.Location.Line == lineNumber) - FoundMember = parameter; - return base.Visit (parameter, data); - } - - public override object Visit (IProperty property, object data) - { - Check (property); - return base.Visit (property, data); - } - - public override object Visit (IEvent evt, object data) - { - Check (evt); - return base.Visit (evt, data); - } - - public override object Visit (LocalVariable var, object data) - { - if (var.Region.Start.Line == lineNumber) - FoundMember = var; - return base.Visit (var, data); - } - } - #endregion - - [Test()] - public void FindClassReferences () - {
- RunTest ( -@"class $@Test { - @Test (@Test t) - { - } - ~@Test () - {} - - void TestMe(@Test p) - { - @Test i; - } -} - -delegate @Test TestDelegate (@Test test); - -class OuterTest : @Test -{ - @Test testField; - @Test TestProperty { get { } } - - event @Test TestEvent; - public @Test this[int i] { get { } } - public int this[@Test t] { get { } } - - public OuterTest (object t) : base ((@Test)t) - { - } - - @Test Outer (object o) - { - return ((@Test)o); - } -} -namespace SomethingDifferent -{ - class Test - { - } -} -");
- } - - [Test()] - public void FindFieldReferences () - {
- RunTest ( -@"class TestClass { - protected int $@testField; - - TestClass () - { - @testField = 5; - } - - void TestMe(int f) - { - this.@testField = f; - } -} - - -class OuterTest : TestClass -{ - int TestProperty { get { return base.@testField; } } -} - -namespace SomethingDifferent -{ - class Test - { - int testField; - } -} -"); - } - - [Test()] - public void FindEventReferences () - {
- RunTest ( -@"class TestClass { - delegate void TestEventDelegate (); - - public event TestEventDelegate $@MyEvent; - - TestClass () - { - @MyEvent += TestMe; - } - - void TestMe() - { - } -} - - -class OuterTest : TestClass -{ - void Test () - { - @MyEvent -= TestMe; - } -} - -namespace SomethingDifferent -{ - class Test - { - public event TestClass.TestEventDelegate MyEvent; - } -} -"); - } - - [Test()] - public void FindMethodReferences () - {
- RunTest ( -@"class TestClass { - public void $@TestMethod ( -int a, int b) - { - } - public void TestMethod (int a) - { - @TestMethod (a, 6); - } - public void TestMethod () - { - TestMethod (4); - } -} - - -class OuterTest : TestClass -{ - void A () - { - @TestMethod (5, 4); - TestMethod (5); - } -} - -namespace SomethingOuter -{ - class Test - { - void Bla (TestClass t) - { - t.@TestMethod (5, 4); - } - } -} -"); - } - - [Test()] - public void FindPropertyReferences () - {
- RunTest ( -@"class TestClass { - public int $@MyProperty { get {} set {}} - - public void TestMethod (int a) - { - @MyProperty = a; - } - public void TestMethod () - { - WriteLine (this.@MyProperty); - } -} - - -class OuterTest : TestClass -{ - void A () - { - @MyProperty = 5; - WriteLine (base.@MyProperty); - WriteLine (this.@MyProperty); - } -} - -namespace SomethingOuter -{ - class Test - { - void Bla (TestClass t) - { - t.@MyProperty = 5; - } - } -} -");
- } - - [Test()] - public void FindParameterReferences () - {
- RunTest ( -@"class TestClass { - public void TestMethod ( -int $@a, -int b) - { - WriteLine (@a); - @a--; - b = @a; - @a = b; - } -} -");
- } - - [Test()] - public void FindLocalVariableReferences () - { - RunTest ( -@"class TestClass { - public void TestMethod () - { - int $@a; - int b = 5; - WriteLine (@a); - @a--; - b = @a; - @a = b; - } - - public void TestMethod2 () - { - int a; - WriteLine (a); - a--; - int b = a; - } -} -"); - } - - /// <summary> - /// Bug 480492 - Find field references returns incorrect references - /// </summary> - [Test()] - public void TestBug480492 () - { - RunTest ( -@"class BaseClass -{ -} - -class A : BaseClass -{ - BaseClass $@myField; -} - -class B : BaseClass -{ - BaseClass myField; - void TestMe () - { - myField = null; // this should not be found. - this.myField = null; // this should not be found. - } -}"); - } - - /// <summary> - /// Bug 493202 - List References on private constructor yields nothing - /// </summary> - [Test()] - public void TestBug493202 () - { - RunTest ( -@"public class Foo { - $@Foo () //right click on Foo and list constructor references - {} - - public Foo Instance() - { - return new @Foo (); - } -} -"); - } - - - - /// <summary> - /// Bug 531525 - Refactoring + Renaming fails for delegate - /// </summary> - [Test()] - public void TestBug531525 () - { - RunTest ( -@"public class Foo { - void $@IdeAppWorkspaceSolutionLoaded ( -object sender, -SolutionEventArgs e) - {} - - public void Main() - { - IdeApp.Workspace.SolutionLoaded += @IdeAppWorkspaceSolutionLoaded; - } -} -"); - } - - /// <summary> - /// Bug 545361 - Method -> Rename doesn't update instance in delegate constructor - /// </summary> - [Test()] - public void TestBug545361 () - { - RunTest ( -@"class TestClass { - public void $@FlyZoomInCallback () - { - } - public void TestMethod (int a) - { - GLib.Idle.Add(new GLib.IdleHandler(@FlyZoomInCallback)); - } -} -"); - } - - - /// <summary> - /// Bug 547949 - Rename partial classes does not rename both classes - /// </summary> - [Test()] - public void TestBug547949 () - { - RunTest ( -@"partial class $@MyTest -{ - void Test1 () - { - @MyTest test; - } - - public @MyTest (int a) - { - } -} - -partial class @MyTest -{ - public @MyTest () - { - } -} -"); - } - - /// <summary> - /// Bug 549858 - Refactoring does not change properties in lambda expressions - /// </summary> - [Test()] - public void TestBug549858 () - { - RunTest ( -@"public delegate S MyFunc<T, S> (T t); - -public static class TypeManager -{ - public static object GetProperty<TType> (MyFunc<TType, object> expression) - { - return null; - } -} - -class TestClass -{ - public string $@Value { get; set; } - - static object ValueProperty = TypeManager.GetProperty<TestClass> (x => x.@Value); -} -"); - } - - /// <summary> - /// Bug 585454 - Lacking one reference to an enum type - /// </summary> - [Test()] - public void TestBug585454 () - { - RunTest ( -@" -internal enum $@EnumTest { - Value1, - Value2 -} -class DemoMain -{ - @EnumTest innerEnum; - - public DemoMain (@EnumTest theEnum) { - innerEnum = theEnum; - - if (innerEnum == @EnumTest.Value1) - throw new Exception (); - } -} -"); - } - - /// <summary> - /// Bug 587071 - Find references shows a lot of methods with the same name but not from the correct class - /// </summary> - [Test()] - public void TestBug587071 () - { - RunTest ( -@" - -class Base { -} - -class A : Base -{ - public virtual void $@FooBar () {} -} - - -class B : Base -{ - public virtual void FooBar () {} -} -"); - } - - /// <summary> - /// Bug 587530 – for/foreach rename refactoring ignores the scope - /// </summary> - [Test()] - public void TestBug587530 () - { - LocalVariable localVariable = new LocalVariable (null, - "t", - DomReturnType.Int32, - new DomRegion (12, 8, 13, 1)); - RunTest ( -@"using System; - -class C -{ - static void Main () - { - for (int t = 0; -t < 10; -++t) - Console.WriteLine (t); - - for (int $@t = 0; -@t < 10; -++@t) - Console.WriteLine (@t); - } -} -", localVariable); - } - - /// <summary> - /// Bug 605104 - Highlighter fails to find an instance of my method - /// </summary> - [Test()] - public void TestBug605104 () - { - RunTest ( -@"class TestClass -{ - bool $@RemoveFromFiltered ( -object item) - { - return item != null; - } - - void RemoveFromFilteredAndGroup (object item) - { - if (@RemoveFromFiltered (item) && item != null) - ; - } -} -"); - } - - /// <summary> - /// Bug 615702 - In-place variable renaming can't rename foreach loop variables - /// </summary> - [Test()] - public void TestBug615702 () - { - LocalVariable localVariable = new LocalVariable (null, - "obj", - DomReturnType.Int32, - new DomRegion (6, 3, 8, 3)); - RunTest ( -@"class FooBar -{ - public static void Main (string[] args) - { - foreach (object $@obj in new object[3]) - { - Console.WriteLine (@obj.GetType()); - } - } -}", localVariable); - } - - - /// <summary> - /// Bug 615983 - Refactoring does not include object initializers - /// </summary> - [Test()] - public void TestBug615983 () - { - RunTest ( -@"class test -{ - public string $@property { get; set; } - - void Test () - { - test product = new test { - @property = ""asdf"" - }; - product.@property = ""asdf""; - } -}"); - } - - /// <summary> - /// Bug 693228 - Rename in body of foreach loop doesn't change declaration instance - /// </summary> - [Test()] - public void TestBug693228 () - { - LocalVariable localVariable = new LocalVariable (null, - "arg", - DomReturnType.String, - new DomRegion (4, 29, 6, 9)); - RunTest ( -@"class TestClass { - public static void Main (string[] args) - { - foreach (var $@arg in args) { - Console.WriteLine (@arg); - } - - } -} -", localVariable); - } - - /*
- [Test()] - public void FindInterfaceMethodReferences () - {
- RunTest ( -@" -public interface ITest { - void $@doSomething(double par); -} - -public abstract class AbstractTest: ITest { - public abstract void @doSomething(double par); // Not renamed!! -} - -public class ConcreteTest: AbstractTest { - public override void @doSomething(double par) - { - base.@doSomething(par); - } -} -");
- }
- - [Test()] - public void FindOverridenMethodReferences () - {
- RunTest ( -@" -public class BaseTest -{ - public virtual void $@MyMethod() - { - @MyMethod (); - } -} - -public class Test : BaseTest -{ - public override void @MyMethod() - { - @MyMethod (); - } -} -");
- }*/
-
- } -} +//using System; +//using System.Collections.Generic;
+//using System.Text; +// +//using NUnit.Framework; +//using Mono.TextEditor;
+//using MonoDevelop.Core; +//using MonoDevelop.Projects; +//using MonoDevelop.Projects.Dom;
+//using MonoDevelop.Projects.Dom.Parser; +//using MonoDevelop.CSharpBinding;
+//using MonoDevelop.Projects.CodeGeneration; +//using MonoDevelop.Projects.Text; +//using ICSharpCode.OldNRefactory.Visitors; +//using MonoDevelop.CSharp.Parser; +//using MonoDevelop.CSharp.Resolver; +//using MonoDevelop.CSharp.Refactoring; +// +//namespace MonoDevelop.CSharpBinding.Tests +//{ +// [TestFixture] +// public class FindMemberVisitorTests : UnitTests.TestBase +// { +// #region TestHelper +// static McsParser parser = new McsParser (); +// +// void RunTest (string test) +// { +// RunTest (test, null); +// } +// +// void RunTest (string test, LocalVariable localVariable) +// { +// StringBuilder testText = new StringBuilder (); +// List<DomLocation> expectedReferences = new List<DomLocation> (); +// DomLocation memberLocation = DomLocation.Empty; +// int line = 1, col = 1; +// foreach (char ch in test) { +// switch (ch) { +// case '$': +// memberLocation = new DomLocation (line, col); +// break; +// case '@': +// expectedReferences.Add (new DomLocation (line, col)); +// break; +// default: +// col++; +// if (ch == '\n') { +// col = 1; +// line++; +// } +// testText.Append (ch); +// break; +// } +// } +// DotNetProject project = new DotNetAssemblyProject ("C#");
+// project.FileName = "/tmp/a.csproj";
+//
+// SimpleProjectDom dom = new SimpleProjectDom ();
+// dom.Project = project;
+// ProjectDomService.RegisterDom (dom, "Project:" + project.FileName); +// +// ParsedDocument parsedDocument = parser.Parse (null, "a.cs", testText.ToString ()); +// dom.Add (parsedDocument.CompilationUnit); +// +// TestViewContent testViewContent = new TestViewContent (); +// testViewContent.Name = "a.cs"; +// testViewContent.Text = testText.ToString (); +// // RefactorerContext ctx = new RefactorerContext (dom, new DumbTextFileProvider(testViewContent), null); +// NRefactoryResolver resolver = new NRefactoryResolver (dom, +// parsedDocument.CompilationUnit, +// testViewContent.Data, +// "a.cs"); +// SearchMemberVisitor smv = new SearchMemberVisitor (memberLocation.Line); +// if (localVariable != null) { +// ((LocalVariable)localVariable).DeclaringMember = parsedDocument.CompilationUnit.GetMemberAt (expectedReferences[0]); +// smv.FoundMember = localVariable; +// } else { +// smv.Visit (parsedDocument.CompilationUnit, null); +// if (smv.FoundMember == null) { +// ResolveResult resolveResult = resolver.ResolveIdentifier ("a", memberLocation); +// if (resolveResult is LocalVariableResolveResult) +// smv.FoundMember = ((LocalVariableResolveResult)resolveResult).LocalVariable; +// } +// } +// +// Assert.IsNotNull (smv.FoundMember, "Member to search not found."); +// if (smv.FoundMember is IType) { +// smv.FoundMember = dom.GetType (((IType)smv.FoundMember).FullName, +// ((IType)smv.FoundMember).TypeParameters.Count, +// true); +// } +// FindMemberAstVisitor astVisitor = new FindMemberAstVisitor (testViewContent.GetTextEditorData ().Document, smv.FoundMember); +// astVisitor.RunVisitor (resolver); +// +// int i = 0, j = 0; +// StringBuilder errorText = new StringBuilder (); +// Document doc = new Document (); +// doc.Text = testViewContent.Text; +// while (i < expectedReferences.Count && j < astVisitor.FoundReferences.Count) { +// +// if (expectedReferences[i].Line != astVisitor.FoundReferences[j].Line || expectedReferences[i].Column != astVisitor.FoundReferences[j].Column) { +// if (expectedReferences[i].Line < astVisitor.FoundReferences[j].Line) { +// errorText.Append ("Reference at line " + expectedReferences[i].Line + " not found."); +// errorText.AppendLine (); +// errorText.Append (doc.GetTextAt (doc.GetLine (expectedReferences[i].Line)).Replace ('\t', ' ')); +// errorText.AppendLine (); +// errorText.Append (new string (' ', expectedReferences[i].Column));errorText.Append ('^'); +// errorText.AppendLine (); +// i++; +// continue; +// } +// if (expectedReferences[i].Line > astVisitor.FoundReferences[j].Line) { +// errorText.Append ("Found unexpected Reference at line " + astVisitor.FoundReferences[j].Line); +// errorText.AppendLine (); +// errorText.Append (doc.GetTextAt (doc.GetLine (astVisitor.FoundReferences[j].Line)).Replace ('\t', ' ')); +// errorText.AppendLine (); +// errorText.Append (new string (' ', astVisitor.FoundReferences[j].Column));errorText.Append ('^'); +// errorText.AppendLine (); +// j++; +// continue; +// } +// +// errorText.Append ("Column mismatch at line " + astVisitor.FoundReferences[j].Line + " was: " + astVisitor.FoundReferences[j].Column + " should be:" + expectedReferences[i].Column); +// errorText.AppendLine (); +// errorText.Append (doc.GetTextAt (doc.GetLine (astVisitor.FoundReferences[j].Line)).Replace ('\t', ' ')); +// errorText.Append (new string (' ', expectedReferences[i].Column));errorText.Append ('^'); +// errorText.AppendLine (); +// errorText.Append (new string (' ', astVisitor.FoundReferences[j].Column));errorText.Append ('^'); +// errorText.AppendLine (); +// } +// i++;j++; +// } +// while (i < expectedReferences.Count) { +// errorText.Append ("Reference at line " + expectedReferences[i].Line + " not found."); +// errorText.AppendLine (); +// errorText.Append (doc.GetTextAt (doc.GetLine (expectedReferences[i].Line)).Replace ('\t', ' ')); +// errorText.AppendLine (); +// errorText.Append (new string (' ', expectedReferences[j].Column));errorText.Append ('^'); +// errorText.AppendLine (); +// i++; +// } +// while (j < astVisitor.FoundReferences.Count) { +// errorText.Append ("Found unexpected Reference at line " + astVisitor.FoundReferences[j].Line); +// errorText.AppendLine (); +// errorText.Append (doc.GetTextAt (doc.GetLine (astVisitor.FoundReferences[j].Line)).Replace ('\t', ' ')); +// errorText.AppendLine (); +// errorText.Append (new string (' ', astVisitor.FoundReferences[i].Column));errorText.Append ('^'); +// errorText.AppendLine (); +// j++; +// } +// if (errorText.Length > 0) +// Assert.Fail ("Member to find:" + smv.FoundMember + Environment.NewLine + errorText.ToString () + Environment.NewLine + "found : " + astVisitor.FoundReferences.Count + " expected:" + expectedReferences.Count); +// } +// +// class DumbTextFileProvider : ITextFileProvider +// { +// IEditableTextFile file; +// public DumbTextFileProvider (IEditableTextFile file) +// { +// this.file = file; +// } +// public IEditableTextFile GetEditableTextFile (FilePath filePath) +// { +// return file; +// } +// } +// +// class SearchMemberVisitor : AbstractDomVisitor<object, object> +// { +// public INode FoundMember { +// get; +// set; +// } +// int lineNumber; +// public SearchMemberVisitor (int lineNumber) +// { +// this.lineNumber = lineNumber; +// } +// +// void Check (IMember member) +// { +// if (member.Location.Line == lineNumber) { +// FoundMember = member; +// } +// } +// +// public override object Visit (IType type, object data) +// { +// Check (type); +// foreach (IMember member in type.Members) { +// member.AcceptVisitor (this, data); +// } +// return base.Visit (type, data); +// } +// +// public override object Visit (IField field, object data) +// { +// Check (field); +// return base.Visit (field, data); +// } +// +// public override object Visit (IMethod method, object data) +// { +// Check (method); +// return base.Visit (method, data); +// } +// +// public override object Visit (MonoDevelop.Projects.Dom.IParameter parameter, object data) +// { +// if (parameter.Location.Line == lineNumber) +// FoundMember = parameter; +// return base.Visit (parameter, data); +// } +// +// public override object Visit (IProperty property, object data) +// { +// Check (property); +// return base.Visit (property, data); +// } +// +// public override object Visit (IEvent evt, object data) +// { +// Check (evt); +// return base.Visit (evt, data); +// } +// +// public override object Visit (LocalVariable var, object data) +// { +// if (var.Region.Start.Line == lineNumber) +// FoundMember = var; +// return base.Visit (var, data); +// } +// } +// #endregion +// +// [Test()] +// public void FindClassReferences () +// {
+// RunTest ( +//@"class $@Test { +// @Test (@Test t) +// { +// } +// ~@Test () +// {} +// +// void TestMe(@Test p) +// { +// @Test i; +// } +//} +// +//delegate @Test TestDelegate (@Test test); +// +//class OuterTest : @Test +//{ +// @Test testField; +// @Test TestProperty { get { } } +// +// event @Test TestEvent; +// public @Test this[int i] { get { } } +// public int this[@Test t] { get { } } +// +// public OuterTest (object t) : base ((@Test)t) +// { +// } +// +// @Test Outer (object o) +// { +// return ((@Test)o); +// } +//} +//namespace SomethingDifferent +//{ +// class Test +// { +// } +//} +//");
+// } +// +// [Test()] +// public void FindFieldReferences () +// {
+// RunTest ( +//@"class TestClass { +// protected int $@testField; +// +// TestClass () +// { +// @testField = 5; +// } +// +// void TestMe(int f) +// { +// this.@testField = f; +// } +//} +// +// +//class OuterTest : TestClass +//{ +// int TestProperty { get { return base.@testField; } } +//} +// +//namespace SomethingDifferent +//{ +// class Test +// { +// int testField; +// } +//} +//"); +// } +// +// [Test()] +// public void FindEventReferences () +// {
+// RunTest ( +//@"class TestClass { +// delegate void TestEventDelegate (); +// +// public event TestEventDelegate $@MyEvent; +// +// TestClass () +// { +// @MyEvent += TestMe; +// } +// +// void TestMe() +// { +// } +//} +// +// +//class OuterTest : TestClass +//{ +// void Test () +// { +// @MyEvent -= TestMe; +// } +//} +// +//namespace SomethingDifferent +//{ +// class Test +// { +// public event TestClass.TestEventDelegate MyEvent; +// } +//} +//"); +// } +// +// [Test()] +// public void FindMethodReferences () +// {
+// RunTest ( +//@"class TestClass { +// public void $@TestMethod ( +//int a, int b) +// { +// } +// public void TestMethod (int a) +// { +// @TestMethod (a, 6); +// } +// public void TestMethod () +// { +// TestMethod (4); +// } +//} +// +// +//class OuterTest : TestClass +//{ +// void A () +// { +// @TestMethod (5, 4); +// TestMethod (5); +// } +//} +// +//namespace SomethingOuter +//{ +// class Test +// { +// void Bla (TestClass t) +// { +// t.@TestMethod (5, 4); +// } +// } +//} +//"); +// } +// +// [Test()] +// public void FindPropertyReferences () +// {
+// RunTest ( +//@"class TestClass { +// public int $@MyProperty { get {} set {}} +// +// public void TestMethod (int a) +// { +// @MyProperty = a; +// } +// public void TestMethod () +// { +// WriteLine (this.@MyProperty); +// } +//} +// +// +//class OuterTest : TestClass +//{ +// void A () +// { +// @MyProperty = 5; +// WriteLine (base.@MyProperty); +// WriteLine (this.@MyProperty); +// } +//} +// +//namespace SomethingOuter +//{ +// class Test +// { +// void Bla (TestClass t) +// { +// t.@MyProperty = 5; +// } +// } +//} +//");
+// } +// +// [Test()] +// public void FindParameterReferences () +// {
+// RunTest ( +//@"class TestClass { +// public void TestMethod ( +//int $@a, +//int b) +// { +// WriteLine (@a); +// @a--; +// b = @a; +// @a = b; +// } +//} +//");
+// } +// +// [Test()] +// public void FindLocalVariableReferences () +// { +// RunTest ( +//@"class TestClass { +// public void TestMethod () +// { +// int $@a; +// int b = 5; +// WriteLine (@a); +// @a--; +// b = @a; +// @a = b; +// } +// +// public void TestMethod2 () +// { +// int a; +// WriteLine (a); +// a--; +// int b = a; +// } +//} +//"); +// } +// +// /// <summary> +// /// Bug 480492 - Find field references returns incorrect references +// /// </summary> +// [Test()] +// public void TestBug480492 () +// { +// RunTest ( +//@"class BaseClass +//{ +//} +// +//class A : BaseClass +//{ +// BaseClass $@myField; +//} +// +//class B : BaseClass +//{ +// BaseClass myField; +// void TestMe () +// { +// myField = null; // this should not be found. +// this.myField = null; // this should not be found. +// } +//}"); +// } +// +// /// <summary> +// /// Bug 493202 - List References on private constructor yields nothing +// /// </summary> +// [Test()] +// public void TestBug493202 () +// { +// RunTest ( +//@"public class Foo { +// $@Foo () //right click on Foo and list constructor references +// {} +// +// public Foo Instance() +// { +// return new @Foo (); +// } +//} +//"); +// } +// +// +// +// /// <summary> +// /// Bug 531525 - Refactoring + Renaming fails for delegate +// /// </summary> +// [Test()] +// public void TestBug531525 () +// { +// RunTest ( +//@"public class Foo { +// void $@IdeAppWorkspaceSolutionLoaded ( +//object sender, +//SolutionEventArgs e) +// {} +// +// public void Main() +// { +// IdeApp.Workspace.SolutionLoaded += @IdeAppWorkspaceSolutionLoaded; +// } +//} +//"); +// } +// +// /// <summary> +// /// Bug 545361 - Method -> Rename doesn't update instance in delegate constructor +// /// </summary> +// [Test()] +// public void TestBug545361 () +// { +// RunTest ( +//@"class TestClass { +// public void $@FlyZoomInCallback () +// { +// } +// public void TestMethod (int a) +// { +// GLib.Idle.Add(new GLib.IdleHandler(@FlyZoomInCallback)); +// } +//} +//"); +// } +// +// +// /// <summary> +// /// Bug 547949 - Rename partial classes does not rename both classes +// /// </summary> +// [Test()] +// public void TestBug547949 () +// { +// RunTest ( +//@"partial class $@MyTest +//{ +// void Test1 () +// { +// @MyTest test; +// } +// +// public @MyTest (int a) +// { +// } +//} +// +//partial class @MyTest +//{ +// public @MyTest () +// { +// } +//} +//"); +// } +// +// /// <summary> +// /// Bug 549858 - Refactoring does not change properties in lambda expressions +// /// </summary> +// [Test()] +// public void TestBug549858 () +// { +// RunTest ( +//@"public delegate S MyFunc<T, S> (T t); +// +//public static class TypeManager +//{ +// public static object GetProperty<TType> (MyFunc<TType, object> expression) +// { +// return null; +// } +//} +// +//class TestClass +//{ +// public string $@Value { get; set; } +// +// static object ValueProperty = TypeManager.GetProperty<TestClass> (x => x.@Value); +//} +//"); +// } +// +// /// <summary> +// /// Bug 585454 - Lacking one reference to an enum type +// /// </summary> +// [Test()] +// public void TestBug585454 () +// { +// RunTest ( +//@" +//internal enum $@EnumTest { +// Value1, +// Value2 +//} +//class DemoMain +//{ +// @EnumTest innerEnum; +// +// public DemoMain (@EnumTest theEnum) { +// innerEnum = theEnum; +// +// if (innerEnum == @EnumTest.Value1) +// throw new Exception (); +// } +//} +//"); +// } +// +// /// <summary> +// /// Bug 587071 - Find references shows a lot of methods with the same name but not from the correct class +// /// </summary> +// [Test()] +// public void TestBug587071 () +// { +// RunTest ( +//@" +// +//class Base { +//} +// +//class A : Base +//{ +// public virtual void $@FooBar () {} +//} +// +// +//class B : Base +//{ +// public virtual void FooBar () {} +//} +//"); +// } +// +// /// <summary> +// /// Bug 587530 – for/foreach rename refactoring ignores the scope +// /// </summary> +// [Test()] +// public void TestBug587530 () +// { +// LocalVariable localVariable = new LocalVariable (null, +// "t", +// DomReturnType.Int32, +// new DomRegion (12, 8, 13, 1)); +// RunTest ( +//@"using System; +// +//class C +//{ +// static void Main () +// { +// for (int t = 0; +//t < 10; +//++t) +// Console.WriteLine (t); +// +// for (int $@t = 0; +//@t < 10; +//++@t) +// Console.WriteLine (@t); +// } +//} +//", localVariable); +// } +// +// /// <summary> +// /// Bug 605104 - Highlighter fails to find an instance of my method +// /// </summary> +// [Test()] +// public void TestBug605104 () +// { +// RunTest ( +//@"class TestClass +//{ +// bool $@RemoveFromFiltered ( +//object item) +// { +// return item != null; +// } +// +// void RemoveFromFilteredAndGroup (object item) +// { +// if (@RemoveFromFiltered (item) && item != null) +// ; +// } +//} +//"); +// } +// +// /// <summary> +// /// Bug 615702 - In-place variable renaming can't rename foreach loop variables +// /// </summary> +// [Test()] +// public void TestBug615702 () +// { +// LocalVariable localVariable = new LocalVariable (null, +// "obj", +// DomReturnType.Int32, +// new DomRegion (6, 3, 8, 3)); +// RunTest ( +//@"class FooBar +//{ +// public static void Main (string[] args) +// { +// foreach (object $@obj in new object[3]) +// { +// Console.WriteLine (@obj.GetType()); +// } +// } +//}", localVariable); +// } +// +// +// /// <summary> +// /// Bug 615983 - Refactoring does not include object initializers +// /// </summary> +// [Test()] +// public void TestBug615983 () +// { +// RunTest ( +//@"class test +//{ +// public string $@property { get; set; } +// +// void Test () +// { +// test product = new test { +// @property = ""asdf"" +// }; +// product.@property = ""asdf""; +// } +//}"); +// } +// +// /// <summary> +// /// Bug 693228 - Rename in body of foreach loop doesn't change declaration instance +// /// </summary> +// [Test()] +// public void TestBug693228 () +// { +// LocalVariable localVariable = new LocalVariable (null, +// "arg", +// DomReturnType.String, +// new DomRegion (4, 29, 6, 9)); +// RunTest ( +//@"class TestClass { +// public static void Main (string[] args) +// { +// foreach (var $@arg in args) { +// Console.WriteLine (@arg); +// } +// +// } +//} +//", localVariable); +// } +// +// /*
+// [Test()] +// public void FindInterfaceMethodReferences () +// {
+// RunTest ( +//@" +//public interface ITest { +// void $@doSomething(double par); +//} +// +//public abstract class AbstractTest: ITest { +// public abstract void @doSomething(double par); // Not renamed!! +//} +// +//public class ConcreteTest: AbstractTest { +// public override void @doSomething(double par) +// { +// base.@doSomething(par); +// } +//} +//");
+// }
+// +// [Test()] +// public void FindOverridenMethodReferences () +// {
+// RunTest ( +//@" +//public class BaseTest +//{ +// public virtual void $@MyMethod() +// { +// @MyMethod (); +// } +//} +// +//public class Test : BaseTest +//{ +// public override void @MyMethod() +// { +// @MyMethod (); +// } +//} +//");
+// }*/
+//
+// } +//} diff --git a/main/tests/UnitTests/MonoDevelop.CSharpBinding/MemberTests.cs b/main/tests/UnitTests/MonoDevelop.CSharpBinding/MemberTests.cs index 132b5c7331..5db91c48e7 100644 --- a/main/tests/UnitTests/MonoDevelop.CSharpBinding/MemberTests.cs +++ b/main/tests/UnitTests/MonoDevelop.CSharpBinding/MemberTests.cs @@ -1,211 +1,209 @@ -//
-// MemberTests.cs +//// +//// MemberTests.cs +//// +//// Author: +//// Mike Krüger <mkrueger@novell.com> +//// +//// Copyright (C) 2008 Novell, Inc (http://www.novell.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. +//// // -// Author: -// Mike Krüger <mkrueger@novell.com> +//using System; +//using System.Collections.Generic; // -// Copyright (C) 2008 Novell, Inc (http://www.novell.com) +//using NUnit.Framework; +//using MonoDevelop.CSharpBinding; +//using MonoDevelop.CSharp.Parser; // -// 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. +//namespace MonoDevelop.CSharpBinding.Tests +//{ +// [TestFixture] +// public class MemberTests +// { +// void DoTestFields (IParser parser) +// { +// ICompilationUnit unit = parser.Parse (null, "a.cs", @"class AClass { int x, y; }").CompilationUnit; +// Assert.AreEqual (1, unit.Types.Count); +// IType type = unit.Types[0]; +// +// Assert.AreEqual (2, type.FieldCount); +// List<IField> fields = new List<IField> (type.Fields); +// Assert.AreEqual ("x", fields[0].Name); +// Assert.AreEqual ("System.Int32", fields[0].ReturnType.FullName); +// Assert.AreEqual ("y", fields[1].Name); +// Assert.AreEqual ("System.Int32", fields[1].ReturnType.FullName); +// } +// +// [Test] +// public void TestFields () +// { +// DoTestFields (new McsParser ()); +//// DoTestFields (new DomParser ()); +// } +// +// void DoTestMethods (IParser parser) +// { +// ICompilationUnit unit = parser.Parse (null, "a.cs", +//@"class AClass { +// void TestMethod<T> (string a, int b) {} +// public static void ExtensionMethod (this int a) {}; +//}").CompilationUnit; +// Assert.AreEqual (1, unit.Types.Count); +// IType type = unit.Types[0]; +// +// Assert.AreEqual (2, type.MethodCount); +// List<IMethod> methods = new List<IMethod> (type.Methods); +// Assert.AreEqual ("TestMethod", methods[0].Name); +// Assert.AreEqual (2, methods[0].Parameters.Count); +// Assert.AreEqual ("a", methods[0].Parameters[0].Name); +// Assert.AreEqual ("b", methods[0].Parameters[1].Name); +// +// Assert.IsFalse (methods[1].IsConstructor); +// Assert.IsTrue (methods[1].IsExtension); +// Assert.AreEqual (1, methods[1].Parameters.Count); +// Assert.AreEqual ("a", methods[1].Parameters[0].Name); +// } +// +// [Test] +// public void TestMethods () +// { +// DoTestMethods (new McsParser ()); +//// DoTestMethods (new DomParser ()); +// } +// +// void DoTestConstructor (IParser parser) +// { +// ICompilationUnit unit = parser.Parse (null, "a.cs", +//@"public abstract class BaseClass { +// BaseClass () {} +// protected BaseClass(int id) +// { +// } +//}").CompilationUnit; +// Assert.AreEqual (1, unit.Types.Count); +// IType type = unit.Types[0]; +// +// Assert.AreEqual (2, type.ConstructorCount); +// List<IMethod> methods = new List<IMethod> (type.Methods); +// Assert.IsTrue (methods[0].IsConstructor); +// Assert.IsTrue (methods[1].IsConstructor); +// } +// +// [Test] +// public void TestConstructor () +// { +// DoTestConstructor (new McsParser ()); +//// DoTestConstructor (new DomParser ()); +// } +// +// void DoTestProperties (IParser parser) +// { +// ICompilationUnit unit = parser.Parse (null, "a.cs", +//@"class AClass { +// int MyProperty { +// get { } +// set { } +// } +// string MyProperty2 { +// set { } +// } +// string MyProperty3 { +// get { } +// } +//}").CompilationUnit; +// Assert.AreEqual (1, unit.Types.Count); +// IType type = unit.Types[0]; +// +// Assert.AreEqual (3, type.PropertyCount); +// List<IProperty> properties = new List<IProperty> (type.Properties); +// Assert.AreEqual ("MyProperty", properties[0].Name); +// Assert.IsTrue (properties[0].HasGet); +// Assert.IsTrue (properties[0].HasSet); +// Assert.IsFalse (properties[0].IsIndexer); +// +// Assert.AreEqual ("MyProperty2", properties[1].Name); +// Assert.IsFalse (properties[1].HasGet); +// Assert.IsTrue (properties[1].HasSet); +// Assert.IsFalse (properties[1].IsIndexer); +// +// Assert.AreEqual ("MyProperty3", properties[2].Name); +// Assert.IsTrue (properties[2].HasGet); +// Assert.IsFalse (properties[2].HasSet); +// Assert.IsFalse (properties[2].IsIndexer); +// } +// +// [Test] +// public void TestProperties () +// { +// DoTestProperties (new McsParser ()); +//// DoTestProperties (new DomParser ()); +// } +// +// void DoTestIndexer (IParser parser) +// { +// ICompilationUnit unit = parser.Parse (null, "a.cs", +//@"class AClass { +// int this[int a] { +// get { } +// set { } +// } +//}").CompilationUnit; +// Assert.AreEqual (1, unit.Types.Count); +// IType type = unit.Types[0]; +// +// Assert.AreEqual (1, type.IndexerCount); +// List<IProperty> properties = new List<IProperty> (type.Properties); +// Assert.IsTrue (properties[0].IsIndexer); +// Assert.AreEqual (1, properties[0].Parameters.Count); +// Assert.AreEqual ("a", properties[0].Parameters[0].Name); +// } +// +// [Test] +// public void TestIndexer () +// { +// DoTestIndexer (new McsParser ()); +//// DoTestIndexer (new DomParser ()); +// } // - -using System; -using System.Collections.Generic;
- -using NUnit.Framework;
-using MonoDevelop.Projects.Dom;
-using MonoDevelop.Projects.Dom.Parser; -using MonoDevelop.CSharpBinding;
-using MonoDevelop.CSharp.Parser;
- -namespace MonoDevelop.CSharpBinding.Tests -{ - [TestFixture] - public class MemberTests - { - void DoTestFields (IParser parser)
- {
- ICompilationUnit unit = parser.Parse (null, "a.cs", @"class AClass { int x, y; }").CompilationUnit;
- Assert.AreEqual (1, unit.Types.Count);
- IType type = unit.Types[0];
-
- Assert.AreEqual (2, type.FieldCount);
- List<IField> fields = new List<IField> (type.Fields);
- Assert.AreEqual ("x", fields[0].Name);
- Assert.AreEqual ("System.Int32", fields[0].ReturnType.FullName);
- Assert.AreEqual ("y", fields[1].Name);
- Assert.AreEqual ("System.Int32", fields[1].ReturnType.FullName);
- }
-
- [Test] - public void TestFields () - {
- DoTestFields (new McsParser ());
-// DoTestFields (new DomParser ()); - }
-
- void DoTestMethods (IParser parser)
- {
- ICompilationUnit unit = parser.Parse (null, "a.cs",
-@"class AClass {
- void TestMethod<T> (string a, int b) {}
- public static void ExtensionMethod (this int a) {};
-}").CompilationUnit;
- Assert.AreEqual (1, unit.Types.Count);
- IType type = unit.Types[0];
-
- Assert.AreEqual (2, type.MethodCount);
- List<IMethod> methods = new List<IMethod> (type.Methods);
- Assert.AreEqual ("TestMethod", methods[0].Name);
- Assert.AreEqual (2, methods[0].Parameters.Count);
- Assert.AreEqual ("a", methods[0].Parameters[0].Name);
- Assert.AreEqual ("b", methods[0].Parameters[1].Name);
-
- Assert.IsFalse (methods[1].IsConstructor);
- Assert.IsTrue (methods[1].IsExtension);
- Assert.AreEqual (1, methods[1].Parameters.Count);
- Assert.AreEqual ("a", methods[1].Parameters[0].Name);
- }
-
- [Test] - public void TestMethods () - {
- DoTestMethods (new McsParser ());
-// DoTestMethods (new DomParser ()); - }
-
- void DoTestConstructor (IParser parser)
- {
- ICompilationUnit unit = parser.Parse (null, "a.cs",
-@"public abstract class BaseClass {
- BaseClass () {}
- protected BaseClass(int id) - { - }
-}").CompilationUnit;
- Assert.AreEqual (1, unit.Types.Count);
- IType type = unit.Types[0];
-
- Assert.AreEqual (2, type.ConstructorCount);
- List<IMethod> methods = new List<IMethod> (type.Methods);
- Assert.IsTrue (methods[0].IsConstructor);
- Assert.IsTrue (methods[1].IsConstructor);
- }
-
- [Test] - public void TestConstructor () - {
- DoTestConstructor (new McsParser ());
-// DoTestConstructor (new DomParser ()); - }
-
- void DoTestProperties (IParser parser)
- {
- ICompilationUnit unit = parser.Parse (null, "a.cs",
-@"class AClass {
- int MyProperty {
- get { }
- set { }
- }
- string MyProperty2 {
- set { }
- }
- string MyProperty3 {
- get { }
- }
-}").CompilationUnit;
- Assert.AreEqual (1, unit.Types.Count);
- IType type = unit.Types[0];
-
- Assert.AreEqual (3, type.PropertyCount);
- List<IProperty> properties = new List<IProperty> (type.Properties);
- Assert.AreEqual ("MyProperty", properties[0].Name);
- Assert.IsTrue (properties[0].HasGet);
- Assert.IsTrue (properties[0].HasSet);
- Assert.IsFalse (properties[0].IsIndexer);
-
- Assert.AreEqual ("MyProperty2", properties[1].Name);
- Assert.IsFalse (properties[1].HasGet);
- Assert.IsTrue (properties[1].HasSet);
- Assert.IsFalse (properties[1].IsIndexer);
-
- Assert.AreEqual ("MyProperty3", properties[2].Name);
- Assert.IsTrue (properties[2].HasGet);
- Assert.IsFalse (properties[2].HasSet);
- Assert.IsFalse (properties[2].IsIndexer);
- }
-
- [Test] - public void TestProperties () - {
- DoTestProperties (new McsParser ());
-// DoTestProperties (new DomParser ()); - }
-
- void DoTestIndexer (IParser parser)
- {
- ICompilationUnit unit = parser.Parse (null, "a.cs",
-@"class AClass {
- int this[int a] {
- get { }
- set { }
- }
-}").CompilationUnit;
- Assert.AreEqual (1, unit.Types.Count);
- IType type = unit.Types[0];
-
- Assert.AreEqual (1, type.IndexerCount);
- List<IProperty> properties = new List<IProperty> (type.Properties);
- Assert.IsTrue (properties[0].IsIndexer);
- Assert.AreEqual (1, properties[0].Parameters.Count);
- Assert.AreEqual ("a", properties[0].Parameters[0].Name);
- }
-
- [Test] - public void TestIndexer () - {
- DoTestIndexer (new McsParser ());
-// DoTestIndexer (new DomParser ()); - }
-
- void DoTestEvents (IParser parser)
- {
- ICompilationUnit unit = parser.Parse (null, "a.cs",
-@"class AClass {
- event EventHandler TestEvent;
-}").CompilationUnit;
- Assert.AreEqual (1, unit.Types.Count);
- IType type = unit.Types[0];
-
- Assert.AreEqual (1, type.EventCount);
- List<IEvent> events = new List<IEvent> (type.Events);
- Assert.AreEqual ("TestEvent", events[0].Name);
- Assert.AreEqual ("EventHandler", events[0].ReturnType.Name);
- }
-
- [Test] - public void TestEvents () - {
- DoTestEvents (new McsParser ());
-// DoTestEvents (new DomParser ()); - }
-
- } -} +// void DoTestEvents (IParser parser) +// { +// ICompilationUnit unit = parser.Parse (null, "a.cs", +//@"class AClass { +// event EventHandler TestEvent; +//}").CompilationUnit; +// Assert.AreEqual (1, unit.Types.Count); +// IType type = unit.Types[0]; +// +// Assert.AreEqual (1, type.EventCount); +// List<IEvent> events = new List<IEvent> (type.Events); +// Assert.AreEqual ("TestEvent", events[0].Name); +// Assert.AreEqual ("EventHandler", events[0].ReturnType.Name); +// } +// +// [Test] +// public void TestEvents () +// { +// DoTestEvents (new McsParser ()); +//// DoTestEvents (new DomParser ()); +// } +// +// } +//} diff --git a/main/tests/UnitTests/MonoDevelop.CSharpBinding/ParameterCompletionTests.cs b/main/tests/UnitTests/MonoDevelop.CSharpBinding/ParameterCompletionTests.cs index 13556217dd..b355a4d315 100644 --- a/main/tests/UnitTests/MonoDevelop.CSharpBinding/ParameterCompletionTests.cs +++ b/main/tests/UnitTests/MonoDevelop.CSharpBinding/ParameterCompletionTests.cs @@ -1,4 +1,4 @@ -//
+// // ParameterCompletionTests.cs // // Author: @@ -27,78 +27,77 @@ // using System; -using NUnit.Framework;
-using MonoDevelop.Ide.Gui;
+using NUnit.Framework; +using MonoDevelop.Ide.Gui; using MonoDevelop.Projects; using MonoDevelop.Core; -using MonoDevelop.Ide.CodeCompletion;
-using MonoDevelop.Ide.Gui.Content;
-using MonoDevelop.Projects.Dom.Parser;
-using MonoDevelop.CSharp.Resolver;
-using MonoDevelop.CSharp.Parser;
-using MonoDevelop.CSharp.Completion;
+using MonoDevelop.Ide.CodeCompletion; +using MonoDevelop.Ide.Gui.Content; +using MonoDevelop.CSharp.Resolver; +using MonoDevelop.CSharp.Parser; +using MonoDevelop.CSharp.Completion; +using MonoDevelop.TypeSystem; namespace MonoDevelop.CSharpBinding.Tests { [TestFixture()] public class ParameterCompletionTests : UnitTests.TestBase - {
- static int pcount = 0;
- internal static IParameterDataProvider CreateProvider (string text)
- {
- string parsedText;
- string editorText;
- int cursorPosition = text.IndexOf ('$');
- int endPos = text.IndexOf ('$', cursorPosition + 1);
- if (endPos == -1)
- parsedText = editorText = text.Substring (0, cursorPosition) + text.Substring (cursorPosition + 1);
- else {
- parsedText = text.Substring (0, cursorPosition) + new string (' ', endPos - cursorPosition) + text.Substring (endPos + 1);
- editorText = text.Substring (0, cursorPosition) + text.Substring (cursorPosition + 1, endPos - cursorPosition - 1) + text.Substring (endPos + 1);
- cursorPosition = endPos - 1;
- }
-
- TestWorkbenchWindow tww = new TestWorkbenchWindow ();
- TestViewContent sev = new TestViewContent ();
- DotNetProject project = new DotNetAssemblyProject ("C#");
- project.FileName = GetTempFile (".csproj");
-
- string file = GetTempFile (".cs");
- project.AddFile (file);
-
- ProjectDomService.Load (project);
-// ProjectDom dom = ProjectDomService.GetProjectDom (project);
- ProjectDomService.Parse (project, file, delegate { return parsedText; });
- ProjectDomService.Parse (project, file, delegate { return parsedText; });
-
- sev.Project = project;
- sev.ContentName = file;
- sev.Text = editorText;
- sev.CursorPosition = cursorPosition;
- tww.ViewContent = sev;
- Document doc = new Document (tww);
- doc.ParsedDocument = new McsParser ().Parse (null, sev.ContentName, parsedText);
- CSharpTextEditorCompletion textEditorCompletion = new CSharpTextEditorCompletion (doc);
-
- CodeCompletionContext ctx = new CodeCompletionContext ();
- ctx.TriggerOffset = sev.CursorPosition;
- int line, column;
- sev.GetLineColumnFromPosition (sev.CursorPosition, out line, out column);
- ctx.TriggerLine = line;
- ctx.TriggerLineOffset = column - 1;
-
- IParameterDataProvider result = textEditorCompletion.HandleParameterCompletion (ctx, editorText[cursorPosition - 1]);
- ProjectDomService.Unload (project);
- return result;
- }
+ { + static int pcount = 0; + internal static IParameterDataProvider CreateProvider (string text) + { + string parsedText; + string editorText; + int cursorPosition = text.IndexOf ('$'); + int endPos = text.IndexOf ('$', cursorPosition + 1); + if (endPos == -1) + parsedText = editorText = text.Substring (0, cursorPosition) + text.Substring (cursorPosition + 1); + else { + parsedText = text.Substring (0, cursorPosition) + new string (' ', endPos - cursorPosition) + text.Substring (endPos + 1); + editorText = text.Substring (0, cursorPosition) + text.Substring (cursorPosition + 1, endPos - cursorPosition - 1) + text.Substring (endPos + 1); + cursorPosition = endPos - 1; + } + + TestWorkbenchWindow tww = new TestWorkbenchWindow (); + TestViewContent sev = new TestViewContent (); + DotNetProject project = new DotNetAssemblyProject ("C#"); + project.FileName = GetTempFile (".csproj"); + + string file = GetTempFile (".cs"); + project.AddFile (file); + + TypeSystemService.Load (project); + var content = TypeSystemService.GetProjectContext (project); + var parsedDocument = TypeSystemService.ParseFile (content, file, "text/x-csharp", parsedText); + + sev.Project = project; + sev.ContentName = file; + sev.Text = editorText; + sev.CursorPosition = cursorPosition; + tww.ViewContent = sev; + Document doc = new Document (tww); + doc.ParsedDocument = parsedDocument; + var textEditorCompletion = new CSharpCompletionTextEditorExtension (doc); + + CodeCompletionContext ctx = new CodeCompletionContext (); + ctx.TriggerOffset = sev.CursorPosition; + int line, column; + sev.GetLineColumnFromPosition (sev.CursorPosition, out line, out column); + ctx.TriggerLine = line; + ctx.TriggerLineOffset = column - 1; + + IParameterDataProvider result = textEditorCompletion.HandleParameterCompletion (ctx, editorText[cursorPosition - 1]); + TypeSystemService.Unload (project); + return result; + } /// <summary> /// Bug 427448 - Code Completion: completion of constructor parameters not working /// </summary> - [Test()]
+ [Test()] public void TestBug427448 () - {
- IParameterDataProvider provider = CreateProvider (
+ { + IParameterDataProvider provider = CreateProvider ( @"class Test { public Test (int a) @@ -107,12 +106,12 @@ namespace MonoDevelop.CSharpBinding.Tests public Test (string b) { - }
- protected Test ()
- {
- }
- Test (double d, float m)
- {
+ } + protected Test () + { + } + Test (double d, float m) + { } } @@ -122,80 +121,80 @@ class AClass { $Test t = new Test ($ } -}");
- Assert.IsNotNull (provider, "provider was not created.");
- Assert.AreEqual (2, provider.OverloadCount);
- }
-
+}"); + Assert.IsNotNull (provider, "provider was not created."); + Assert.AreEqual (2, provider.OverloadCount); + } + /// <summary> /// Bug 432437 - No completion when invoking delegates /// </summary> - [Test()]
- public void TestBug432437 ()
- {
+ [Test()] + public void TestBug432437 () + { IParameterDataProvider provider = CreateProvider ( @"public delegate void MyDel (int value); -
+ class Test { - MyDel d;
+ MyDel d; void A() - {
+ { $d ($ } -}");
- Assert.IsNotNull (provider, "provider was not created.");
- Assert.AreEqual (1, provider.OverloadCount);
- }
-
+}"); + Assert.IsNotNull (provider, "provider was not created."); + Assert.AreEqual (1, provider.OverloadCount); + } + /// <summary> /// Bug 432658 - Incorrect completion when calling an extension method from inside another extension method - /// </summary>
+ /// </summary> [Test()] public void TestBug432658 () - {
+ { IParameterDataProvider provider = CreateProvider ( @"static class Extensions { public static void Ext1 (this int start) - {
+ { } public static void Ext2 (this int end) - {
+ { $Ext1($ } }"); Assert.IsNotNull (provider, "provider was not created."); Assert.AreEqual (1, provider.OverloadCount, "There should be one overload"); Assert.AreEqual (1, provider.GetParameterCount(0), "Parameter 'start' should exist"); - }
-
+ } + /// <summary> /// Bug 432727 - No completion if no constructor /// </summary> - [Test()]
+ [Test()] public void TestBug432727 () - {
- IParameterDataProvider provider = CreateProvider (
+ { + IParameterDataProvider provider = CreateProvider ( @"class A { - void Method ()
- {
+ void Method () + { $A aTest = new A ($ - }
-}");
- Assert.IsNotNull (provider, "provider was not created.");
- Assert.AreEqual (1, provider.OverloadCount);
- }
-
+ } +}"); + Assert.IsNotNull (provider, "provider was not created."); + Assert.AreEqual (1, provider.OverloadCount); + } + /// <summary> /// Bug 434705 - No autocomplete offered if not assigning result of 'new' to a variable /// </summary> - [Test()]
+ [Test()] public void TestBug434705 () - {
- IParameterDataProvider provider = CreateProvider (
+ { + IParameterDataProvider provider = CreateProvider ( @"class Test { public Test (int a) @@ -209,19 +208,19 @@ class AClass { $return new Test ($ } -}");
- Assert.IsNotNull (provider, "provider was not created.");
- Assert.AreEqual (1, provider.OverloadCount);
- }
-
+}"); + Assert.IsNotNull (provider, "provider was not created."); + Assert.AreEqual (1, provider.OverloadCount); + } + /// <summary> /// Bug 434705 - No autocomplete offered if not assigning result of 'new' to a variable /// </summary> - [Test()]
+ [Test()] public void TestBug434705B () - {
- IParameterDataProvider provider = CreateProvider (
-@"
+ { + IParameterDataProvider provider = CreateProvider ( +@" class Test<T> { public Test (T t) @@ -234,68 +233,68 @@ class TestClass { $Test<int> l = new Test<int> ($ } -}");
- Assert.IsNotNull (provider, "provider was not created.");
- Assert.AreEqual (1, provider.OverloadCount);
- }
-
-
+}"); + Assert.IsNotNull (provider, "provider was not created."); + Assert.AreEqual (1, provider.OverloadCount); + } + + /// <summary> /// Bug 434701 - No autocomplete in attributes /// </summary> - [Test()]
+ [Test()] public void TestBug434701 () - {
- IParameterDataProvider provider = CreateProvider (
+ { + IParameterDataProvider provider = CreateProvider ( @"class TestAttribute : System.Attribute { public Test (int a) { } } -
+ $[Test ($ class AClass { -}");
- Assert.IsNotNull (provider, "provider was not created.");
- Assert.AreEqual (1, provider.OverloadCount);
- }
-
+}"); + Assert.IsNotNull (provider, "provider was not created."); + Assert.AreEqual (1, provider.OverloadCount); + } + /// <summary> /// Bug 447985 - Exception display tip is inaccurate for derived (custom) exceptions /// </summary> - [Test()]
+ [Test()] public void TestBug447985 () - {
- IParameterDataProvider provider = CreateProvider (
-@"
-namespace System {
- public class Exception
- {
- public Exception () {}
- }
-}
-
-class MyException : System.Exception
-{
- public MyException (int test)
- {}
-}
-
+ { + IParameterDataProvider provider = CreateProvider ( +@" +namespace System { + public class Exception + { + public Exception () {} + } +} + +class MyException : System.Exception +{ + public MyException (int test) + {} +} + class AClass -{
- public void Test ()
- {
- $throw new MyException($
- }
+{ + public void Test () + { + $throw new MyException($ + } -}");
- Assert.IsNotNull (provider, "provider was not created.");
- Assert.AreEqual (1, provider.OverloadCount);
+}"); + Assert.IsNotNull (provider, "provider was not created."); + Assert.AreEqual (1, provider.OverloadCount); Assert.AreEqual (1, provider.GetParameterCount(0), "Parameter 'test' should exist"); - }
-
+ } + } }
\ No newline at end of file diff --git a/main/tests/UnitTests/MonoDevelop.CSharpBinding/ProjectDomTests.cs b/main/tests/UnitTests/MonoDevelop.CSharpBinding/ProjectDomTests.cs index 42c66321bc..37045dedc3 100644 --- a/main/tests/UnitTests/MonoDevelop.CSharpBinding/ProjectDomTests.cs +++ b/main/tests/UnitTests/MonoDevelop.CSharpBinding/ProjectDomTests.cs @@ -34,8 +34,6 @@ using MonoDevelop.Projects; using MonoDevelop.Core; using MonoDevelop.Ide.CodeCompletion; using MonoDevelop.Ide.Gui.Content; -using MonoDevelop.Projects.Dom; -using MonoDevelop.Projects.Dom.Parser; namespace MonoDevelop.CSharpBinding { diff --git a/main/tests/UnitTests/MonoDevelop.CSharpBinding/TopLevelTests.cs b/main/tests/UnitTests/MonoDevelop.CSharpBinding/TopLevelTests.cs index f2c9abaee3..5b6986412a 100644 --- a/main/tests/UnitTests/MonoDevelop.CSharpBinding/TopLevelTests.cs +++ b/main/tests/UnitTests/MonoDevelop.CSharpBinding/TopLevelTests.cs @@ -1,256 +1,254 @@ -//
-// ParserTest.cs +//// +//// ParserTest.cs +//// +//// Author: +//// Mike Krüger <mkrueger@novell.com> +//// +//// Copyright (C) 2008 Novell, Inc (http://www.novell.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. +//// // -// Author: -// Mike Krüger <mkrueger@novell.com> +//using System; +//using System.CodeDom; +//using System.Collections.Generic; +//using NUnit.Framework; +//using MonoDevelop.CSharpBinding; +//using MonoDevelop.CSharp.Parser; // -// Copyright (C) 2008 Novell, Inc (http://www.novell.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.CodeDom; -using System.Collections.Generic; -using NUnit.Framework;
-using MonoDevelop.Projects.Dom;
-using MonoDevelop.Projects.Dom.Parser; -using MonoDevelop.CSharpBinding;
-using MonoDevelop.CSharp.Parser;
- -namespace MonoDevelop.CSharpBinding.Tests -{ - [TestFixture] - public class TopLevelTests - {
- void DoTestUsings (IParser parser)
- {
- ICompilationUnit unit = parser.Parse (null, "a.cs",
-@"using System;
-using NUnit.Framework;").CompilationUnit;
- foreach (IUsing u in unit.Usings) {
- foreach (string ns in u.Namespaces) {
- if (ns == "System") {
- Assert.AreEqual (1, u.Region.End.Line);
- Assert.AreEqual (1, u.Region.Start.Line);
- } else if (ns == "NUnit.Framework") {
- Assert.AreEqual (2, u.Region.End.Line);
- Assert.AreEqual (2, u.Region.Start.Line);
- } else {
- Assert.Fail ("Unknown using: " + ns);
- }
- }
- }
- }
- - [Test] - public void TestUsings () - {
- DoTestUsings (new McsParser ());
- //DoTestUsings (new DomParser ()); - }
-
- void DoTestEnums (IParser parser)
- {
- ICompilationUnit unit = parser.Parse (null, "a.cs",
-@"enum TestEnum {
- A,
- B,
- C
-}").CompilationUnit;
- Assert.AreEqual (1, unit.Types.Count);
- IType type = unit.Types[0];
- Assert.AreEqual (ClassType.Enum, type.ClassType);
- Assert.AreEqual ("TestEnum", type.Name);
- Assert.AreEqual (3, type.FieldCount);
- foreach (IField f in type.Fields) {
- Assert.IsTrue (f.IsConst);
- Assert.IsTrue (f.IsSpecialName);
- Assert.IsTrue (f.IsPublic);
- if (f.Name == "A") {
- Assert.AreEqual (2, f.Location.Line);
- } else if (f.Name == "B") {
- Assert.AreEqual (3, f.Location.Line);
- } else if (f.Name == "C") {
- Assert.AreEqual (4, f.Location.Line);
- } else {
- Assert.Fail ("Unknown field: " + f.Name);
- }
- }
- }
-
- [Test] - public void TestEnums () - {
- DoTestEnums (new McsParser ());
-// DoTestEnums (new DomParser ()); - }
-
- void DoTestStruct (IParser parser)
- {
- ICompilationUnit unit = parser.Parse (null, "a.cs", @"struct TestStruct { }").CompilationUnit;
- Assert.AreEqual (1, unit.Types.Count);
- IType type = unit.Types[0];
- Assert.AreEqual (ClassType.Struct, type.ClassType);
- Assert.AreEqual ("TestStruct", type.Name);
- }
-
- [Test] - public void TestStruct () - {
- DoTestStruct (new McsParser ());
-// DoTestStruct (new DomParser ()); - }
-
- void DoTestInterface (IParser parser)
- {
- ICompilationUnit unit = parser.Parse (null, "a.cs", @"interface TestInterface { }").CompilationUnit;
- Assert.AreEqual (1, unit.Types.Count);
- IType type = unit.Types[0];
- Assert.AreEqual (ClassType.Interface, type.ClassType);
- Assert.AreEqual ("TestInterface", type.Name);
- }
-
- [Test] - public void TestInterface () - {
- DoTestInterface (new McsParser ());
-// DoTestInterface (new DomParser ()); - }
-
- void DoTestDelegate (IParser parser)
- {
- ICompilationUnit unit = parser.Parse (null, "a.cs", @"delegate void TestDelegate (int a, string b);").CompilationUnit;
- Assert.AreEqual (1, unit.Types.Count);
- IType type = unit.Types[0];
- Assert.AreEqual (ClassType.Delegate, type.ClassType);
- Assert.AreEqual ("TestDelegate", type.Name);
- foreach (IMethod method in type.Methods) {
- Assert.AreEqual (DomReturnType.Void.FullName, method.ReturnType.FullName);
- foreach (IParameter parameter in method.Parameters) {
- if (parameter.Name == "a") {
- Assert.AreEqual (DomReturnType.Int32.FullName, parameter.ReturnType.FullName);
- } else if (parameter.Name == "b") {
- Assert.AreEqual (DomReturnType.String.FullName, parameter.ReturnType.FullName);
- } else {
- Assert.Fail ("Unknown parameter: " + parameter.Name);
- }
- }
- }
- }
-
- [Test] - public void TestDelegate () - {
- DoTestDelegate (new McsParser ());
-// DoTestDelegate (new DomParser ()); - }
-
- void DoTestClass (IParser parser)
- {
- ICompilationUnit unit = parser.Parse (null, "a.cs", @"public partial class TestClass<T, S> : MyBaseClass where T : Constraint { }").CompilationUnit;
- Assert.AreEqual (1, unit.Types.Count);
- IType type = unit.Types[0];
- Assert.AreEqual (ClassType.Class, type.ClassType);
- Assert.AreEqual ("TestClass", type.Name);
- Assert.AreEqual ("MyBaseClass", type.BaseType.Name);
- Assert.AreEqual (Modifiers.Partial | Modifiers.Public, type.Modifiers);
- Assert.AreEqual (2, type.TypeParameters.Count);
- Assert.AreEqual ("T", type.TypeParameters[0].Name);
- Assert.AreEqual ("Constraint", type.TypeParameters[0].Constraints[0].Name);
- Assert.AreEqual ("S", type.TypeParameters[1].Name);
- }
-
- [Test] - public void TestClass () - {
- DoTestClass (new McsParser ());
-// DoTestClass (new DomParser ()); - }
-
- void DoTestNamespace (IParser parser)
- {
- ICompilationUnit unit = parser.Parse (null, "a.cs", @"namespace Test1.Test2.Test3 { class A { } }").CompilationUnit;
- Assert.AreEqual (3, unit.Usings.Count);
- Assert.AreEqual ("Test1.Test2.Test3", unit.Usings[0].Namespaces[0]);
- Assert.AreEqual ("Test1.Test2", unit.Usings[1].Namespaces[0]);
- Assert.AreEqual ("Test1", unit.Usings[2].Namespaces[0]);
- Assert.AreEqual (1, unit.Types.Count);
- IType type = unit.Types[0];
- Assert.AreEqual ("Test1.Test2.Test3", type.Namespace);
- }
-
- [Test] - public void TestNamespace () - {
- DoTestNamespace (new McsParser ());
-// DoTestNamespace (new DomParser ()); - } -
- void DoTestAttributes (IParser parser)
- {
- ICompilationUnit unit = parser.Parse (null, "a.cs", @"[Attr1][Attr2(1,true)][Attr3('c',a=1,b=""hi"")] public class TestClass { }").CompilationUnit;
- Assert.AreEqual (1, unit.Types.Count);
- IType type = unit.Types[0];
- Assert.AreEqual (ClassType.Class, type.ClassType);
- Assert.AreEqual ("TestClass", type.Name);
- IEnumerator<IAttribute> e = type.Attributes.GetEnumerator ();
-
- Assert.IsTrue (e.MoveNext ());
- IAttribute att = e.Current;
- Assert.AreEqual ("Attr1", att.Name);
- Assert.AreEqual (0, att.PositionalArguments.Count);
- Assert.AreEqual (0, att.NamedArguments.Count);
-
- Assert.IsTrue (e.MoveNext ());
- att = e.Current;
- Assert.AreEqual ("Attr2", att.Name);
- Assert.AreEqual (2, att.PositionalArguments.Count);
- Assert.AreEqual (0, att.NamedArguments.Count);
- Assert.IsTrue (att.PositionalArguments [0] is CodePrimitiveExpression);
- CodePrimitiveExpression exp = (CodePrimitiveExpression) att.PositionalArguments [0];
- Assert.AreEqual (1, exp.Value);
- exp = (CodePrimitiveExpression) att.PositionalArguments [1];
- Assert.AreEqual (true, exp.Value);
-
- Assert.IsTrue (e.MoveNext ());
- att = e.Current;
- Assert.AreEqual ("Attr3", att.Name);
- Assert.AreEqual (1, att.PositionalArguments.Count);
- Assert.AreEqual (2, att.NamedArguments.Count);
- Assert.IsTrue (att.PositionalArguments [0] is CodePrimitiveExpression);
- exp = (CodePrimitiveExpression) att.PositionalArguments [0];
- Assert.AreEqual ('c', exp.Value);
- exp = (CodePrimitiveExpression) att.NamedArguments ["a"];
- Assert.AreEqual (1, exp.Value);
- exp = (CodePrimitiveExpression) att.NamedArguments ["b"];
- Assert.AreEqual ("hi", exp.Value);
-
- Assert.IsFalse (e.MoveNext ());
- }
-
- [Test()] - public void TestAttributes () - {
- DoTestAttributes (new McsParser ());
-// DoTestAttributes (new DomParser ()); - }
- } -} +//namespace MonoDevelop.CSharpBinding.Tests +//{ +// [TestFixture] +// public class TopLevelTests +// { +// void DoTestUsings (IParser parser) +// { +// ICompilationUnit unit = parser.Parse (null, "a.cs", +//@"using System; +//using NUnit.Framework;").CompilationUnit; +// foreach (IUsing u in unit.Usings) { +// foreach (string ns in u.Namespaces) { +// if (ns == "System") { +// Assert.AreEqual (1, u.Region.End.Line); +// Assert.AreEqual (1, u.Region.Start.Line); +// } else if (ns == "NUnit.Framework") { +// Assert.AreEqual (2, u.Region.End.Line); +// Assert.AreEqual (2, u.Region.Start.Line); +// } else { +// Assert.Fail ("Unknown using: " + ns); +// } +// } +// } +// } +// +// [Test] +// public void TestUsings () +// { +// DoTestUsings (new McsParser ()); +// //DoTestUsings (new DomParser ()); +// } +// +// void DoTestEnums (IParser parser) +// { +// ICompilationUnit unit = parser.Parse (null, "a.cs", +//@"enum TestEnum { +// A, +// B, +// C +//}").CompilationUnit; +// Assert.AreEqual (1, unit.Types.Count); +// IType type = unit.Types[0]; +// Assert.AreEqual (ClassType.Enum, type.ClassType); +// Assert.AreEqual ("TestEnum", type.Name); +// Assert.AreEqual (3, type.FieldCount); +// foreach (IField f in type.Fields) { +// Assert.IsTrue (f.IsConst); +// Assert.IsTrue (f.IsSpecialName); +// Assert.IsTrue (f.IsPublic); +// if (f.Name == "A") { +// Assert.AreEqual (2, f.Location.Line); +// } else if (f.Name == "B") { +// Assert.AreEqual (3, f.Location.Line); +// } else if (f.Name == "C") { +// Assert.AreEqual (4, f.Location.Line); +// } else { +// Assert.Fail ("Unknown field: " + f.Name); +// } +// } +// } +// +// [Test] +// public void TestEnums () +// { +// DoTestEnums (new McsParser ()); +//// DoTestEnums (new DomParser ()); +// } +// +// void DoTestStruct (IParser parser) +// { +// ICompilationUnit unit = parser.Parse (null, "a.cs", @"struct TestStruct { }").CompilationUnit; +// Assert.AreEqual (1, unit.Types.Count); +// IType type = unit.Types[0]; +// Assert.AreEqual (ClassType.Struct, type.ClassType); +// Assert.AreEqual ("TestStruct", type.Name); +// } +// +// [Test] +// public void TestStruct () +// { +// DoTestStruct (new McsParser ()); +//// DoTestStruct (new DomParser ()); +// } +// +// void DoTestInterface (IParser parser) +// { +// ICompilationUnit unit = parser.Parse (null, "a.cs", @"interface TestInterface { }").CompilationUnit; +// Assert.AreEqual (1, unit.Types.Count); +// IType type = unit.Types[0]; +// Assert.AreEqual (ClassType.Interface, type.ClassType); +// Assert.AreEqual ("TestInterface", type.Name); +// } +// +// [Test] +// public void TestInterface () +// { +// DoTestInterface (new McsParser ()); +//// DoTestInterface (new DomParser ()); +// } +// +// void DoTestDelegate (IParser parser) +// { +// ICompilationUnit unit = parser.Parse (null, "a.cs", @"delegate void TestDelegate (int a, string b);").CompilationUnit; +// Assert.AreEqual (1, unit.Types.Count); +// IType type = unit.Types[0]; +// Assert.AreEqual (ClassType.Delegate, type.ClassType); +// Assert.AreEqual ("TestDelegate", type.Name); +// foreach (IMethod method in type.Methods) { +// Assert.AreEqual (DomReturnType.Void.FullName, method.ReturnType.FullName); +// foreach (IParameter parameter in method.Parameters) { +// if (parameter.Name == "a") { +// Assert.AreEqual (DomReturnType.Int32.FullName, parameter.ReturnType.FullName); +// } else if (parameter.Name == "b") { +// Assert.AreEqual (DomReturnType.String.FullName, parameter.ReturnType.FullName); +// } else { +// Assert.Fail ("Unknown parameter: " + parameter.Name); +// } +// } +// } +// } +// +// [Test] +// public void TestDelegate () +// { +// DoTestDelegate (new McsParser ()); +//// DoTestDelegate (new DomParser ()); +// } +// +// void DoTestClass (IParser parser) +// { +// ICompilationUnit unit = parser.Parse (null, "a.cs", @"public partial class TestClass<T, S> : MyBaseClass where T : Constraint { }").CompilationUnit; +// Assert.AreEqual (1, unit.Types.Count); +// IType type = unit.Types[0]; +// Assert.AreEqual (ClassType.Class, type.ClassType); +// Assert.AreEqual ("TestClass", type.Name); +// Assert.AreEqual ("MyBaseClass", type.BaseType.Name); +// Assert.AreEqual (Modifiers.Partial | Modifiers.Public, type.Modifiers); +// Assert.AreEqual (2, type.TypeParameters.Count); +// Assert.AreEqual ("T", type.TypeParameters[0].Name); +// Assert.AreEqual ("Constraint", type.TypeParameters[0].Constraints[0].Name); +// Assert.AreEqual ("S", type.TypeParameters[1].Name); +// } +// +// [Test] +// public void TestClass () +// { +// DoTestClass (new McsParser ()); +//// DoTestClass (new DomParser ()); +// } +// +// void DoTestNamespace (IParser parser) +// { +// ICompilationUnit unit = parser.Parse (null, "a.cs", @"namespace Test1.Test2.Test3 { class A { } }").CompilationUnit; +// Assert.AreEqual (3, unit.Usings.Count); +// Assert.AreEqual ("Test1.Test2.Test3", unit.Usings[0].Namespaces[0]); +// Assert.AreEqual ("Test1.Test2", unit.Usings[1].Namespaces[0]); +// Assert.AreEqual ("Test1", unit.Usings[2].Namespaces[0]); +// Assert.AreEqual (1, unit.Types.Count); +// IType type = unit.Types[0]; +// Assert.AreEqual ("Test1.Test2.Test3", type.Namespace); +// } +// +// [Test] +// public void TestNamespace () +// { +// DoTestNamespace (new McsParser ()); +//// DoTestNamespace (new DomParser ()); +// } +// +// void DoTestAttributes (IParser parser) +// { +// ICompilationUnit unit = parser.Parse (null, "a.cs", @"[Attr1][Attr2(1,true)][Attr3('c',a=1,b=""hi"")] public class TestClass { }").CompilationUnit; +// Assert.AreEqual (1, unit.Types.Count); +// IType type = unit.Types[0]; +// Assert.AreEqual (ClassType.Class, type.ClassType); +// Assert.AreEqual ("TestClass", type.Name); +// IEnumerator<IAttribute> e = type.Attributes.GetEnumerator (); +// +// Assert.IsTrue (e.MoveNext ()); +// IAttribute att = e.Current; +// Assert.AreEqual ("Attr1", att.Name); +// Assert.AreEqual (0, att.PositionalArguments.Count); +// Assert.AreEqual (0, att.NamedArguments.Count); +// +// Assert.IsTrue (e.MoveNext ()); +// att = e.Current; +// Assert.AreEqual ("Attr2", att.Name); +// Assert.AreEqual (2, att.PositionalArguments.Count); +// Assert.AreEqual (0, att.NamedArguments.Count); +// Assert.IsTrue (att.PositionalArguments [0] is CodePrimitiveExpression); +// CodePrimitiveExpression exp = (CodePrimitiveExpression) att.PositionalArguments [0]; +// Assert.AreEqual (1, exp.Value); +// exp = (CodePrimitiveExpression) att.PositionalArguments [1]; +// Assert.AreEqual (true, exp.Value); +// +// Assert.IsTrue (e.MoveNext ()); +// att = e.Current; +// Assert.AreEqual ("Attr3", att.Name); +// Assert.AreEqual (1, att.PositionalArguments.Count); +// Assert.AreEqual (2, att.NamedArguments.Count); +// Assert.IsTrue (att.PositionalArguments [0] is CodePrimitiveExpression); +// exp = (CodePrimitiveExpression) att.PositionalArguments [0]; +// Assert.AreEqual ('c', exp.Value); +// exp = (CodePrimitiveExpression) att.NamedArguments ["a"]; +// Assert.AreEqual (1, exp.Value); +// exp = (CodePrimitiveExpression) att.NamedArguments ["b"]; +// Assert.AreEqual ("hi", exp.Value); +// +// Assert.IsFalse (e.MoveNext ()); +// } +// +// [Test()] +// public void TestAttributes () +// { +// DoTestAttributes (new McsParser ()); +//// DoTestAttributes (new DomParser ()); +// } +// } +//} diff --git a/main/tests/UnitTests/UnitTests.csproj b/main/tests/UnitTests/UnitTests.csproj index 0e947150b5..20d13a572b 100644 --- a/main/tests/UnitTests/UnitTests.csproj +++ b/main/tests/UnitTests/UnitTests.csproj @@ -202,6 +202,18 @@ <Compile Include="Mono.TextEditor.Tests\SegmentTreeTests.cs" /> <Compile Include="Mono.TextEditor.Tests\RedBlackTreeTests.cs" /> <Compile Include="Mono.TextEditor.Tests\HeightTreeTests.cs" /> + <Compile Include="MonoDevelop.CSharpBinding\CodeCompletionBugTests.cs" /> + <Compile Include="MonoDevelop.CSharpBinding\TestWorkbenchWindow.cs" /> + <Compile Include="MonoDevelop.CSharpBinding\TestViewContent.cs" /> + <Compile Include="MonoDevelop.CSharpBinding\ParameterCompletionTests.cs" /> + <Compile Include="MonoDevelop.CSharpBinding\TopLevelTests.cs" /> + <Compile Include="MonoDevelop.CSharpBinding\MemberTests.cs" /> + <Compile Include="MonoDevelop.CSharpBinding\CodeCompletionOperatorTests.cs" /> + <Compile Include="MonoDevelop.CSharpBinding\CodeCompletionCSharp3Tests.cs" /> + <Compile Include="MonoDevelop.CSharpBinding\CodeCompletionAccessibleTests.cs" /> + <Compile Include="MonoDevelop.CSharpBinding\CodeCompletionCSharpTests.cs" /> + <Compile Include="MonoDevelop.CSharpBinding\FindMemberVisitorTests.cs" /> + <Compile Include="MonoDevelop.CSharpBinding\ProjectDomTests.cs" /> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="..\..\md.targets" /> @@ -222,18 +234,6 @@ </ProjectExtensions> <ItemGroup> <None Include="Makefile.am" /> - <None Include="MonoDevelop.CSharpBinding\TopLevelTests.cs" /> - <None Include="MonoDevelop.CSharpBinding\MemberTests.cs" /> - <None Include="MonoDevelop.CSharpBinding\CodeCompletionBugTests.cs" /> - <None Include="MonoDevelop.CSharpBinding\TestViewContent.cs" /> - <None Include="MonoDevelop.CSharpBinding\TestWorkbenchWindow.cs" /> - <None Include="MonoDevelop.CSharpBinding\CodeCompletionOperatorTests.cs" /> - <None Include="MonoDevelop.CSharpBinding\ParameterCompletionTests.cs" /> - <None Include="MonoDevelop.CSharpBinding\CodeCompletionCSharp3Tests.cs" /> - <None Include="MonoDevelop.CSharpBinding\CodeCompletionAccessibleTests.cs" /> - <None Include="MonoDevelop.CSharpBinding\CodeCompletionCSharpTests.cs" /> - <None Include="MonoDevelop.CSharpBinding\FindMemberVisitorTests.cs" /> - <None Include="MonoDevelop.CSharpBinding\ProjectDomTests.cs" /> <None Include="MonoDevelop.Projects\CompletionDatabaseTests.cs" /> <None Include="MonoDevelop.Refactoring\ExtractMethodTests.cs" /> <None Include="MonoDevelop.Refactoring\CreateBackingStoreTests.cs" /> |