Skip to content

Commit fe2b8ef

Browse files
Merge pull request #39 from Abc-Arbitrage/fix/38
2 parents d2f7858 + 82cdd96 commit fe2b8ef

9 files changed

+69
-76
lines changed

Abc.MoqComplete/Abc.MoqComplete.Tests/ContextAction/Services/ParameterProviderTests.cs

Lines changed: 0 additions & 42 deletions
This file was deleted.
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using NUnit.Framework;
2+
using System;
3+
using Moq;
4+
5+
namespace ConsoleApp1.Tests
6+
{
7+
public class Test1(ITest test, ITest2 test2)
8+
{
9+
10+
public interface ITest
11+
{
12+
void Coco(ITest test, ITest test2, string test3);
13+
}
14+
public interface ITest2
15+
{
16+
}
17+
}
18+
19+
[TestFixture]
20+
public class TestClass
21+
{
22+
[Test]
23+
public void METHOD()
24+
{
25+
var t = new Test1({ caret });
26+
}
27+
}
28+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
using NUnit.Framework;
2+
using System;
3+
using Moq;
4+
5+
namespace ConsoleApp1.Tests
6+
{
7+
public class Test1(ITest test, ITest2 test2)
8+
{
9+
10+
public interface ITest
11+
{
12+
void Coco(ITest test, ITest test2, string test3);
13+
}
14+
public interface ITest2
15+
{
16+
}
17+
}
18+
19+
[TestFixture]
20+
public class TestClass
21+
{
22+
private Mock<ITest> myTest;
23+
private Mock<ITest2> myTest2;
24+
25+
[Test]
26+
public void METHOD()
27+
{
28+
myTest = new Mock<ITest>();
29+
myTest2 = new Mock<ITest2>();
30+
var t = new Test1(myTest.Object, myTest2.Object{caret});
31+
}
32+
}
33+
}

Abc.MoqComplete/Abc.MoqComplete/ContextActions/FillWithMock/FillParamWithMockContextAction.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ public override bool IsAvailable(IUserDataHolder cache)
111111
protected override Action<ITextControl> ExecutePsiTransaction(ISolution solution, IProgressIndicator progress)
112112
{
113113
var argumentList = _selectedElement.ArgumentList;
114-
var parameters = _csharpMemberProvider.GetConstructorParameters(_constructor.ToString()).ToArray();
114+
var parameters = _csharpMemberProvider.GetConstructorParameters(_constructor).ToArray();
115115
var mockFieldsByType = _csharpMemberProvider.GetClassFields(_classBody, _selectedElement.Language);
116116
var shortName = _constructor.Parameters[_parameterNumber].ShortName;
117117
var currentParam = parameters[_parameterNumber];

Abc.MoqComplete/Abc.MoqComplete/ContextActions/FillWithMock/FillParamWithMockLocalVariableContextAction.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ protected override Action<ITextControl> ExecutePsiTransaction(ISolution solution
4949
var @class = (IClass)selectedElement.TypeReference?.Resolve().DeclaredElement;
5050
var parameterCount = selectedElement.ArgumentList?.Arguments.Count(x => x.Kind != ParameterKind.UNKNOWN);
5151
var constructor = @class.Constructors.ToArray().FirstOrDefault(x => !x.IsParameterless && x.Parameters.Count > parameterCount);
52-
var parameters = csharpMemberProvider.GetConstructorParameters(constructor.ToString()).ToArray();
52+
var parameters = csharpMemberProvider.GetConstructorParameters(constructor).ToArray();
5353
var parameterNumber = csharpMemberProvider.GetCurrentParameterNumber(selectedElement, _dataProvider);
5454
var shortName = constructor.Parameters[parameterNumber].ShortName;
5555
var currentParam = parameters[parameterNumber];

Abc.MoqComplete/Abc.MoqComplete/ContextActions/FillWithMock/FillWithMockFieldsContextAction.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public override bool IsAvailable(IUserDataHolder cache)
5858
&& x.Parameters.All(_csharpMemberProvider.IsAbstractOrInterface));
5959
if (_constructor == null)
6060
return false;
61-
61+
6262
var isAvailable = testProjectProvider.IsTestProject(_dataProvider.PsiModule) && _selectedElement != null && _selectedElement.Arguments.Count == 0;
6363
if (isAvailable)
6464
cache.PutKey(AnchorKey.FillWithMockContextActionKey);
@@ -75,7 +75,7 @@ protected override Action<ITextControl> ExecutePsiTransaction(ISolution solution
7575
if (classDeclaration == null || block == null)
7676
return null;
7777

78-
var parameters = _csharpMemberProvider.GetConstructorParameters(_constructor.ToString()).ToArray();
78+
var parameters = _csharpMemberProvider.GetConstructorParameters(_constructor).ToArray();
7979
var naming = _dataProvider.PsiServices.Naming;
8080
var mockFieldsByType = _csharpMemberProvider.GetClassFields(classBody, _selectedElement.Language);
8181

Abc.MoqComplete/Abc.MoqComplete/ContextActions/FillWithMock/FillWithMockLocalVariableContextAction.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ protected override Action<ITextControl> ExecutePsiTransaction(ISolution solution
5454
if (constructor == null)
5555
return null;
5656

57-
var parameters = _csharpMemberProvider.GetConstructorParameters(constructor.ToString()).ToArray();
57+
var parameters = _csharpMemberProvider.GetConstructorParameters(constructor).ToArray();
5858

5959
for (int i = 0; i < constructor.Parameters.Count; i++)
6060
{

Abc.MoqComplete/Abc.MoqComplete/ContextActions/Services/CsharpMemberProvider.cs

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using JetBrains.ReSharper.Feature.Services.CSharp.ContextActions;
77
using JetBrains.ReSharper.Psi;
88
using JetBrains.ReSharper.Psi.CSharp.Tree;
9+
using JetBrains.ReSharper.Psi.Util;
910
using JetBrains.TextControl;
1011
using JetBrains.Util;
1112

@@ -14,34 +15,7 @@ namespace Abc.MoqComplete.ContextActions.Services
1415
[SolutionComponent]
1516
public class CsharpMemberProvider : ICsharpMemberProvider
1617
{
17-
public IEnumerable<string> GetConstructorParameters(string constructorString)
18-
{
19-
var index = 0;
20-
var openedBracket = 0;
21-
22-
while (constructorString[index] != '(')
23-
index++;
24-
25-
var sb = new StringBuilder();
26-
while (constructorString[index] != ')')
27-
{
28-
index++;
29-
30-
if (constructorString[index] == '<')
31-
openedBracket++;
32-
33-
else if (constructorString[index] == '>')
34-
openedBracket--;
35-
36-
if (openedBracket ==0 && (constructorString[index] == ',' || constructorString[index] == ')'))
37-
{
38-
yield return sb.ToString();
39-
sb.Clear();
40-
}
41-
else
42-
sb.Append(constructorString[index]);
43-
}
44-
}
18+
public IEnumerable<string> GetConstructorParameters(IConstructor constructor) => constructor.Parameters.Select(s => s.Type.GetPresentableName(constructor.PresentationLanguage));
4519

4620
public Dictionary<string, string> GetClassFields(IClassBody classBody, PsiLanguageType languageType)
4721
{

Abc.MoqComplete/Abc.MoqComplete/ContextActions/Services/ICsharpMemberProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ namespace Abc.MoqComplete.ContextActions.Services
99
{
1010
public interface ICsharpMemberProvider
1111
{
12-
IEnumerable<string> GetConstructorParameters(string constructorString);
12+
IEnumerable<string> GetConstructorParameters(IConstructor constructor);
1313
Dictionary<string, string> GetClassFields(IClassBody classBody, PsiLanguageType languageType);
1414
string GetGenericMock(string typeStr);
1515
bool IsAbstractOrInterface(IParameter parameter);

0 commit comments

Comments
 (0)