12 changed files with 104 additions and 74 deletions
@ -1,28 +0,0 @@
@@ -1,28 +0,0 @@
|
||||
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||
|
||||
using System; |
||||
using ICSharpCode.SharpDevelop.Dom; |
||||
|
||||
namespace ICSharpCode.PythonBinding |
||||
{ |
||||
public class PythonDotNetMethodResolver |
||||
{ |
||||
PythonClassResolver classResolver; |
||||
|
||||
public PythonDotNetMethodResolver(PythonClassResolver classResolver) |
||||
{ |
||||
this.classResolver = classResolver; |
||||
} |
||||
|
||||
public ResolveResult Resolve(PythonResolverContext resolverContext) |
||||
{ |
||||
MemberName memberName = resolverContext.CreateExpressionMemberName(); |
||||
IClass matchingClass = classResolver.GetClass(resolverContext, memberName.Type); |
||||
if (matchingClass != null) { |
||||
return new PythonMethodGroupResolveResult(matchingClass, memberName.Name); |
||||
} |
||||
return null; |
||||
} |
||||
} |
||||
} |
@ -1,29 +0,0 @@
@@ -1,29 +0,0 @@
|
||||
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||
|
||||
using System; |
||||
using ICSharpCode.SharpDevelop.Dom; |
||||
|
||||
namespace ICSharpCode.PythonBinding |
||||
{ |
||||
public class PythonMethodResolver : IPythonResolver |
||||
{ |
||||
PythonDotNetMethodResolver dotNetMethodResolver; |
||||
PythonStandardModuleMethodResolver standardModuleMethodResolver; |
||||
|
||||
public PythonMethodResolver(PythonClassResolver classResolver, PythonStandardModuleResolver standardModuleResolver) |
||||
{ |
||||
dotNetMethodResolver = new PythonDotNetMethodResolver(classResolver); |
||||
standardModuleMethodResolver = new PythonStandardModuleMethodResolver(standardModuleResolver); |
||||
} |
||||
|
||||
public ResolveResult Resolve(PythonResolverContext resolverContext) |
||||
{ |
||||
ResolveResult resolveResult = dotNetMethodResolver.Resolve(resolverContext); |
||||
if (resolveResult != null) { |
||||
return resolveResult; |
||||
} |
||||
return standardModuleMethodResolver.Resolve(resolverContext); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,57 @@
@@ -0,0 +1,57 @@
|
||||
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||
|
||||
using System; |
||||
using ICSharpCode.SharpDevelop.Dom; |
||||
using NUnit.Framework; |
||||
using PythonBinding.Tests.Utils; |
||||
using UnitTesting.Tests.Utils; |
||||
|
||||
namespace PythonBinding.Tests.Resolver |
||||
{ |
||||
[TestFixture] |
||||
public class ResolveLocalVariableMethodTests |
||||
{ |
||||
PythonResolverTestsHelper resolverHelper; |
||||
MockClass myClass; |
||||
|
||||
void CreateClassWithOneProperty() |
||||
{ |
||||
resolverHelper = new PythonResolverTestsHelper(); |
||||
myClass = resolverHelper.CreateClass("MyClass"); |
||||
myClass.AddMethod("MyMethod"); |
||||
|
||||
resolverHelper.ProjectContent.SetClassToReturnFromGetClass("MyClass", myClass); |
||||
} |
||||
|
||||
[Test] |
||||
public void Resolve_ExpressionIsForMethodOnLocalVariable_MethodGroupResolveResultNameIsMethodName() |
||||
{ |
||||
CreateClassWithOneProperty(); |
||||
string code = |
||||
"a = MyClass()\r\n" + |
||||
"a.MyMethod"; |
||||
|
||||
resolverHelper.Resolve("a.MyMethod", code); |
||||
string methodName = resolverHelper.MethodGroupResolveResult.Name; |
||||
string expectedMethodName = "MyMethod"; |
||||
|
||||
Assert.AreEqual(expectedMethodName, methodName); |
||||
} |
||||
|
||||
[Test] |
||||
public void Resolve_ExpressionIsForMethodOnLocalVariable_MethodGroupResolveResultContainingTypeUnderlyingClassIsMyClass() |
||||
{ |
||||
CreateClassWithOneProperty(); |
||||
string code = |
||||
"a = MyClass()\r\n" + |
||||
"a.MyMethod"; |
||||
|
||||
resolverHelper.Resolve("a.MyMethod", code); |
||||
IClass c = resolverHelper.MethodGroupResolveResult.ContainingType.GetUnderlyingClass(); |
||||
|
||||
Assert.AreEqual(myClass, c); |
||||
} |
||||
|
||||
} |
||||
} |
Loading…
Reference in new issue