Browse Source

Add IronPython code completion for class fields.

pull/1/head
mrward 16 years ago
parent
commit
b90aac8024
  1. 7
      src/AddIns/Analysis/UnitTesting/Test/Utils/MockClass.cs
  2. 22
      src/AddIns/Analysis/UnitTesting/Test/Utils/Tests/MockClassTests.cs
  3. 1
      src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonMemberResolver.cs
  4. 1
      src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj
  5. 52
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/ResolveClassFieldTests.cs

7
src/AddIns/Analysis/UnitTesting/Test/Utils/MockClass.cs

@ -148,5 +148,12 @@ namespace UnitTesting.Tests.Utils
Events.Add(classEvent); Events.Add(classEvent);
return classEvent; return classEvent;
} }
public DefaultField AddField(string name)
{
DefaultField field = new DefaultField(this, name);
Fields.Add(field);
return field;
}
} }
} }

22
src/AddIns/Analysis/UnitTesting/Test/Utils/Tests/MockClassTests.cs

@ -233,5 +233,27 @@ namespace UnitTesting.Tests.Utils.Tests
Assert.AreEqual("MyEvent", name); Assert.AreEqual("MyEvent", name);
} }
[Test]
public void AddField_PassedFieldName_AddsFieldToClass()
{
MockClass c = new MockClass();
c.AddField("MyField");
IField myField = c.Fields[0];
string name = myField.Name;
Assert.AreEqual("MyField", name);
}
[Test]
public void AddField_PassedFieldName_ReturnsFieldWithExpectedName()
{
MockClass c = new MockClass();
IField myField = c.AddField("MyField");
string name = myField.Name;
Assert.AreEqual("MyField", name);
}
} }
} }

1
src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/PythonMemberResolver.cs

@ -67,6 +67,7 @@ namespace ICSharpCode.PythonBinding
{ {
List<IMember> members = new List<IMember>(); List<IMember> members = new List<IMember>();
members.AddRange(c.Events); members.AddRange(c.Events);
members.AddRange(c.Fields);
members.AddRange(c.Properties); members.AddRange(c.Properties);
return members; return members;
} }

1
src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj

@ -351,6 +351,7 @@
<Compile Include="Resolver\PythonSelfResolverTests.cs" /> <Compile Include="Resolver\PythonSelfResolverTests.cs" />
<Compile Include="Resolver\ResolveBuiltInRoundMethodTests.cs" /> <Compile Include="Resolver\ResolveBuiltInRoundMethodTests.cs" />
<Compile Include="Resolver\ResolveClassEventTests.cs" /> <Compile Include="Resolver\ResolveClassEventTests.cs" />
<Compile Include="Resolver\ResolveClassFieldTests.cs" />
<Compile Include="Resolver\ResolveClassInstanceWithNamespaceTestFixture.cs" /> <Compile Include="Resolver\ResolveClassInstanceWithNamespaceTestFixture.cs" />
<Compile Include="Resolver\ResolveClassPropertyTests.cs" /> <Compile Include="Resolver\ResolveClassPropertyTests.cs" />
<Compile Include="Resolver\ResolveConsoleWriteLineTests.cs" /> <Compile Include="Resolver\ResolveConsoleWriteLineTests.cs" />

52
src/AddIns/BackendBindings/Python/PythonBinding/Test/Resolver/ResolveClassFieldTests.cs

@ -0,0 +1,52 @@
// 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
{
/// <summary>
/// Tests resolving events for the following classes:
///
/// public class MyClass
/// {
/// public int MyField
/// }
///
/// public class MyClassWithFields
/// {
/// public int MyField = 0;
/// }
///
/// </summary>
[TestFixture]
public class ResolveClassFieldTests
{
PythonResolverTestsHelper resolverHelper;
IField myClassField;
MockClass myClass;
void CreateClassWithOneEvent()
{
resolverHelper = new PythonResolverTestsHelper();
myClass = resolverHelper.CreateClass("MyClass");
myClassField = myClass.AddField("MyField");
resolverHelper.ProjectContent.SetClassToReturnFromGetClass("MyClass", myClass);
}
[Test]
public void Resolve_ExpressionIsForFieldOnClass_MemberResolveResultResolvedTypeIsClassField()
{
CreateClassWithOneEvent();
resolverHelper.Resolve("MyClass.MyField");
IMember resolvedMember = resolverHelper.MemberResultResult.ResolvedMember;
Assert.AreEqual(myClassField, resolvedMember);
}
}
}
Loading…
Cancel
Save