Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/Avalonia.Controls/HotkeyManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ static HotKeyManager()
new Manager(control).Init();
});
}
public static void SetHotKey(AvaloniaObject target, KeyGesture value) => target.SetValue(HotKeyProperty, value);
public static void SetHotKey(AvaloniaObject target, KeyGesture? value) => target.SetValue(HotKeyProperty, value);
public static KeyGesture? GetHotKey(AvaloniaObject target) => target.GetValue(HotKeyProperty);
}
}
6 changes: 3 additions & 3 deletions src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1118,9 +1118,6 @@ private unsafe IReadOnlyList<RawPointerPoint> CreateIntermediatePoints(MOUSEMOVE
var x = mp.x > 32767 ? mp.x - 65536 : mp.x;
var y = mp.y > 32767 ? mp.y - 65536 : mp.y;

if(mp.time <= prevMovePoint.time || mp.time >= movePoint.time)
continue;

s_sortedPoints.Add(new InternalPoint
{
Time = mp.time,
Expand All @@ -1133,6 +1130,9 @@ private unsafe IReadOnlyList<RawPointerPoint> CreateIntermediatePoints(MOUSEMOVE

foreach (var p in s_sortedPoints)
{
if(p.Time <= prevMovePoint.time || p.Time >= movePoint.time)
continue;

var client = PointToClient(p.Pt);

s_intermediatePointsPooledList.Add(new RawPointerPoint
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
<Import Project="..\..\build\HarfBuzzSharp.props" />
<Import Project="..\..\build\XUnit.props" />
<Import Project="..\..\build\SharedVersion.props" />
<Import Project="..\..\build\NullableEnable.props" />
<ItemGroup>
<Content Include="..\TestFiles\BuildTasks\PInvoke\bin\$(Configuration)\$(AvsCurrentTargetFramework)\PInvoke.dll" Link="Assets\PInvoke.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
Expand Down
6 changes: 3 additions & 3 deletions tests/Avalonia.Build.Tasks.UnitTest/UnitTestBuildEngine.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,11 @@ private UnitTestBuildEngine(bool continueOnError,

public bool ContinueOnError { get; }

public int LineNumberOfTaskNode { get; }
public int LineNumberOfTaskNode => 0;

public int ColumnNumberOfTaskNode { get; }
public int ColumnNumberOfTaskNode => 0;

public string ProjectFileOfTaskNode { get; }
public string ProjectFileOfTaskNode => string.Empty;

public IReadOnlyList<UnitTestBuildEngineMessage> Errors => _errors;

Expand Down
8 changes: 4 additions & 4 deletions tests/Avalonia.Controls.UnitTests/ApplicationTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public void Throws_ArgumentNullException_On_Run_If_MainWindow_Is_Null()
{
using (UnitTestApplication.Start(TestServices.StyledWindow))
{
Assert.Throws<ArgumentNullException>(() => { Application.Current.Run(null); });
Assert.Throws<ArgumentNullException>(() => { Application.Current!.Run(null!); });
}
}

Expand All @@ -22,7 +22,7 @@ public void Raises_ResourcesChanged_When_Event_Handler_Added_After_Resources_Has
// Test for #1765.
using (UnitTestApplication.Start())
{
var resources = Application.Current.Resources;
var resources = Application.Current!.Resources;
var raised = false;

Application.Current.ResourcesChanged += (s, e) => raised = true;
Expand All @@ -37,13 +37,13 @@ public void Can_Bind_To_DataContext()
{
using (UnitTestApplication.Start())
{
var application = Application.Current;
var application = Application.Current!;

application.DataContext = "Test";

application.Bind(Application.NameProperty, new Binding("."));

Assert.Equal("Test", Application.Current.Name);
Assert.Equal("Test", application.Name);
}
}
}
Expand Down
105 changes: 56 additions & 49 deletions tests/Avalonia.Controls.UnitTests/AutoCompleteBoxTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,60 +21,60 @@ public class AutoCompleteBoxTests : ScopedTestBase
[Fact]
public void Search_Filters()
{
Assert.True(GetFilter(AutoCompleteFilterMode.Contains)("am", "name"));
Assert.True(GetFilter(AutoCompleteFilterMode.Contains)("AME", "name"));
Assert.False(GetFilter(AutoCompleteFilterMode.Contains)("hello", "name"));
Assert.True(GetNotNullFilter(AutoCompleteFilterMode.Contains)("am", "name"));
Assert.True(GetNotNullFilter(AutoCompleteFilterMode.Contains)("AME", "name"));
Assert.False(GetNotNullFilter(AutoCompleteFilterMode.Contains)("hello", "name"));

Assert.True(GetFilter(AutoCompleteFilterMode.ContainsCaseSensitive)("na", "name"));
Assert.False(GetFilter(AutoCompleteFilterMode.ContainsCaseSensitive)("AME", "name"));
Assert.False(GetFilter(AutoCompleteFilterMode.ContainsCaseSensitive)("hello", "name"));
Assert.True(GetNotNullFilter(AutoCompleteFilterMode.ContainsCaseSensitive)("na", "name"));
Assert.False(GetNotNullFilter(AutoCompleteFilterMode.ContainsCaseSensitive)("AME", "name"));
Assert.False(GetNotNullFilter(AutoCompleteFilterMode.ContainsCaseSensitive)("hello", "name"));

Assert.Null(GetFilter(AutoCompleteFilterMode.Custom));
Assert.Null(GetFilter(AutoCompleteFilterMode.None));

Assert.True(GetFilter(AutoCompleteFilterMode.Equals)("na", "na"));
Assert.True(GetFilter(AutoCompleteFilterMode.Equals)("na", "NA"));
Assert.False(GetFilter(AutoCompleteFilterMode.Equals)("hello", "name"));
Assert.True(GetNotNullFilter(AutoCompleteFilterMode.Equals)("na", "na"));
Assert.True(GetNotNullFilter(AutoCompleteFilterMode.Equals)("na", "NA"));
Assert.False(GetNotNullFilter(AutoCompleteFilterMode.Equals)("hello", "name"));

Assert.True(GetFilter(AutoCompleteFilterMode.EqualsCaseSensitive)("na", "na"));
Assert.False(GetFilter(AutoCompleteFilterMode.EqualsCaseSensitive)("na", "NA"));
Assert.False(GetFilter(AutoCompleteFilterMode.EqualsCaseSensitive)("hello", "name"));
Assert.True(GetNotNullFilter(AutoCompleteFilterMode.EqualsCaseSensitive)("na", "na"));
Assert.False(GetNotNullFilter(AutoCompleteFilterMode.EqualsCaseSensitive)("na", "NA"));
Assert.False(GetNotNullFilter(AutoCompleteFilterMode.EqualsCaseSensitive)("hello", "name"));

Assert.True(GetFilter(AutoCompleteFilterMode.StartsWith)("na", "name"));
Assert.True(GetFilter(AutoCompleteFilterMode.StartsWith)("NAM", "name"));
Assert.False(GetFilter(AutoCompleteFilterMode.StartsWith)("hello", "name"));
Assert.True(GetNotNullFilter(AutoCompleteFilterMode.StartsWith)("na", "name"));
Assert.True(GetNotNullFilter(AutoCompleteFilterMode.StartsWith)("NAM", "name"));
Assert.False(GetNotNullFilter(AutoCompleteFilterMode.StartsWith)("hello", "name"));

Assert.True(GetFilter(AutoCompleteFilterMode.StartsWithCaseSensitive)("na", "name"));
Assert.False(GetFilter(AutoCompleteFilterMode.StartsWithCaseSensitive)("NAM", "name"));
Assert.False(GetFilter(AutoCompleteFilterMode.StartsWithCaseSensitive)("hello", "name"));
Assert.True(GetNotNullFilter(AutoCompleteFilterMode.StartsWithCaseSensitive)("na", "name"));
Assert.False(GetNotNullFilter(AutoCompleteFilterMode.StartsWithCaseSensitive)("NAM", "name"));
Assert.False(GetNotNullFilter(AutoCompleteFilterMode.StartsWithCaseSensitive)("hello", "name"));
}

[Fact]
public void Ordinal_Search_Filters()
{
Assert.True(GetFilter(AutoCompleteFilterMode.ContainsOrdinal)("am", "name"));
Assert.True(GetFilter(AutoCompleteFilterMode.ContainsOrdinal)("AME", "name"));
Assert.False(GetFilter(AutoCompleteFilterMode.ContainsOrdinal)("hello", "name"));
Assert.True(GetNotNullFilter(AutoCompleteFilterMode.ContainsOrdinal)("am", "name"));
Assert.True(GetNotNullFilter(AutoCompleteFilterMode.ContainsOrdinal)("AME", "name"));
Assert.False(GetNotNullFilter(AutoCompleteFilterMode.ContainsOrdinal)("hello", "name"));

Assert.True(GetFilter(AutoCompleteFilterMode.ContainsOrdinalCaseSensitive)("na", "name"));
Assert.False(GetFilter(AutoCompleteFilterMode.ContainsOrdinalCaseSensitive)("AME", "name"));
Assert.False(GetFilter(AutoCompleteFilterMode.ContainsOrdinalCaseSensitive)("hello", "name"));
Assert.True(GetNotNullFilter(AutoCompleteFilterMode.ContainsOrdinalCaseSensitive)("na", "name"));
Assert.False(GetNotNullFilter(AutoCompleteFilterMode.ContainsOrdinalCaseSensitive)("AME", "name"));
Assert.False(GetNotNullFilter(AutoCompleteFilterMode.ContainsOrdinalCaseSensitive)("hello", "name"));

Assert.True(GetFilter(AutoCompleteFilterMode.EqualsOrdinal)("na", "na"));
Assert.True(GetFilter(AutoCompleteFilterMode.EqualsOrdinal)("na", "NA"));
Assert.False(GetFilter(AutoCompleteFilterMode.EqualsOrdinal)("hello", "name"));
Assert.True(GetNotNullFilter(AutoCompleteFilterMode.EqualsOrdinal)("na", "na"));
Assert.True(GetNotNullFilter(AutoCompleteFilterMode.EqualsOrdinal)("na", "NA"));
Assert.False(GetNotNullFilter(AutoCompleteFilterMode.EqualsOrdinal)("hello", "name"));

Assert.True(GetFilter(AutoCompleteFilterMode.EqualsOrdinalCaseSensitive)("na", "na"));
Assert.False(GetFilter(AutoCompleteFilterMode.EqualsOrdinalCaseSensitive)("na", "NA"));
Assert.False(GetFilter(AutoCompleteFilterMode.EqualsOrdinalCaseSensitive)("hello", "name"));
Assert.True(GetNotNullFilter(AutoCompleteFilterMode.EqualsOrdinalCaseSensitive)("na", "na"));
Assert.False(GetNotNullFilter(AutoCompleteFilterMode.EqualsOrdinalCaseSensitive)("na", "NA"));
Assert.False(GetNotNullFilter(AutoCompleteFilterMode.EqualsOrdinalCaseSensitive)("hello", "name"));

Assert.True(GetFilter(AutoCompleteFilterMode.StartsWithOrdinal)("na", "name"));
Assert.True(GetFilter(AutoCompleteFilterMode.StartsWithOrdinal)("NAM", "name"));
Assert.False(GetFilter(AutoCompleteFilterMode.StartsWithOrdinal)("hello", "name"));
Assert.True(GetNotNullFilter(AutoCompleteFilterMode.StartsWithOrdinal)("na", "name"));
Assert.True(GetNotNullFilter(AutoCompleteFilterMode.StartsWithOrdinal)("NAM", "name"));
Assert.False(GetNotNullFilter(AutoCompleteFilterMode.StartsWithOrdinal)("hello", "name"));

Assert.True(GetFilter(AutoCompleteFilterMode.StartsWithOrdinalCaseSensitive)("na", "name"));
Assert.False(GetFilter(AutoCompleteFilterMode.StartsWithOrdinalCaseSensitive)("NAM", "name"));
Assert.False(GetFilter(AutoCompleteFilterMode.StartsWithOrdinalCaseSensitive)("hello", "name"));
Assert.True(GetNotNullFilter(AutoCompleteFilterMode.StartsWithOrdinalCaseSensitive)("na", "name"));
Assert.False(GetNotNullFilter(AutoCompleteFilterMode.StartsWithOrdinalCaseSensitive)("NAM", "name"));
Assert.False(GetNotNullFilter(AutoCompleteFilterMode.StartsWithOrdinalCaseSensitive)("hello", "name"));
}

[Fact]
Expand Down Expand Up @@ -261,7 +261,7 @@ public void Custom_Population_Supported()
control.Populated += (s, e) =>
{
populated = true;
ReadOnlyCollection<object> collection = e.Data as ReadOnlyCollection<object>;
var collection = e.Data as ReadOnlyCollection<object>;
populatedOk = collection != null && collection.Count == 1;
};

Expand Down Expand Up @@ -328,14 +328,10 @@ public void Item_Search()
RunTest((control, textbox) =>
{
control.FilterMode = AutoCompleteFilterMode.Custom;
control.ItemFilter = (search, item) =>
{
string s = item as string;
return s == null ? false : true;
};
control.ItemFilter = (_, item) => item is string;

// Just set to null briefly to exercise that code path
AutoCompleteFilterPredicate<object> filter = control.ItemFilter;
var filter = control.ItemFilter;
Assert.NotNull(filter);
control.ItemFilter = null;
Assert.Null(control.ItemFilter);
Expand Down Expand Up @@ -377,6 +373,8 @@ public void Custom_TextSelector()
{
RunTest((control, textbox) =>
{
Assert.NotNull(control.ItemsSource);

object selectedItem = control.ItemsSource.Cast<object>().First();
string input = "42";

Expand All @@ -394,6 +392,8 @@ public void Custom_ItemSelector()
{
RunTest((control, textbox) =>
{
Assert.NotNull(control.ItemsSource);

object selectedItem = control.ItemsSource.Cast<object>().First();
string input = "42";

Expand All @@ -416,8 +416,8 @@ public void Text_Validation()
control.Bind(AutoCompleteBox.TextProperty, textObservable);
Dispatcher.UIThread.RunJobs();

Assert.Equal(DataValidationErrors.GetHasErrors(control), true);
Assert.Equal(DataValidationErrors.GetErrors(control).SequenceEqual(new[] { exception }), true);
Assert.True(DataValidationErrors.GetHasErrors(control));
Assert.Equal([exception], DataValidationErrors.GetErrors(control));
});
}

Expand Down Expand Up @@ -453,8 +453,8 @@ public void SelectedItem_Validation()
control.Bind(AutoCompleteBox.SelectedItemProperty, itemObservable);
Dispatcher.UIThread.RunJobs();

Assert.Equal(DataValidationErrors.GetHasErrors(control), true);
Assert.Equal(DataValidationErrors.GetErrors(control).SequenceEqual(new[] { exception }), true);
Assert.True(DataValidationErrors.GetHasErrors(control));
Assert.Equal([exception], DataValidationErrors.GetErrors(control));
});
}

Expand Down Expand Up @@ -587,12 +587,19 @@ public void Opening_Context_Menu_Does_not_Lose_Selection()
/// </summary>
/// <param name="mode">The FilterMode of interest.</param>
/// <returns>Returns the predicate instance.</returns>
private static AutoCompleteFilterPredicate<string> GetFilter(AutoCompleteFilterMode mode)
private static AutoCompleteFilterPredicate<string?>? GetFilter(AutoCompleteFilterMode mode)
{
return new AutoCompleteBox { FilterMode = mode }
.TextFilter;
}

private static AutoCompleteFilterPredicate<string?> GetNotNullFilter(AutoCompleteFilterMode mode)
{
var filter = GetFilter(mode);
Assert.NotNull(filter);
return filter;
}

/// <summary>
/// Creates a large list of strings for AutoCompleteBox testing.
/// </summary>
Expand Down Expand Up @@ -1200,7 +1207,7 @@ private void RunTest(Action<AutoCompleteBox, TextBox> test)
var window = new Window {Content = control};
window.ApplyStyling();
window.ApplyTemplate();
window.Presenter.ApplyTemplate();
window.Presenter!.ApplyTemplate();
Dispatcher.UIThread.RunJobs();
test.Invoke(control, textBox);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
<Import Project="..\..\build\Base.props" />
<Import Project="..\..\build\SharedVersion.props" />
<Import Project="..\..\build\HarfBuzzSharp.props" />
<Import Project="..\..\build\NullableEnable.props" />
<ItemGroup>
<ProjectReference Include="..\..\src\Markup\Avalonia.Markup.Xaml.Loader\Avalonia.Markup.Xaml.Loader.csproj" />
<ProjectReference Include="..\..\src\Markup\Avalonia.Markup.Xaml\Avalonia.Markup.Xaml.csproj" />
Expand Down
15 changes: 8 additions & 7 deletions tests/Avalonia.Controls.UnitTests/ButtonTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ public void Button_With_RenderTransform_Raises_Click()
var pt = new Point(150, 50);
renderer.Setup(r => r.HitTest(It.IsAny<Point>(), It.IsAny<Visual>(), It.IsAny<Func<Visual, bool>>()))
.Returns<Point, Visual, Func<Visual, bool>>((p, r, f) =>
r.Bounds.Contains(p.Transform(r.RenderTransform.Value.Invert())) ?
r.Bounds.Contains(p.Transform(r.RenderTransform!.Value.Invert())) ?
new Visual[] { r } : new Visual[0]);

using var _ = UnitTestApplication.Start(TestServices.StyledWindow);
Expand Down Expand Up @@ -336,9 +336,9 @@ public void Raises_Click_When_AccessKey_Raised()
};

root.ApplyTemplate();
root.Presenter.UpdateChild();
root.Presenter!.UpdateChild();
target.ApplyTemplate();
target.Presenter.UpdateChild();
target.Presenter!.UpdateChild();
kd.SetFocusedElement(target, NavigationMethod.Unspecified, KeyModifiers.None);

Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
Expand Down Expand Up @@ -535,7 +535,7 @@ public void Button_IsCancel_Should_Not_Work_When_Button_Is_Not_Effectively_Visib
public void Button_CommandParameter_Does_Not_Change_While_Execution()
{
var target = new Button();
object lastParamenter = "A";
object? lastParamenter = "A";
var generator = new Random();
var onlyOnce = false;
var command = new TestCommand(parameter =>
Expand Down Expand Up @@ -582,12 +582,12 @@ void Should_Not_Fire_Click_Event_On_Space_Key_When_It_Is_Not_Focus()
}
}

private KeyEventArgs CreateKeyDownEvent(Key key, Interactive source = null)
private KeyEventArgs CreateKeyDownEvent(Key key, Interactive? source = null)
{
return new KeyEventArgs { RoutedEvent = InputElement.KeyDownEvent, Key = key, Source = source };
}

private KeyEventArgs CreateKeyUpEvent(Key key, Interactive source = null)
private KeyEventArgs CreateKeyUpEvent(Key key, Interactive? source = null)
{
return new KeyEventArgs { RoutedEvent = InputElement.KeyUpEvent, Key = key, Source = source };
}
Expand Down Expand Up @@ -682,6 +682,7 @@ public void Button_LetterSpacing_Updates_ContentPresenter_When_Changed()

button.ApplyTemplate();
var presenter = button.Presenter;
Assert.NotNull(presenter);

button.LetterSpacing = 5.0;

Expand Down Expand Up @@ -758,7 +759,7 @@ private class TestTopLevel : TopLevel
private readonly ILayoutManager _layoutManager;
public bool IsClosed { get; private set; }

public TestTopLevel(ITopLevelImpl impl, ILayoutManager layoutManager = null)
public TestTopLevel(ITopLevelImpl impl, ILayoutManager? layoutManager = null)
: base(impl)
{
_layoutManager = layoutManager ?? new LayoutManager(this);
Expand Down
Loading