public void Transition1_5_RRTest() { using (var countDown = new CountdownEvent(1)) { foreach (var a in TestDef.Constant.DoubleTriggerButtons) { mouseEvents.Clear(); countDown.Reset(); using (var Global = new StateGlobal()) { var S0 = new State0(Global, new List <GestureDefinition>()); var S1 = new State1(Global, S0, ctx, Helper.Convert(a as DSL.Def.AcceptableInOnClause), new List <OnButtonGestureDefinition>(), new List <IfButtonGestureDefinition>()); var res = S1.Cancel(); Global.UserActionTaskFactory.StartNew(() => { countDown.Signal(); }); countDown.Wait(50); Assert.AreEqual(mouseEvents.Count, 1); if (a == DSL.Def.Constant.LeftButton) { Assert.AreEqual(mouseEvents[0].Item1, LowLevelMouseHook.Event.WM_LBUTTONDOWN); } else if (a == DSL.Def.Constant.MiddleButton) { Assert.AreEqual(mouseEvents[0].Item1, LowLevelMouseHook.Event.WM_MBUTTONDOWN); } else if (a == DSL.Def.Constant.RightButton) { Assert.AreEqual(mouseEvents[0].Item1, LowLevelMouseHook.Event.WM_RBUTTONDOWN); } else if (a == DSL.Def.Constant.X1Button) { Assert.AreEqual(mouseEvents[0].Item1, LowLevelMouseHook.Event.WM_XBUTTONDOWN); Assert.IsTrue(mouseEvents[0].Item2.mouseData.asXButton.isXButton1); } else if (a == DSL.Def.Constant.X2Button) { Assert.AreEqual(mouseEvents[0].Item1, LowLevelMouseHook.Event.WM_XBUTTONDOWN); Assert.IsTrue(mouseEvents[0].Item2.mouseData.asXButton.isXButton2); } Assert.IsTrue(res is State0); } } } }