Skip to content

Commit

Permalink
chore: add test
Browse files Browse the repository at this point in the history
  • Loading branch information
rajamatt committed Dec 2, 2024
1 parent ebb7d4c commit 3ec5f1b
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ namespace Uno.UI.RuntimeTests.Tests.Windows_UI_Xaml_Controls;
[RunsOnUIThread]
public class Given_CalendarView
{
const int DEFAULT_MIN_MAX_DATE_YEAR_OFFSET = 100;

[TestMethod]
[UnoWorkItem("https://github.com/unoplatform/uno/issues/16123")]
[Ignore("Test is unstable on CI: https://github.com/unoplatform/uno/issues/16123")]
Expand Down Expand Up @@ -61,6 +63,42 @@ public async Task When_MinDate_Has_Different_Offset()
await UITestHelper.Load(calendarView);
}

[TestMethod]
public async Task When_Scroll_To_MaxDate()
{
var calendarView = new CalendarView()
{
DisplayMode = CalendarViewDisplayMode.Decade
};

await UITestHelper.Load(calendarView);

Type calendarViewType = typeof(CalendarView);
MethodInfo ChangeVisualStateInfo = calendarViewType.GetMethod("ChangeVisualState", BindingFlags.NonPublic | BindingFlags.Instance);

Check warning on line 77 in src/Uno.UI.RuntimeTests/Tests/Windows_UI_Xaml_Controls/Given_CalendarView.cs

View check run for this annotation

Codacy Production / Codacy Static Code Analysis

src/Uno.UI.RuntimeTests/Tests/Windows_UI_Xaml_Controls/Given_CalendarView.cs#L77

Make sure that this accessibility bypass is safe here.

// Scroll to max date
calendarView.SetDisplayDate(calendarView.MaxDate);

// Switch to Year view
calendarView.DisplayMode = CalendarViewDisplayMode.Year;
ChangeVisualStateInfo.Invoke(calendarView, new object[] { false });
await TestServices.WindowHelper.WaitForIdle();

// Switch back to Decade view
calendarView.DisplayMode = CalendarViewDisplayMode.Decade;
ChangeVisualStateInfo.Invoke(calendarView, new object[] { false });
await TestServices.WindowHelper.WaitForIdle();

// Decade viewport should be full of items (no missing row)
calendarView.GetActiveGeneratorHost(out var pHost);
var maxDecadeIndex = DEFAULT_MIN_MAX_DATE_YEAR_OFFSET * 2;
var maxDisplayedItems = pHost.Panel.Rows * pHost.Panel.Cols;

// The first visible index should be less than the max possible index minus the max items we can display
// Worst case scenario is that the last row only has 1 item
Assert.IsTrue(pHost.Panel.FirstVisibleIndex <= maxDecadeIndex - (maxDisplayedItems - pHost.Panel.Rows - 1));
}

#if __WASM__
[TestMethod]
[Ignore("Fails on Fluent styles #17272")]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1651,7 +1651,6 @@ private void ScrollToDate(
index = pHost.CalculateOffsetFromMinDate(date);
global::System.Diagnostics.Debug.Assert(index >= 0);
global::System.Diagnostics.Debug.Assert(pHost.Panel is { });

pHost.Panel.ScrollItemIntoView(
index,
ScrollIntoViewAlignment.Leading,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -433,7 +433,7 @@ internal void ScrollItemIntoView(int index, ScrollIntoViewAlignment alignment, d
// So here we prepare the _effectiveViewport (which will most probably be re-updated by the ChangeView below),
// and then force a base_Measure()

if(newOffset >= sv.ScrollableHeight)
if (newOffset >= sv.ScrollableHeight)
{
_effectiveViewport.Y = currentOffset;
}
Expand Down

0 comments on commit 3ec5f1b

Please sign in to comment.