| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248 |
- /**
- * SendKeysTest.cs: Test cases for SendKeys
- *
- * These tests can only run in ms.net one at a time.
- * Since ms.net apparently hooks the keyboard to
- * implement this, running two tests in a row
- * makes the second test run before the hook
- * of the first test is released, effectively
- * hanging the keyboard. CTRL-ALT-DEL releases
- * the keyboard, but the test still hangs.
- * Running each test separately works.
- *
- * Author:
- * Andreia Gaita ([email protected])
- *
- * (C) 2005 Novell, Inc. (http://www.novell.com)
- *
- */
- using System;
- using System.Windows.Forms;
- using System.Drawing;
- using System.Reflection;
- using System.Text;
- using System.Collections;
- using NUnit.Framework;
- namespace MonoTests.System.Windows.Forms
- {
- [TestFixture]
- [Category("NotDotNet")]
- [Category("NotWithXvfb")]
- [Category("Interactive")]
- public class SendKeysTest {
- static Queue keys = new Queue();
- internal struct Keys {
- public string key;
- public bool up;
- public bool shift;
- public bool ctrl;
- public bool alt;
- public Keys(string key, bool up, bool shift, bool ctrl, bool alt) {
- this.key = key;
- this.up = up;
- this.shift = shift;
- this.ctrl = ctrl;
- this.alt = alt;
- }
- }
- internal class Custom: TextBox {
- protected override void OnKeyDown(KeyEventArgs e) {
- keys.Enqueue(new Keys(e.KeyData.ToString(), false, e.Shift, e.Control, e.Alt));
- base.OnKeyDown (e);
- }
- protected override void OnKeyUp(KeyEventArgs e) {
- keys.Enqueue(new Keys(e.KeyData.ToString(), true, e.Shift, e.Control, e.Alt));
- base.OnKeyUp (e);
- }
- }
-
-
- public SendKeysTest() {
- }
- Form f;
- Timer t;
- Custom c;
- [Test]
- public void SendKeysTest1() {
- f = new Form();
- f.Activated +=new EventHandler(SendKeysTest1_activated);
- c = new Custom();
- f.Controls.Add(c);
- Application.Run(f);
- c.Dispose();
- }
- private void SendKeysTest1_activated(object sender, EventArgs e) {
- SendKeys.SendWait("a");
- t = new Timer();
- t.Interval = 1;
- t.Tick +=new EventHandler(SendKeysTest1_tick);
- t.Start();
-
- }
- private void SendKeysTest1_tick(object sender, EventArgs e) {
- if (f.InvokeRequired) {
- f.Invoke (new EventHandler (SendKeysTest1_tick), new object [] { sender, e });
- return;
- }
- t.Stop();
- Assert.AreEqual(2, keys.Count, "#A1");
- Keys k = (Keys)keys.Dequeue();
- Assert.IsFalse(k.up, "#A2");
- Assert.IsFalse(k.shift, "#A3");
- Assert.IsFalse(k.ctrl, "#A4");
- Assert.IsFalse(k.alt, "#A5");
- Assert.AreEqual("A", k.key, "#A6");
- k = (Keys)keys.Dequeue();
- Assert.IsTrue(k.up, "#A2");
- Assert.IsFalse(k.shift, "#A3");
- Assert.IsFalse(k.ctrl, "#A4");
- Assert.IsFalse(k.alt, "#A5");
- Assert.AreEqual("A", k.key, "#A6");
-
- t.Dispose();
- f.Close ();
- }
- [SetUp]
- public void SetUp() {
- keys.Clear();
- }
- [Test]
- public void SendKeysTest2() {
- f = new Form();
- f.Activated +=new EventHandler(SendKeysTest2_activated);
- c = new Custom();
- f.Controls.Add(c);
- Application.Run(f);
- c.Dispose();
- }
- private void SendKeysTest2_activated(object sender, EventArgs e) {
- SendKeys.SendWait("+(abc){BACKSPACE 2}");
- t = new Timer();
- t.Interval = 1;
- t.Tick +=new EventHandler(SendKeysTest2_tick);
- t.Start();
-
- }
- private void SendKeysTest2_tick(object sender, EventArgs e) {
- t.Stop();
- if (f.InvokeRequired) {
- f.Invoke (new EventHandler (SendKeysTest2_tick), new object [] {sender, e});
- return;
- }
- Assert.AreEqual(12, keys.Count, "#A1");
- Keys k = (Keys)keys.Dequeue();
- Assert.IsFalse(k.up, "#A2");
- Assert.IsTrue(k.shift, "#A3");
- Assert.IsFalse(k.ctrl, "#A4");
- Assert.IsFalse(k.alt, "#A5");
- k = (Keys)keys.Dequeue();
- Assert.IsFalse(k.up, "#A7");
- Assert.IsTrue(k.shift, "#A8");
- Assert.IsFalse(k.ctrl, "#A9");
- Assert.IsFalse(k.alt, "#A10");
- Assert.AreEqual("A, Shift", k.key, "#A11");
-
- k = (Keys)keys.Dequeue();
- Assert.IsTrue(k.up, "#A12");
- Assert.IsTrue(k.shift, "#A13");
- Assert.IsFalse(k.ctrl, "#A14");
- Assert.IsFalse(k.alt, "#A15");
- Assert.AreEqual("A, Shift", k.key, "#A16");
- k = (Keys)keys.Dequeue();
- Assert.IsFalse(k.up, "#A17");
- Assert.IsTrue(k.shift, "#A18");
- Assert.IsFalse(k.ctrl, "#A19");
- Assert.IsFalse(k.alt, "#A20");
- Assert.AreEqual("B, Shift", k.key, "#A21");
- k = (Keys)keys.Dequeue();
- Assert.IsTrue(k.up, "#A22");
- Assert.IsTrue(k.shift, "#A23");
- Assert.IsFalse(k.ctrl, "#A24");
- Assert.IsFalse(k.alt, "#A25");
- Assert.AreEqual("B, Shift", k.key, "#A26");
- k = (Keys)keys.Dequeue();
- Assert.IsFalse(k.up, "#A27");
- Assert.IsTrue(k.shift, "#A28");
- Assert.IsFalse(k.ctrl, "#A28");
- Assert.IsFalse(k.alt, "#A29");
- Assert.AreEqual("C, Shift", k.key, "#A30");
- k = (Keys)keys.Dequeue();
- Assert.IsTrue(k.up, "#A31");
- Assert.IsTrue(k.shift, "#A32");
- Assert.IsFalse(k.ctrl, "#A33");
- Assert.IsFalse(k.alt, "#A34");
- Assert.AreEqual("C, Shift", k.key, "#A35");
- k = (Keys)keys.Dequeue();
- Assert.IsTrue(k.up, "#A36");
- Assert.IsFalse(k.shift, "#A37");
- Assert.IsFalse(k.ctrl, "#A38");
- Assert.IsFalse(k.alt, "#A39");
- Assert.AreEqual("ShiftKey", k.key, "#A40");
- k = (Keys)keys.Dequeue();
- Assert.IsFalse(k.up, "#b1");
- Assert.IsFalse(k.shift, "#b2");
- Assert.IsFalse(k.ctrl, "#b3");
- Assert.IsFalse(k.alt, "#b4");
- Assert.AreEqual("Back", k.key, "#b5");
- k = (Keys)keys.Dequeue();
- Assert.IsTrue(k.up, "#b6");
- Assert.IsFalse(k.shift, "#b7");
- Assert.IsFalse(k.ctrl, "#b8");
- Assert.IsFalse(k.alt, "#b9");
- Assert.AreEqual("Back", k.key, "#b10");
- k = (Keys)keys.Dequeue();
- Assert.IsFalse(k.up, "#c1");
- Assert.IsFalse(k.shift, "#c2");
- Assert.IsFalse(k.ctrl, "#c3");
- Assert.IsFalse(k.alt, "#c4");
- Assert.AreEqual("Back", k.key, "#c5");
- k = (Keys)keys.Dequeue();
- Assert.IsTrue(k.up, "#c6");
- Assert.IsFalse(k.shift, "#c7");
- Assert.IsFalse(k.ctrl, "#c8");
- Assert.IsFalse(k.alt, "#c9");
- Assert.AreEqual("Back", k.key, "#c10");
- Assert.AreEqual(0, keys.Count, "#d1");
- Assert.AreEqual("A", c.Text, "#e1");
- t.Dispose();
- f.Close ();
- }
- }
- }
|