2
// CodeCompletionAccessibleTests.cs
5
// Mike KrĆ¼ger <mkrueger@novell.com>
7
// Copyright (C) 2008 Novell, Inc (http://www.novell.com)
9
// Permission is hereby granted, free of charge, to any person obtaining
10
// a copy of this software and associated documentation files (the
11
// "Software"), to deal in the Software without restriction, including
12
// without limitation the rights to use, copy, modify, merge, publish,
13
// distribute, sublicense, and/or sell copies of the Software, and to
14
// permit persons to whom the Software is furnished to do so, subject to
15
// the following conditions:
17
// The above copyright notice and this permission notice shall be
18
// included in all copies or substantial portions of the Software.
20
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30
using NUnit.Framework;
31
using System.Diagnostics;
34
namespace ICSharpCode.NRefactory.CSharp.CodeCompletion
37
public class CodeCompletionAccessibleTests : TestBase
40
static string testClass = @"
43
public class TestClass
46
public int PubProperty { get; set; }
47
public void PubMethod () { }
49
protected int ProtField;
50
protected int ProtProperty { get; set; }
51
protected void ProtMethod () { }
53
internal protected int ProtOrInternalField;
54
internal protected int ProtOrInternalProperty { get; set; }
55
internal protected void ProtOrInternalMethod () { }
57
protected internal int ProtAndInternalField;
58
protected internal int ProtAndInternalProperty { get; set; }
59
protected internal void ProtAndInternalMethod () { }
61
internal int InternalField;
62
internal int InternalProperty { get; set; }
63
internal void InternalMethod () { }
65
private int PrivField;
66
private int PrivProperty { get; set; }
67
private void PrivMethod () { }
69
public static int PubStaticField;
70
public static int PubStaticProperty { get; set; }
71
public static void PubStaticMethod () { }
73
protected static int ProtStaticField;
74
protected static int ProtStaticProperty { get; set; }
75
protected static void ProtStaticMethod () { }
77
private static int PrivStaticField;
78
private static int PrivStaticProperty { get; set; }
79
private static void PrivStaticMethod () { }
82
public void TestDerivedClassGeneralAccess ()
84
CodeCompletionBugTests.CombinedProviderTest(testClass + @"}
86
class Test : TestClass {
92
Assert.IsNotNull (provider.Find ("PubField"), "'PubField' not found.");
93
Assert.IsNotNull (provider.Find ("PubProperty"), "'PubProperty' not found.");
94
Assert.IsNotNull (provider.Find ("PubMethod"), "'PubMethod' not found.");
96
Assert.IsNotNull (provider.Find ("ProtField"), "'ProtField' not found.");
97
Assert.IsNotNull (provider.Find ("ProtProperty"), "'ProtProperty' not found.");
98
Assert.IsNotNull (provider.Find ("ProtMethod"), "'ProtMethod' not found.");
100
Assert.IsNotNull (provider.Find ("ProtOrInternalField"), "'ProtOrInternalField' not found.");
101
Assert.IsNotNull (provider.Find ("ProtOrInternalProperty"), "'ProtOrInternalProperty' not found.");
102
Assert.IsNotNull (provider.Find ("ProtOrInternalMethod"), "'ProtOrInternalMethod' not found.");
104
Assert.IsNotNull (provider.Find ("ProtAndInternalField"), "'ProtAndInternalField' not found.");
105
Assert.IsNotNull (provider.Find ("ProtAndInternalProperty"), "'ProtAndInternalProperty' not found.");
106
Assert.IsNotNull (provider.Find ("ProtAndInternalMethod"), "'ProtAndInternalMethod' not found.");
108
Assert.IsNotNull (provider.Find ("InternalField"), "'InternalField' not found.");
109
Assert.IsNotNull (provider.Find ("InternalProperty"), "'InternalProperty' not found.");
110
Assert.IsNotNull (provider.Find ("InternalMethod"), "'InternalMethod' not found.");
112
Assert.IsNotNull (provider.Find ("PubStaticField"), "'PubStaticField' not found.");
113
Assert.IsNotNull (provider.Find ("PubStaticProperty"), "'PubStaticProperty' not found.");
114
Assert.IsNotNull (provider.Find ("PubStaticMethod"), "'PubStaticMethod' not found.");
116
Assert.IsNotNull (provider.Find ("ProtStaticField"), "'ProtStaticField' not found.");
117
Assert.IsNotNull (provider.Find ("ProtStaticProperty"), "'ProtStaticProperty' not found.");
118
Assert.IsNotNull (provider.Find ("ProtStaticMethod"), "'ProtStaticMethod' not found.");
120
Assert.IsNull (provider.Find ("PrivField"), "'PrivField' found.");
121
Assert.IsNull (provider.Find ("PrivProperty"), "'PrivProperty' found.");
122
Assert.IsNull (provider.Find ("PrivMethod"), "'PrivMethod' found.");
124
Assert.IsNull (provider.Find ("PrivStaticField"), "'PrivStaticField' found.");
125
Assert.IsNull (provider.Find ("PrivStaticProperty"), "'PrivStaticProperty' found.");
126
Assert.IsNull (provider.Find ("PrivStaticMethod"), "'PrivStaticMethod' found.");
131
public void TestDerivedClassMemberReferenceAccess ()
133
CodeCompletionBugTests.CombinedProviderTest(testClass + @"}
135
class Test : TestClass {
141
Assert.IsNotNull (provider.Find ("PubField"), "'PubField' not found.");
142
Assert.IsNotNull (provider.Find ("PubProperty"), "'PubProperty' not found.");
143
Assert.IsNotNull (provider.Find ("PubMethod"), "'PubMethod' not found.");
145
Assert.IsNotNull (provider.Find ("ProtField"), "'ProtField' not found.");
146
Assert.IsNotNull (provider.Find ("ProtProperty"), "'ProtProperty' not found.");
147
Assert.IsNotNull (provider.Find ("ProtMethod"), "'ProtMethod' not found.");
149
Assert.IsNotNull (provider.Find ("ProtOrInternalField"), "'ProtOrInternalField' not found.");
150
Assert.IsNotNull (provider.Find ("ProtOrInternalProperty"), "'ProtOrInternalProperty' not found.");
151
Assert.IsNotNull (provider.Find ("ProtOrInternalMethod"), "'ProtOrInternalMethod' not found.");
153
Assert.IsNotNull (provider.Find ("ProtAndInternalField"), "'ProtAndInternalField' not found.");
154
Assert.IsNotNull (provider.Find ("ProtAndInternalProperty"), "'ProtAndInternalProperty' not found.");
155
Assert.IsNotNull (provider.Find ("ProtAndInternalMethod"), "'ProtAndInternalMethod' not found.");
157
Assert.IsNotNull (provider.Find ("InternalField"), "'InternalField' not found.");
158
Assert.IsNotNull (provider.Find ("InternalProperty"), "'InternalProperty' not found.");
159
Assert.IsNotNull (provider.Find ("InternalMethod"), "'InternalMethod' not found.");
161
// Assert.IsNotNull (provider.Find ("PubStaticField"), "'PubStaticField' not found.");
162
// Assert.IsNotNull (provider.Find ("PubStaticProperty"), "'PubStaticProperty' not found.");
163
// Assert.IsNotNull (provider.Find ("PubStaticMethod"), "'PubStaticMethod' not found.");
165
// Assert.IsNotNull (provider.Find ("ProtStaticField"), "'ProtStaticField' not found.");
166
// Assert.IsNotNull (provider.Find ("ProtStaticProperty"), "'ProtStaticProperty' not found.");
167
// Assert.IsNotNull (provider.Find ("ProtStaticMethod"), "'ProtStaticMethod' not found.");
169
Assert.IsNull (provider.Find ("PrivField"), "'PrivField' found.");
170
Assert.IsNull (provider.Find ("PrivProperty"), "'PrivProperty' found.");
171
Assert.IsNull (provider.Find ("PrivMethod"), "'PrivMethod' found.");
173
Assert.IsNull (provider.Find ("PrivStaticField"), "'PrivStaticField' found.");
174
Assert.IsNull (provider.Find ("PrivStaticProperty"), "'PrivStaticProperty' found.");
175
Assert.IsNull (provider.Find ("PrivStaticMethod"), "'PrivStaticMethod' found.");
182
public void TestNonStaticClassAccess ()
184
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (testClass +
191
Assert.IsNotNull (provider, "provider == null");
193
CodeCompletionBugTests.CheckProtectedObjectMembers (provider); // 5 from System.Object
194
Assert.IsNotNull (provider.Find ("PubField"));
195
Assert.IsNotNull (provider.Find ("PubProperty"));
196
Assert.IsNotNull (provider.Find ("PubMethod"));
198
Assert.IsNotNull (provider.Find ("ProtField"));
199
Assert.IsNotNull (provider.Find ("ProtProperty"));
200
Assert.IsNotNull (provider.Find ("ProtMethod"));
202
Assert.IsNotNull (provider.Find ("PrivField"));
203
Assert.IsNotNull (provider.Find ("PrivProperty"));
204
Assert.IsNotNull (provider.Find ("PrivMethod"));
208
public void TestInternalAccess ()
210
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (testClass +
217
Assert.IsNotNull (provider, "provider == null");
219
Assert.IsNotNull (provider.Find ("InternalField"));
220
Assert.IsNotNull (provider.Find ("InternalProperty"));
221
Assert.IsNotNull (provider.Find ("InternalMethod"));
223
Assert.IsNotNull (provider.Find ("ProtAndInternalField"));
224
Assert.IsNotNull (provider.Find ("ProtAndInternalProperty"));
225
Assert.IsNotNull (provider.Find ("ProtAndInternalMethod"));
227
Assert.IsNotNull (provider.Find ("ProtOrInternalField"));
228
Assert.IsNotNull (provider.Find ("ProtOrInternalProperty"));
229
Assert.IsNotNull (provider.Find ("ProtOrInternalMethod"));
233
public void TestInternalAccessOutside ()
235
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (testClass +
245
Assert.IsNotNull (provider, "provider == null");
247
Assert.IsNotNull (provider.Find ("InternalField"), "InternalField == null");
248
Assert.IsNotNull (provider.Find ("InternalProperty"), "InternalProperty == null");
249
Assert.IsNotNull (provider.Find ("InternalMethod"), "InternalMethod == null");
251
Assert.IsNotNull (provider.Find ("ProtOrInternalField"), "ProtOrInternalField == null");
252
Assert.IsNotNull (provider.Find ("ProtOrInternalProperty"), "ProtOrInternalProperty == null");
253
Assert.IsNotNull (provider.Find ("ProtOrInternalMethod"), "ProtOrInternalMethod == null");
257
public void TestStaticClassAccess ()
259
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (testClass +
266
Assert.IsNotNull (provider, "provider == null");
268
CodeCompletionBugTests.CheckStaticObjectMembers (provider); // 2 from System.Object
269
Assert.IsNotNull (provider.Find ("PubStaticField"));
270
Assert.IsNotNull (provider.Find ("PubStaticProperty"));
271
Assert.IsNotNull (provider.Find ("PubStaticMethod"));
273
Assert.IsNotNull (provider.Find ("ProtStaticField"));
274
Assert.IsNotNull (provider.Find ("ProtStaticProperty"));
275
Assert.IsNotNull (provider.Find ("ProtStaticMethod"));
277
Assert.IsNotNull (provider.Find ("PrivStaticField"));
278
Assert.IsNotNull (provider.Find ("PrivStaticProperty"));
279
Assert.IsNotNull (provider.Find ("PrivStaticMethod"));
283
public void TestExternalNonStaticClassAccess ()
285
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (testClass +
294
Assert.IsNotNull (provider, "provider == null");
296
CodeCompletionBugTests.CheckObjectMembers (provider);
297
Assert.IsNotNull (provider.Find ("PubField"));
298
Assert.IsNotNull (provider.Find ("PubProperty"));
299
Assert.IsNotNull (provider.Find ("PubMethod"));
303
public void TestExternalStaticClassAccess ()
305
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (testClass +
313
Assert.IsNotNull (provider, "provider == null");
315
CodeCompletionBugTests.CheckStaticObjectMembers (provider); // 2 members
316
Assert.IsNotNull (provider.Find ("PubStaticField"));
317
Assert.IsNotNull (provider.Find ("PubStaticProperty"));
318
Assert.IsNotNull (provider.Find ("PubStaticMethod"));
322
public void TestExternalNonStaticSubclassAccess ()
324
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (testClass +
326
class AClass : TestClass {
332
Assert.IsNotNull (provider, "provider == null");
334
CodeCompletionBugTests.CheckProtectedObjectMembers (provider);
335
Assert.IsNotNull (provider.Find ("PubField"));
336
Assert.IsNotNull (provider.Find ("PubProperty"));
337
Assert.IsNotNull (provider.Find ("PubMethod"));
338
Assert.IsNotNull (provider.Find ("ProtField"));
339
Assert.IsNotNull (provider.Find ("ProtProperty"));
340
Assert.IsNotNull (provider.Find ("ProtMethod"));
344
public void TestThisProtectedMemberAccess ()
346
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
350
protected void Test ()
362
Assert.IsNotNull (provider, "provider == null");
363
Assert.IsNotNull (provider.Find ("Test"), "method 'Test' not found.");
367
public void TestBasePrivateMemberAccess ()
369
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
373
class Test : TestClass
380
Assert.IsNotNull (provider, "provider == null");
381
Assert.IsNull (provider.Find ("PrivField"), "field 'PrivField' found, but shouldn't.");
382
Assert.IsNull (provider.Find ("PrivProperty"), "property 'PrivProperty' found, but shouldn't.");
383
Assert.IsNull (provider.Find ("PrivMethod"), "method 'PrivMethod' found, but shouldn't.");
387
public void TestBaseProtectedMemberAccess ()
389
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
393
protected void Test ()
405
Assert.IsNotNull (provider, "provider == null");
406
Assert.IsNotNull (provider.Find ("Test"), "method 'Test' not found.");
409
public void TestBasePublicMemberAccess ()
411
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
413
class Test : TestClass
420
Assert.IsNotNull (provider, "provider == null");
421
CodeCompletionBugTests.CheckObjectMembers (provider);
422
Assert.IsNotNull (provider.Find ("PubField"), "field 'PubField' not found.");
423
Assert.IsNotNull (provider.Find ("PubProperty"), "property 'PubProperty' not found.");
424
Assert.IsNotNull (provider.Find ("PubMethod"), "method 'PubMethod' not found.");
428
public void TestProtectedMemberAccess2 ()
430
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
434
protected void Test ()
446
Assert.IsNotNull (provider, "provider == null");
447
Assert.IsNull (provider.Find ("Test"), "method 'Test' found, but shouldn't.");
451
public void TestGenericParameter ()
453
CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (
460
Assert.IsNotNull (provider, "provider == null");
461
Assert.IsNotNull (provider.Find ("T"), "generic parameter 'T' not found");
465
public void TestUnclosedMember ()
467
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
479
Assert.IsNotNull (provider, "provider == null");
480
Assert.IsNotNull (provider.Find ("C"), "class 'C' not found");
485
public void TestUnclosedMember2 ()
487
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
490
namespace ConsoleTest
494
public static void Main (string[] args)
510
Assert.IsNotNull (provider, "provider == null");
511
Assert.IsNotNull (provider.Find ("MainClass"), "class 'MainClass' not found");
515
public void TestGenericParameterB ()
517
CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (
521
public void Bar<TValue> ()
527
Assert.IsNotNull (provider, "provider == null");
528
Assert.IsNotNull (provider.Find ("T"), "generic parameter 'T' not found");
529
Assert.IsNotNull (provider.Find ("TValue"), "generic parameter 'TValue' found");
533
public void TestGenericParameterC ()
535
CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (
539
public static void Bar<TValue> ()
545
Assert.IsNotNull (provider, "provider == null");
546
Assert.IsNotNull (provider.Find ("T"), "generic parameter 'T' not found");
547
Assert.IsNotNull (provider.Find ("TValue"), "generic parameter 'TValue' not found");
551
public void TestInheritedInnerClasses ()
553
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
557
public void MethodB ()
564
public override void MethodA (B something)
569
Assert.IsNotNull (provider, "provider == null");
570
Assert.IsNotNull (provider.Find ("MethodB"), "method 'MethodB' not found");
574
public void TestNamespaceAccess ()
576
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
593
Assert.IsNotNull (provider, "provider == null");
594
Assert.IsNotNull (provider.Find ("B"), "class 'B' not found");
598
public void TestNamespaceAccess2 ()
600
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
618
// either provider == null, or B not found
619
if (provider != null)
620
Assert.IsNull (provider.Find ("B"), "class 'B' found, but shouldn't");
625
public void TestNamespaceAccess3 ()
627
CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (
629
namespace SomeTest.TestNS {
639
public class Program2
648
Assert.IsNotNull (provider, "provider == null");
649
Assert.IsNull (provider.Find ("TestNS"), "namespace 'TestNS' found, but shouldn't");
653
public void TestNamespaceAccess4 ()
655
CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (
657
namespace SomeTest.TestNS {
666
public class Program2
675
Assert.IsNotNull (provider, "provider == null");
676
Assert.IsNotNull (provider.Find ("TestNS"), "namespace 'TestNS' not found");
680
public void TestHideClassesWithPrivateConstructor ()
682
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
704
Assert.IsNotNull (provider, "provider == null");
705
Assert.IsNotNull (provider.Find ("A"), "class 'A' not found");
706
Assert.IsNull (provider.Find ("TestClass"), "class 'TestClass' found, but shouldn't.");
710
public void TestAttributePropertyAccess ()
712
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
714
public class TestAttribute : System.Attribute
716
public int MyIntProperty {
721
public string MyStringProperty {
733
Assert.IsNotNull (provider, "provider == null");
734
Assert.IsNotNull (provider.Find ("MyIntProperty"), "property 'MyIntProperty' not found");
735
Assert.IsNotNull (provider.Find ("MyStringProperty"), "property 'MyStringProperty' not found");
739
public void TestInnerClassEnumAccess ()
741
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
743
public class TestInnerEnum
745
enum InnerEnum { A, B, C }
747
public class InnerClass
749
void TestMethod (InnerEnum e)
755
Assert.IsNotNull (provider, "provider == null");
756
Assert.IsNotNull (provider.Find ("A"), "field 'A' not found");
757
Assert.IsNotNull (provider.Find ("B"), "field 'B' not found");
758
Assert.IsNotNull (provider.Find ("C"), "field 'C' not found");
762
public void TestInnerClassPrivateOuterMembersAccess ()
764
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
766
public class TestClass
772
public class InnerClass
776
TestClass tc = new TestClass ();
781
Assert.IsNotNull (provider, "provider == null");
782
Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found");
786
public void TestExplicitGenericMethodParameter ()
788
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
790
public class TestClass
792
public static T TestMethod<T> ()
800
public void TestMethod ()
802
$TestClass.TestMethod<Test> ().$
806
Assert.IsNotNull (provider, "provider == null");
807
Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found");
811
public void TestImplicitGenericMethodParameter ()
813
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
815
public class TestClass
817
public static T TestMethod<T> (T t)
825
public void TestMethod ()
827
$TestClass.TestMethod (this).$
831
Assert.IsNotNull (provider, "provider == null");
832
Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found");
836
public void TestImplicitGenericMethodParameterComplex ()
838
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
842
class SomeTemplate<T>
844
public T Val { get; set; }
845
public SomeTemplate (T val)
853
public T GetVal<T> (SomeTemplate<T> t)
858
public void TestMethod ()
860
SomeTemplate<Test> c = SomeTemplate<Test> (this);
866
Assert.IsNotNull (provider, "provider == null");
867
Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found");
871
public void TestImplicitGenericArrayMethodParameter ()
873
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
875
public class TestClass
877
public static T[] Test<T> ()
885
public void TestMethod ()
887
var v = TestClass.Test<Test>();
892
Assert.IsNotNull (provider, "provider == null");
893
Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found");
897
public void TestExplicitResolving ()
899
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
901
interface IMyInterface {
902
object this [object i] { get; }
905
class MyClass<S, T> : IMyInterface
907
object IMyInterface.this[object i] {
924
MyClass<TestClass, string> myClass = new MyClass<TestClass, string> ();
929
Assert.IsNotNull (provider, "provider == null");
930
Assert.IsNotNull (provider.Find ("TestMethod"), "method 'TestMethod' not found");
934
public void TestAlias ()
937
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
943
public void MyMethod ()
951
using GG = A.MyClass;
953
public abstract class I
955
protected virtual GG Foo ()
972
Assert.IsNotNull (provider, "provider == null");
973
Assert.IsNotNull (provider.Find ("MyMethod"), "method 'MyMethod' not found");
977
public void TestEnumInnerClass ()
979
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
982
namespace CaptainHook.Mail
984
public class TestClass
992
InQuotedMacroArgument,
1004
Assert.IsNotNull (provider, "provider == null");
1005
Assert.IsNull (provider.Find ("CaptainHook.Mail.TestClass.ParsingState"), "class 'CaptainHook.Mail.TestClass.ParsingState' found!");
1006
Assert.IsNull (provider.Find ("TestClass.ParsingState"), "class 'TestClass.ParsingState' found!");
1007
Assert.IsNotNull (provider.Find ("ParsingState"), "class 'ParsingState' not found");
1011
public void TestInheritableTypeContext ()
1013
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
1017
public class Inner {}
1018
public static void Foo () {}
1021
$class Test2 : Test.$
1023
Assert.IsNotNull (provider, "provider == null");
1024
Assert.IsNotNull (provider.Find ("Inner"), "class 'Inner' not found.");
1025
Assert.IsNull (provider.Find ("Foo"), "method 'Foo' found.");
1029
public void TestInheritableTypeContextCase2 ()
1031
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
1036
public class Inner {}
1037
public static void Foo () {}
1040
class Test2 $: Test.$
1045
Assert.IsNotNull (provider, "provider == null");
1046
Assert.IsNotNull (provider.Find ("Inner"), "class 'Inner' not found.");
1047
Assert.IsNull (provider.Find ("Foo"), "method 'Foo' found.");
1052
public void TestInheritableTypeWhereContext ()
1054
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
1058
public class Inner {}
1059
public static void Foo () {}
1062
$class Test2<T> where T : Test.$
1064
Assert.IsNotNull (provider, "provider == null");
1065
Assert.IsNotNull (provider.Find ("Inner"), "class 'Inner' not found.");
1066
Assert.IsNull (provider.Find ("Foo"), "method 'Foo' found.");
1070
public void TestEnumAssignment ()
1072
CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (
1074
public enum TestEnum { A, B, C}
1083
Assert.IsNotNull (provider, "provider not found.");
1084
Assert.IsNotNull (provider.Find ("TestEnum"), "enum 'TestEnum' not found.");
1085
Assert.IsNotNull (provider.Find ("TestEnum.A"), "enum 'TestEnum.A' not found.");
1086
Assert.IsNotNull (provider.Find ("TestEnum.B"), "enum 'TestEnum.B' not found.");
1087
Assert.IsNotNull (provider.Find ("TestEnum.C"), "enum 'TestEnum.C' not found.");
1091
public void TestEnumAssignmentCase2 ()
1093
CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (
1095
public enum TestEnum { A, B, C}
1105
Assert.IsNotNull (provider, "provider not found.");
1106
Assert.IsNotNull (provider.Find ("TestEnum"), "enum 'TestEnum' not found.");
1107
Assert.IsNotNull (provider.Find ("TestEnum.A"), "enum 'TestEnum.A' not found.");
1108
Assert.IsNotNull (provider.Find ("TestEnum.B"), "enum 'TestEnum.B' not found.");
1109
Assert.IsNotNull (provider.Find ("TestEnum.C"), "enum 'TestEnum.C' not found.");
1113
public void TestEnumAsParameter ()
1115
CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (
1117
public enum TestEnum { A, B, C}
1121
void Bar (TestEnum test) {}
1127
Assert.IsNotNull (provider, "provider not found.");
1128
Assert.IsNotNull (provider.Find ("TestEnum"), "enum 'TestEnum' not found.");
1129
Assert.IsNotNull (provider.Find ("TestEnum.A"), "enum 'TestEnum.A' not found.");
1130
Assert.IsNotNull (provider.Find ("TestEnum.B"), "enum 'TestEnum.B' not found.");
1131
Assert.IsNotNull (provider.Find ("TestEnum.C"), "enum 'TestEnum.C' not found.");
1135
public void TestEnumInExtensionMethod()
1137
var provider = CodeCompletionBugTests.CreateCtrlSpaceProvider(@"
1138
public enum TestEnum { A, B, C}
1139
static class Ext { public static void Foo(this object o, TestEnum str) {} }
1142
public static void Main (string[] args)
1147
Assert.IsNotNull (provider.Find ("TestEnum"), "enum 'TestEnum' not found.");
1148
Assert.IsNotNull (provider.Find ("TestEnum.A"), "enum 'TestEnum.A' not found.");
1149
Assert.IsNotNull (provider.Find ("TestEnum.B"), "enum 'TestEnum.B' not found.");
1150
Assert.IsNotNull (provider.Find ("TestEnum.C"), "enum 'TestEnum.C' not found.");
1155
public void TestEnumInExtensionMethodStaticInvocation()
1157
var provider = CodeCompletionBugTests.CreateCtrlSpaceProvider(@"
1158
public enum TestEnum { A, B, C}
1159
static class Ext { public static void Foo(this object o, TestEnum str) {} }
1162
public static void Main (string[] args)
1167
Assert.IsNotNull (provider.Find ("TestEnum"), "enum 'TestEnum' not found.");
1168
Assert.IsNotNull (provider.Find ("TestEnum.A"), "enum 'TestEnum.A' not found.");
1169
Assert.IsNotNull (provider.Find ("TestEnum.B"), "enum 'TestEnum.B' not found.");
1170
Assert.IsNotNull (provider.Find ("TestEnum.C"), "enum 'TestEnum.C' not found.");
1175
public void TestEnumAsParameterCase2 ()
1177
CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (
1179
public enum TestEnum { A, B, C}
1183
void Bar (int a, TestEnum test) {}
1189
Assert.IsNotNull (provider, "provider not found.");
1190
Assert.IsNotNull (provider.Find ("TestEnum"), "enum 'TestEnum' not found.");
1191
Assert.IsNotNull (provider.Find ("TestEnum.A"), "enum 'TestEnum.A' not found.");
1192
Assert.IsNotNull (provider.Find ("TestEnum.B"), "enum 'TestEnum.B' not found.");
1193
Assert.IsNotNull (provider.Find ("TestEnum.C"), "enum 'TestEnum.C' not found.");
1197
public void TestInnerEnums ()
1199
CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (
1201
public class InnerEnumTest
1203
public enum TestEnum { A, B, C}
1204
public void Bar (TestEnum test) {}
1215
Assert.IsNotNull (provider, "provider not found.");
1216
Assert.IsNotNull (provider.Find ("InnerEnumTest.TestEnum"), "enum 'InnerEnumTest.TestEnum' not found.");
1217
Assert.IsNotNull (provider.Find ("InnerEnumTest.TestEnum.A"), "enum 'InnerEnumTest.TestEnum.A' not found.");
1218
Assert.IsNotNull (provider.Find ("InnerEnumTest.TestEnum.B"), "enum 'InnerEnumTest.TestEnum.B' not found.");
1219
Assert.IsNotNull (provider.Find ("InnerEnumTest.TestEnum.C"), "enum 'InnerEnumTest.TestEnum.C' not found.");
1223
public void TestEnumInBinaryOperatorExpression ()
1225
CodeCompletionBugTests.CombinedProviderTest (
1228
public enum TestEnum { A, B, C}
1234
$TestEnum test = TestEnum.A | T$
1237
Assert.IsNotNull (provider.Find ("TestEnum"), "enum 'TestEnum' not found.");
1238
Assert.IsNotNull (provider.Find ("TestEnum.A"), "enum 'TestEnum.A' not found.");
1239
Assert.IsNotNull (provider.Find ("TestEnum.B"), "enum 'TestEnum.B' not found.");
1240
Assert.IsNotNull (provider.Find ("TestEnum.C"), "enum 'TestEnum.C' not found.");
1245
public void TestEnumComparison ()
1247
var provider = CodeCompletionBugTests.CreateProvider(
1249
public enum TestEnum { A, B, C}
1253
public static TestEnum A (int i, int j, string s) {}
1257
$if (A(1,2,""foo"") == $
1260
Assert.IsFalse(provider.AutoCompleteEmptyMatch);
1261
Assert.IsNotNull (provider.Find ("TestEnum"), "enum 'TestEnum' not found.");
1262
Assert.IsNotNull (provider.Find ("TestEnum.A"), "enum 'TestEnum.A' not found.");
1263
Assert.IsNotNull (provider.Find ("TestEnum.B"), "enum 'TestEnum.B' not found.");
1264
Assert.IsNotNull (provider.Find ("TestEnum.C"), "enum 'TestEnum.C' not found.");
1269
public void TestEnumComparisonCase2 ()
1271
var provider = CodeCompletionBugTests.CreateProvider(
1273
public enum TestEnum { A, B, C}
1277
public static TestEnum A (int i, int j, string s) {}
1281
$if (A(1,2,""foo"") != $
1284
Assert.IsFalse(provider.AutoCompleteEmptyMatch);
1285
Assert.IsNotNull (provider.Find ("TestEnum"), "enum 'TestEnum' not found.");
1286
Assert.IsNotNull (provider.Find ("TestEnum.A"), "enum 'TestEnum.A' not found.");
1287
Assert.IsNotNull (provider.Find ("TestEnum.B"), "enum 'TestEnum.B' not found.");
1288
Assert.IsNotNull (provider.Find ("TestEnum.C"), "enum 'TestEnum.C' not found.");
1292
public void TestPrimimitiveTypeCompletionString ()
1294
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (
1299
public static void Foo ()
1301
Console.WriteLine ($"""".$);
1305
Assert.IsNotNull (provider, "provider == null");
1306
Assert.IsNotNull (provider.Find ("ToString"), "method 'ToString' not found.");
1311
public void TestUsingContext ()
1313
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (@"$using System.$");
1314
Assert.IsNotNull (provider, "provider == null");
1315
Assert.IsNotNull (provider.Find ("IO"), "namespace 'IO' not found.");
1319
public void TestNamedArgumentContext1 ()
1321
CompletionDataList provider = CodeCompletionBugTests.CreateProvider (@"
1325
public static void Query(MySqlConnection conn, string database, string table)
1327
conn.Query(string.Format(""SELECT * FROM {0}"", table))
1328
.On(row: delegate (Row data) {
1333
Assert.IsNotNull (provider, "provider == null");
1334
Assert.IsNotNull (provider.Find ("WriteLine"), "method 'WriteLine' not found.");
1337
public void TestAttributeContextClass ()
1339
var provider = CodeCompletionBugTests.CreateProvider (@"
1345
Assert.IsNotNull (provider, "provider == null");
1346
Assert.IsNotNull (provider.Find ("Obsolete"), "attribute 'Obsolete' not found.");
1347
Assert.IsNotNull (provider.Find ("Serializable"), "attribute 'Serializable' not found.");
1351
public void TestAttributeContextInNamespace ()
1353
var provider = CodeCompletionBugTests.CreateProvider (@"
1362
Assert.IsNotNull (provider, "provider == null");
1363
Assert.IsNotNull (provider.Find ("Obsolete"), "attribute 'Obsolete' not found.");
1364
Assert.IsNotNull (provider.Find ("Serializable"), "attribute 'Serializable' not found.");
1368
public void TestAttributeContextMember ()
1370
var provider = CodeCompletionBugTests.CreateProvider (@"
1376
Assert.IsNotNull (provider, "provider == null");
1377
Assert.IsNotNull (provider.Find ("Obsolete"), "attribute 'Obsolete' not found.");
1378
Assert.IsNotNull (provider.Find ("Serializable"), "attribute 'Serializable' not found.");
1382
public void TestAttributeInNonAttributeContext ()
1384
var provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (@"
1390
Assert.IsNotNull (provider, "provider == null");
1391
Assert.IsNotNull (provider.Find ("ObsoleteAttribute"), "attribute 'ObsoleteAttribute' not found.");
1394
// 'from' in comment activates linq context
1396
public void TestBreakingComment ()
1398
var provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (@"
1404
Assert.IsNotNull (provider, "provider == null");
1405
Assert.IsNotNull (provider.Find ("Test"), "class 'Test' not found.");
1409
public void TestAttributeContextParameterCompletion ()
1411
var provider = CodeCompletionBugTests.CreateProvider (@"$[Obsolete(System.$");
1412
Assert.IsNotNull (provider, "provider == null");
1413
Assert.IsNotNull (provider.Find ("Console"), "'Console' not found.");
1418
/// Bug 3320 - Constants accessed by class name do not show in completion list
1421
public void TestBug3320 ()
1423
CodeCompletionBugTests.CombinedProviderTest (@"
1426
public const int Bar = 5;
1428
public void DoStuff()
1433
Assert.IsNotNull (provider.Find ("Bar"), "'Bar' not found.");
1438
public void TestImplicitShadowing ()
1440
CodeCompletionBugTests.CombinedProviderTest (@"
1443
namespace ConsoleApplication2
1457
static void Main (string[] args)
1465
foreach (var data in provider.Data)
1466
if (data.DisplayText == "Foo")
1467
count += data.HasOverloads ? data.OverloadedData.Count () : 1;
1468
Assert.AreEqual (1, count);
1473
public void TestOverrideFiltering ()
1475
CodeCompletionBugTests.CombinedProviderTest (@"
1478
namespace ConsoleApplication2
1482
public virtual int Foo { set {} }
1487
public override int Foo {
1496
static void Main (string[] args)
1505
foreach (var data in provider.Data)
1506
if (data.DisplayText == "Foo")
1507
count += data.HasOverloads ? data.OverloadedData.Count () : 1;
1508
Assert.AreEqual (1, count);
1514
/// Bug 5648 - Types are displayed even when cannot be used
1517
public void TestBug5648 ()
1519
CodeCompletionBugTests.CombinedProviderTest (@"
1527
Assert.IsNotNull (provider.Find ("enum"), "'enum' not found.");
1528
Assert.IsNotNull (provider.Find ("namespace"), "'namespace' not found.");
1529
Assert.IsNotNull (provider.Find ("public"), "'public' not found.");
1530
Assert.IsNull (provider.Find ("CharEnumerator"), "'CharEnumerator' found.");
1531
Assert.IsNull (provider.Find ("Console"), "'Console' found.");
1536
public void CheckInstanceMembersAreHiddenInStaticMethod ()
1538
CodeCompletionBugTests.CombinedProviderTest (@"
1544
int Foo { get { return foo; } }
1545
void TestMethod () {}
1547
public static void Main (string[] args)
1553
Assert.IsNotNull (provider.Find ("Main"), "'Main' not found.");
1554
Assert.IsNotNull (provider.Find ("Test"), "'Test' not found.");
1555
Assert.IsNull (provider.Find ("foo"), "'foo' found.");
1556
Assert.IsNull (provider.Find ("Foo"), "'Foo' found.");
1557
Assert.IsNull (provider.Find ("TestMethod"), "'TestMethod' found.");
1562
public void TestVariableHiding ()
1564
CodeCompletionBugTests.CombinedProviderTest (@"
1571
public static void Main (int test)
1577
Assert.AreEqual (1, provider.Data.Count (p => p.DisplayText == "test"));
1582
public void TestOverloadCount ()
1584
CodeCompletionBugTests.CombinedProviderTest (@"
1589
static void Foo () {}
1590
static void Foo (int i) {}
1591
static void Foo (int i, string s) {}
1593
public static void Main (int test)
1599
Assert.AreEqual (1, provider.Data.Count (p => p.DisplayText == "Foo"));
1600
var data = provider.Find ("Foo");
1601
Assert.AreEqual (3, data.OverloadedData.Count ());
b'\\ No newline at end of file'