Browse Source

Event handlers with EventHandler object creation now converted to Python.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@4066 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Matt Ward 16 years ago
parent
commit
168d0d7716
  1. 6
      src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/NRefactoryToPythonConverter.cs
  2. 51
      src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/EventHandlerWithObjectCreationTestFixture.cs
  3. 1
      src/AddIns/BackendBindings/Python/PythonBinding/Test/PythonBinding.Tests.csproj

6
src/AddIns/BackendBindings/Python/PythonBinding/Project/Src/NRefactoryToPythonConverter.cs

@ -1432,7 +1432,13 @@ namespace ICSharpCode.PythonBinding @@ -1432,7 +1432,13 @@ namespace ICSharpCode.PythonBinding
{
// Create event handler expression.
IdentifierExpression identifierExpression = eventHandlerExpression as IdentifierExpression;
ObjectCreateExpression objectCreateExpression = eventHandlerExpression as ObjectCreateExpression;
if (identifierExpression != null) {
Append(identifierExpression.Identifier);
} else if (objectCreateExpression != null) {
//if (objectCreateExpression.Parameters.Count > 0) {
CreateDelegateCreateExpression(objectCreateExpression.Parameters[0]);
}
return null;
}

51
src/AddIns/BackendBindings/Python/PythonBinding/Test/Converter/EventHandlerWithObjectCreationTestFixture.cs

@ -0,0 +1,51 @@ @@ -0,0 +1,51 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using ICSharpCode.NRefactory;
using ICSharpCode.PythonBinding;
using NUnit.Framework;
namespace PythonBinding.Tests.Converter
{
/// <summary>
/// Tests that an event handler such as button1.Click += new EventHandler(Button1Click) is converted
/// to Python correctly.
/// </summary>
[TestFixture]
public class EventHandlerWithObjectCreationTestFixture
{
string csharp = "class Foo\r\n" +
"{\r\n" +
"\tpublic Foo()\r\n" +
"\t{" +
"\t\tbutton = new Button();\r\n" +
"\t\tbutton.Click += new EventHandler(ButtonClick);\r\n" +
"\t}\r\n" +
"\r\n" +
"\tvoid ButtonClick(object sender, EventArgs e)\r\n" +
"\t{\r\n" +
"\t}\r\n" +
"}";
[Test]
public void ConvertedPythonCode()
{
string expectedCode = "class Foo(object):\r\n" +
"\tdef __init__(self):\r\n" +
"\t\tbutton = Button()\r\n" +
"\t\tbutton.Click += ButtonClick\r\n" +
"\r\n" +
"\tdef ButtonClick(self, sender, e):\r\n" +
"\t\tpass";
NRefactoryToPythonConverter converter = new NRefactoryToPythonConverter(SupportedLanguage.CSharp);
string code = converter.Convert(csharp);
Assert.AreEqual(expectedCode, code);
}
}
}

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

@ -103,6 +103,7 @@ @@ -103,6 +103,7 @@
<Compile Include="Converter\ClassFieldReferenceTestFixture.cs" />
<Compile Include="Converter\ConverterSupportedLanguageTests.cs" />
<Compile Include="Converter\ConvertToPythonProjectCommandTestFixture.cs" />
<Compile Include="Converter\EventHandlerWithObjectCreationTestFixture.cs" />
<Compile Include="Converter\IntegerMethodParameterTestFixture.cs" />
<Compile Include="Converter\BaseClassReferenceTestFixture.cs" />
<Compile Include="Converter\BinaryOperatorConversionTests.cs" />

Loading…
Cancel
Save