public async Task VerifyDayItemRowHeaders() { TestCleanupWrapper cleanup; CalendarView calendar = default; await TestServices.RunOnUIThread(() => { calendar = new CalendarView(); calendar.SetDisplayDate(ConvertToDateTime(1, 2016, 04, 01)); TestServices.WindowHelper.WindowContent = calendar; }); await TestServices.WindowHelper.WaitForIdle(); await TestServices.RunOnUIThread(() => { var dayItems = new List <CalendarViewDayItem>(); TreeHelper.GetVisualChildrenByType(calendar, ref dayItems); // So since there is no mapping APIs on CalendarView, to get to the month in view, we divide by 2 // To get to the previous/next months, we remove/add 30 days. var marchDay = dayItems.GetAt((int)(dayItems.Count * 0.5 - 30)); var aprilDay = dayItems.GetAt((int)(dayItems.Count * 0.5)); var mayDay = dayItems.GetAt((int)(dayItems.Count * 0.5 + 30)); // We want to validate we get different peers for day items that belong to different months. var marchDayPeer = FrameworkElementAutomationPeer.CreatePeerForElement(marchDay); var aprilDayPeer = FrameworkElementAutomationPeer.CreatePeerForElement(aprilDay); var mayDayPeer = FrameworkElementAutomationPeer.CreatePeerForElement(mayDay); var marchRowHeaders = ((ITableItemProvider )marchDayPeer.GetPattern( PatternInterface.TableItem)).GetRowHeaderItems(); var aprilRowHeaders = ((ITableItemProvider )aprilDayPeer.GetPattern( PatternInterface.TableItem)).GetRowHeaderItems(); var mayRowHeaders = ((ITableItemProvider )mayDayPeer.GetPattern( PatternInterface.TableItem)).GetRowHeaderItems(); VERIFY_ARE_EQUAL(1, marchRowHeaders.Length); VERIFY_ARE_EQUAL(1, aprilRowHeaders.Length); VERIFY_ARE_EQUAL(1, mayRowHeaders.Length); var bridge = new BridgeAutomationPeer(); VERIFY_ARE_EQUAL("\u200eMarch\u200e \u200e2016", bridge.CallPeerFromProvider(marchRowHeaders[0]).GetName()); VERIFY_ARE_EQUAL("\u200eApril\u200e \u200e2016", bridge.CallPeerFromProvider(aprilRowHeaders[0]).GetName()); VERIFY_ARE_EQUAL("\u200eMay\u200e \u200e2016", bridge.CallPeerFromProvider(mayRowHeaders[0]).GetName()); }); }
protected static Task RunOnUIThread(Action action) { return(TestServices.RunOnUIThread(action)); }