public ScenarioResult MonthCalendar_DoubleClick_MaxDate_InvokeEvents(TParams p) { using var wrapper = new MonthCalendarWrapper(this); DateTime newDate = DateTime.Today.AddDays(2); Action click = () => { MouseHelper.SendClick(GetCellPositionByDate(wrapper.Calendar, newDate)); Thread.Sleep(500); MouseHelper.SendClick(GetCellPositionByDate(wrapper.Calendar, newDate)); }; (int CallDateSelectedCount, int CallDateChangedCount, DateTime SelectedDate)testData = MonthCalendar_MinimumMaximum_Action(wrapper, click); if (testData.CallDateSelectedCount != 2) { return(new ScenarioResult(false, "`DateSelected` event should be firing twice")); } if (testData.CallDateChangedCount != 1) { return(new ScenarioResult(false, "`DateChanged` event should be firing only one time")); } return(new ScenarioResult(testData.SelectedDate.Date == newDate.Date, "The selected date has not changed")); }
public ScenarioResult MonthCalendarAccessibleObject_GetColumnHeaderItems_ReturnsCorrectCollection(TParams p) { using var wrapper = new MonthCalendarWrapper(this); Application.DoEvents(); MonthCalendarAccessibleObject accessibleObject = (MonthCalendarAccessibleObject)wrapper.Calendar.AccessibilityObject; Application.DoEvents(); IRawElementProviderSimple[] items = accessibleObject.GetColumnHeaderItems(); return(new ScenarioResult(items != null)); }
public ScenarioResult MonthCalendarAccessibleObject_GetColumnHeaderItems_ReturnsNull_IfCalendarIndexIsIncorrect(TParams p) { using var wrapper = new MonthCalendarWrapper(this); Application.DoEvents(); MonthCalendarAccessibleObject accessibleObject = (MonthCalendarAccessibleObject)wrapper.Calendar.AccessibilityObject; Type type = typeof(MonthCalendarAccessibleObject); type.GetField("_calendarIndex", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(accessibleObject, -1); Application.DoEvents(); IRawElementProviderSimple[] items = accessibleObject.GetColumnHeaderItems(); return(new ScenarioResult(items is null)); }
public ScenarioResult MonthCalendar_SettingDate_DoesntCrashApplication_IfUseMouse(TParams p) { using var wrapper = new MonthCalendarWrapper(this); wrapper.Calendar.MinDate = new DateTime(2020, 4, 9); wrapper.Calendar.MaxDate = new DateTime(2020, 4, 27); wrapper.Calendar.SetDate(new DateTime(2020, 4, 14)); Application.DoEvents(); Point position = wrapper.Calendar.PointToScreen(new Point(82, 102)); MouseHelper.SendClick(position.X, position.Y); Application.DoEvents(); return(new ScenarioResult(true)); }
public ScenarioResult MonthCalendarAccessibleObject_GetCalendarChildAccessibleObject_ReturnsNull_IfCalendarIndexIsIncorrect(TParams p) { using var wrapper = new MonthCalendarWrapper(this); Application.DoEvents(); MonthCalendarAccessibleObject accessibleObject = (MonthCalendarAccessibleObject)wrapper.Calendar.AccessibilityObject; Type type = typeof(MonthCalendarAccessibleObject); type.GetField("_calendarIndex", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(accessibleObject, -1); MethodInfo method = type.GetMethod("GetCalendarChildAccessibleObject", BindingFlags.NonPublic | BindingFlags.Instance); Application.DoEvents(); object child = method.Invoke(accessibleObject, new object[] { new DateTime(2020, 4, 10), new DateTime(2020, 4, 10) }); return(new ScenarioResult(child is null)); }
public ScenarioResult MonthCalendar_SettingDate_DoesntCrashApplication_IfUseKeyboard(TParams p) { using var wrapper = new MonthCalendarWrapper(this); wrapper.Calendar.MinDate = new DateTime(2020, 4, 9); wrapper.Calendar.MaxDate = new DateTime(2020, 4, 27); wrapper.Calendar.SetDate(new DateTime(2020, 4, 14)); Application.DoEvents(); KeyboardHelper.SendKey(Keys.Right, true); Application.DoEvents(); KeyboardHelper.SendKey(Keys.Right, true); Application.DoEvents(); return(new ScenarioResult(true)); }
public ScenarioResult MonthCalendarAccessibleObject_GetCalendarChildAccessibleObject_ReturnsCorrecObject(TParams p) { using var wrapper = new MonthCalendarWrapper(this); DateTime selectedDate = new DateTime(2020, 4, 10); wrapper.Calendar.SetDate(selectedDate); Application.DoEvents(); MonthCalendarAccessibleObject accessibleObject = (MonthCalendarAccessibleObject)wrapper.Calendar.AccessibilityObject; Type type = typeof(MonthCalendarAccessibleObject); MethodInfo method = type.GetMethod("GetCalendarChildAccessibleObject", BindingFlags.NonPublic | BindingFlags.Instance); Application.DoEvents(); object child = method.Invoke(accessibleObject, new object[] { selectedDate, selectedDate }); return(new ScenarioResult(child != null)); }
public ScenarioResult CalendarBodyAccessibleObject_GetFromPoint_ReturnsNull_IfMCHITTESTINFOIsIncorrect(TParams p) { using var wrapper = new MonthCalendarWrapper(this); Application.DoEvents(); MonthCalendarAccessibleObject accessibleObject = (MonthCalendarAccessibleObject)wrapper.Calendar.AccessibilityObject; CalendarBodyAccessibleObject bodyAccessibleObject = new CalendarBodyAccessibleObject(accessibleObject, 0); MCHITTESTINFO info = new MCHITTESTINFO { uHit = MCHT.CALENDARDAY, iRow = -10 }; Application.DoEvents(); CalendarChildAccessibleObject cell = bodyAccessibleObject.GetFromPoint(info); return(new ScenarioResult(cell is null)); }
public ScenarioResult MonthCalendar_GetFromPoint_ReturnsCorrectValue(TParams p) { using var wrapper = new MonthCalendarWrapper(this); Application.DoEvents(); MonthCalendarAccessibleObject accessibleObject = (MonthCalendarAccessibleObject)wrapper.Calendar.AccessibilityObject; CalendarAccessibleObject calendarAccessibleObject = new CalendarAccessibleObject(accessibleObject, 0, "Test name"); MCHITTESTINFO info = new MCHITTESTINFO { uHit = MCHT.CALENDARDAY, iRow = 0 }; Application.DoEvents(); MonthCalendarChildAccessibleObject cell = calendarAccessibleObject.GetChildFromPoint(info); return(new ScenarioResult(cell != null)); }
public ScenarioResult MonthCalendar_Click_MaximumDate_InvokeEvents(TParams p) { using var wrapper = new MonthCalendarWrapper(this); DateTime newDate = DateTime.Today.AddDays(2); Action click = () => MouseHelper.SendClick(GetCellPositionByDate(wrapper.Calendar, newDate)); (int CallDateSelectedCount, int CallDateChangedCount, DateTime SelectedDate)testData = MonthCalendar_MinimumMaximum_Action(wrapper, click); if (testData.CallDateSelectedCount == 0) { return(new ScenarioResult(false, "`DateSelected` event is not firing")); } if (testData.CallDateChangedCount == 0) { return(new ScenarioResult(false, "`DateChanged` event is not firing")); } return(new ScenarioResult(testData.SelectedDate.Date == newDate.Date, "The selected date has not changed")); }
public ScenarioResult MonthCalendar_SettingDate_DoesntCrashApplication_Programmatically(TParams p) { using var wrapper = new MonthCalendarWrapper(this); wrapper.Calendar.MinDate = new DateTime(2020, 4, 9); wrapper.Calendar.MaxDate = new DateTime(2020, 4, 27); wrapper.Calendar.SetDate(new DateTime(2020, 4, 14)); Application.DoEvents(); DateTime selectedDate = new DateTime(2020, 4, 10); SYSTEMTIME date = new SYSTEMTIME { wYear = (short)selectedDate.Year, wMonth = (short)selectedDate.Month, wDay = (short)selectedDate.Day }; if (IntPtr.Zero == wrapper.Calendar.Handle) { return(new ScenarioResult(false)); } NMSELCHANGE lParam = new NMSELCHANGE { nmhdr = new NMHDR { code = (int)MCN.SELCHANGE, }, stSelStart = date, stSelEnd = date, }; SendMessageW(wrapper.Calendar.Handle, WM.REFLECT | WM.NOTIFY, IntPtr.Zero, ref lParam); return(new ScenarioResult(true)); }
private (int callDateSelectedCount, int callDateChangedCount, DateTime selectedDate) MonthCalendar_MinimumMaximum_Action(MonthCalendarWrapper wrapper, Action action) { int callDateSelectedCount = 0; int callDateChangedCount = 0; Application.DoEvents(); wrapper.Calendar.MinDate = DateTime.Now.AddDays(-1); wrapper.Calendar.MaxDate = DateTime.Now.AddDays(2); wrapper.Calendar.DateSelected += calendar_DateSelected; wrapper.Calendar.DateChanged += calendar_DateChanged; Application.DoEvents(); action(); Application.DoEvents(); wrapper.Calendar.MinDate = DateTimePicker.MinimumDateTime; wrapper.Calendar.MaxDate = DateTimePicker.MaximumDateTime; wrapper.Calendar.DateSelected -= calendar_DateSelected; wrapper.Calendar.DateChanged -= calendar_DateChanged; return(callDateSelectedCount, callDateChangedCount, wrapper.Calendar.SelectionStart.Date); void calendar_DateSelected(object sender, DateRangeEventArgs e) => callDateSelectedCount++; void calendar_DateChanged(object sender, DateRangeEventArgs e) => callDateChangedCount++; }