示例#1
0
        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));
        }
示例#9
0
        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));
        }
示例#10
0
        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"));
        }
示例#11
0
        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));
        }
示例#12
0
        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++;
        }