You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
3.5 KiB
108 lines
3.5 KiB
// 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 System.Collections.Generic; |
|
using System.ComponentModel; |
|
using System.Drawing; |
|
using System.IO; |
|
using System.Windows.Forms; |
|
|
|
using ICSharpCode.PythonBinding; |
|
using ICSharpCode.Scripting.Tests.Utils; |
|
using NUnit.Framework; |
|
using PythonBinding.Tests.Utils; |
|
|
|
namespace PythonBinding.Tests.Designer |
|
{ |
|
/// <summary> |
|
/// Fix ArgumentNullException when form has a button followed by a timer and the |
|
/// first timer statement is the setting of the event handler. |
|
/// </summary> |
|
[TestFixture] |
|
public class LoadFormWithButtonFollowedByTimerTestFixture : LoadFormTestFixtureBase |
|
{ |
|
MockPropertyDescriptor mockTickPropertyDescriptor; |
|
|
|
public override string PythonCode { |
|
get { |
|
return |
|
"import System.Drawing\r\n" + |
|
"import System.Windows.Forms\r\n" + |
|
"\r\n" + |
|
"from System.Drawing import *\r\n" + |
|
"from System.Windows.Forms import *\r\n" + |
|
"\r\n" + |
|
"class MainForm(Form):\r\n" + |
|
" def __init__(self):\r\n" + |
|
" self.InitializeComponent()\r\n" + |
|
"\r\n" + |
|
" def InitializeComponent(self):\r\n" + |
|
" self._components = System.ComponentModel.Container()\r\n" + |
|
" self._button1 = System.Windows.Forms.Button()\r\n" + |
|
" self._timer1 = System.Windows.Forms.Timer(self._components)\r\n" + |
|
" self.SuspendLayout()\r\n" + |
|
" # \r\n" + |
|
" # button1\r\n" + |
|
" # \r\n" + |
|
" self._button1.Location = System.Drawing.Point(37, 29)\r\n" + |
|
" self._button1.Name = \"button1\"\r\n" + |
|
" self._button1.Size = System.Drawing.Size(75, 23)\r\n" + |
|
" self._button1.TabIndex = 0\r\n" + |
|
" self._button1.Text = \"button1\"\r\n" + |
|
" self._button1.UseVisualStyleBackColor = True\r\n" + |
|
" # \r\n" + |
|
" # timer1\r\n" + |
|
" # \r\n" + |
|
" self._timer1.Tick += self.Timer1Tick\r\n" + |
|
" # \r\n" + |
|
" # MainForm\r\n" + |
|
" # \r\n" + |
|
" self.ClientSize = System.Drawing.Size(284, 264)\r\n" + |
|
" self.Controls.Add(self._button1)\r\n" + |
|
" self.Name = \"MainForm\"\r\n" + |
|
" self.Text = \"PyWinTest\"\r\n" + |
|
" self.ResumeLayout(False)\r\n" + |
|
"\r\n" + |
|
"\r\n" + |
|
" def Timer1Tick(self, sender, e):\r\n" + |
|
" pass"; |
|
} |
|
} |
|
|
|
public override void BeforeSetUpFixture() |
|
{ |
|
mockTickPropertyDescriptor = new MockPropertyDescriptor("Tick", null, false); |
|
ComponentCreator.SetEventPropertyDescriptor(mockTickPropertyDescriptor); |
|
} |
|
|
|
[Test] |
|
public void EventDescriptorUsedToGetEventProperty() |
|
{ |
|
Assert.IsNotNull(ComponentCreator.EventDescriptorPassedToGetEventProperty); |
|
} |
|
|
|
[Test] |
|
public void EventDescriptorNameUsedToGetEventPropertyIsTick() |
|
{ |
|
Assert.AreEqual("Tick", ComponentCreator.EventDescriptorPassedToGetEventProperty.Name); |
|
} |
|
|
|
[Test] |
|
public void GetPropertyValueSetForTimer() |
|
{ |
|
string value = mockTickPropertyDescriptor.GetValue(null) as String; |
|
Assert.AreEqual("Timer1Tick", value); |
|
} |
|
|
|
[Test] |
|
public void GetComponentUsedWhenSettingTickHandler() |
|
{ |
|
IComponent expectedComponent = ComponentCreator.GetComponent("timer1"); |
|
|
|
object component = mockTickPropertyDescriptor.GetSetValueComponent(); |
|
|
|
Assert.AreEqual(expectedComponent, component); |
|
} |
|
} |
|
}
|
|
|