Browse Source

Merge pull request #4880 from workgroupengineering/features/zerowarnings_miscellaneous

Features zerowarnings: Changes which obviously don't affect functionality
pull/4884/head
Dariusz Komosiński 6 years ago
committed by GitHub
parent
commit
6adb3eaa63
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      azure-pipelines.yml
  2. BIN
      build/Assets/Icon.png
  3. 6
      build/SharedVersion.props
  4. 4
      build/SourceLink.props
  5. 1
      dirs.proj
  6. 20
      samples/BindingDemo/App.xaml.cs
  7. 8
      samples/ControlCatalog.Desktop/Program.cs
  8. 1
      samples/ControlCatalog.NetCore/ControlCatalog.NetCore.csproj
  9. 10
      samples/Previewer/App.xaml.cs
  10. 15
      samples/Previewer/Program.cs
  11. 11
      samples/RenderDemo/App.xaml.cs
  12. 6
      samples/RenderDemo/Pages/GlyphRunPage.xaml
  13. 7
      samples/RenderDemo/Pages/GlyphRunPage.xaml.cs
  14. 8
      samples/VirtualizationDemo/App.xaml.cs
  15. 20
      samples/VirtualizationDemo/Program.cs
  16. 8
      samples/interop/Direct3DInteropSample/App.paml.cs
  17. 21
      samples/interop/Direct3DInteropSample/Program.cs
  18. 1
      samples/interop/NativeEmbedSample/NativeEmbedSample.csproj
  19. 1
      src/Avalonia.Controls.DataGrid/DataGridColumn.cs
  20. 1
      src/Avalonia.Controls/Primitives/IPopupHost.cs
  21. 2
      src/Avalonia.Controls/Window.cs
  22. 1
      src/Avalonia.Visuals/Media/Imaging/Bitmap.cs
  23. 2
      src/Avalonia.Visuals/Platform/IDrawingContextImpl.cs
  24. 7
      src/Avalonia.Visuals/Rendering/SceneGraph/ExperimentalAcrylicNode.cs
  25. 1
      src/Avalonia.Visuals/Rendering/SceneGraph/GeometryNode.cs
  26. 2
      src/Avalonia.Visuals/Rendering/SceneGraph/RectangleNode.cs
  27. 16
      src/Linux/Avalonia.LinuxFramebuffer/Output/Drm.cs
  28. 31
      src/Markup/Avalonia.Markup.Xaml.Loader/AvaloniaRuntimeXamlLoader.cs
  29. 1
      src/Windows/Avalonia.Direct2D1/Media/DrawingContextImpl.cs
  30. 2
      src/Windows/Avalonia.Win32.Interop/Avalonia.Win32.Interop.csproj
  31. 1
      src/Windows/Avalonia.Win32/Interop/TaskBarList.cs
  32. 8
      tests/Avalonia.Animation.UnitTests/AnimatableTests.cs
  33. 4
      tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_Metadata.cs
  34. 4
      tests/Avalonia.Base.UnitTests/Collections/AvaloniaListExtenionsTests.cs
  35. 2
      tests/Avalonia.Base.UnitTests/Data/Core/BindingExpressionTests.cs
  36. 14
      tests/Avalonia.Base.UnitTests/Data/DefaultValueConverterTests.cs
  37. 3
      tests/Avalonia.Benchmarks/NullRenderer.cs
  38. 3
      tests/Avalonia.Benchmarks/NullThreadingPlatform.cs
  39. 2
      tests/Avalonia.Controls.UnitTests/BorderTests.cs
  40. 2
      tests/Avalonia.Controls.UnitTests/PanelTests.cs
  41. 10
      tests/Avalonia.Controls.UnitTests/Platform/DefaultMenuInteractionHandlerTests.cs
  42. 2
      tests/Avalonia.Controls.UnitTests/Presenters/ContentPresenterTests_Standalone.cs
  43. 4
      tests/Avalonia.Controls.UnitTests/TextBlockTests.cs
  44. 13
      tests/Avalonia.DesignerSupport.TestApp/App.xaml.cs
  45. 20
      tests/Avalonia.DesignerSupport.TestApp/Program.cs
  46. 6
      tests/Avalonia.Layout.UnitTests/LayoutableTests.cs
  47. 2
      tests/Avalonia.Layout.UnitTests/LayoutableTests_EffectiveViewportChanged.cs
  48. 7
      tests/Avalonia.LeakTests/ControlTests.cs
  49. 15
      tests/Avalonia.Markup.UnitTests/Parsers/ExpressionObserverBuilderTests_Negation.cs
  50. 2
      tests/Avalonia.RenderTests/Media/BitmapTests.cs
  51. 12
      tests/Avalonia.Styling.UnitTests/ResourceDictionaryTests.cs
  52. 75
      tests/Avalonia.Styling.UnitTests/SelectorTests_Child.cs
  53. 74
      tests/Avalonia.Styling.UnitTests/SelectorTests_Descendent.cs
  54. 2
      tests/Avalonia.Styling.UnitTests/StyleTests.cs
  55. 8
      tests/Avalonia.Styling.UnitTests/StylesTests.cs
  56. 2
      tests/Avalonia.Visuals.UnitTests/Rendering/DeferredRendererTests.cs
  57. 2
      tests/Avalonia.Visuals.UnitTests/VisualTests.cs

4
azure-pipelines.yml

@ -31,6 +31,8 @@ jobs:
condition: not(canceled()) condition: not(canceled())
- job: macOS - job: macOS
variables:
SolutionDir: '$(Build.SourcesDirectory)'
pool: pool:
vmImage: 'macOS-10.14' vmImage: 'macOS-10.14'
steps: steps:
@ -97,6 +99,8 @@ jobs:
- job: Windows - job: Windows
pool: pool:
vmImage: 'windows-2019' vmImage: 'windows-2019'
variables:
SolutionDir: '$(Build.SourcesDirectory)'
steps: steps:
- task: UseDotNet@2 - task: UseDotNet@2
displayName: 'Use .NET Core SDK 3.1.401' displayName: 'Use .NET Core SDK 3.1.401'

BIN
build/Assets/Icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

6
build/SharedVersion.props

@ -10,10 +10,14 @@
<NoWarn>CS1591</NoWarn> <NoWarn>CS1591</NoWarn>
<LangVersion>latest</LangVersion> <LangVersion>latest</LangVersion>
<PackageLicenseExpression>MIT</PackageLicenseExpression> <PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageIconUrl>https://avatars2.githubusercontent.com/u/14075148?s=200</PackageIconUrl> <PackageIcon>Icon.png</PackageIcon>
<PackageDescription>Avalonia is a WPF/UWP-inspired cross-platform XAML-based UI framework providing a flexible styling system and supporting a wide range of Operating Systems such as Windows (.NET Framework, .NET Core), Linux (via Xorg), MacOS and with experimental support for Android and iOS.</PackageDescription> <PackageDescription>Avalonia is a WPF/UWP-inspired cross-platform XAML-based UI framework providing a flexible styling system and supporting a wide range of Operating Systems such as Windows (.NET Framework, .NET Core), Linux (via Xorg), MacOS and with experimental support for Android and iOS.</PackageDescription>
<PackageTags>avalonia;avaloniaui;mvvm;rx;reactive extensions;android;ios;mac;forms;wpf;net;netstandard;net461;uwp;xamarin</PackageTags> <PackageTags>avalonia;avaloniaui;mvvm;rx;reactive extensions;android;ios;mac;forms;wpf;net;netstandard;net461;uwp;xamarin</PackageTags>
<PackageReleaseNotes>https://github.com/AvaloniaUI/Avalonia/releases</PackageReleaseNotes> <PackageReleaseNotes>https://github.com/AvaloniaUI/Avalonia/releases</PackageReleaseNotes>
<RepositoryType>git</RepositoryType> <RepositoryType>git</RepositoryType>
</PropertyGroup> </PropertyGroup>
<ItemGroup Label="PackageIcon">
<None Include="$(SolutionDir)/build/Assets/Icon.png" Pack="true" PackagePath=""/>
</ItemGroup>
</Project> </Project>

4
build/SourceLink.props

@ -1,5 +1,5 @@
<Project> <Project>
<ItemGroup> <ItemGroup>
<PackageReference Include="SourceLink.Create.CommandLine" Version="2.8.0" PrivateAssets="All" /> <PackageReference Include="SourceLink.Create.CommandLine" Version="2.8.3" PrivateAssets="All" />
</ItemGroup> </ItemGroup>
</Project> </Project>

1
dirs.proj

@ -21,6 +21,7 @@
<ItemGroup Condition="!$([MSBuild]::IsOsPlatform('Windows')) OR '$(MSBuildRuntimeType)' != 'Full'"> <ItemGroup Condition="!$([MSBuild]::IsOsPlatform('Windows')) OR '$(MSBuildRuntimeType)' != 'Full'">
<ProjectReference Remove="src/Windows/Avalonia.Win32.Interop/Avalonia.Win32.Interop.csproj" /> <ProjectReference Remove="src/Windows/Avalonia.Win32.Interop/Avalonia.Win32.Interop.csproj" />
<ProjectReference Remove="samples/interop/**/*.*proj" /> <ProjectReference Remove="samples/interop/**/*.*proj" />
<ProjectReference Remove="samples/ControlCatalog.Desktop/*.*proj" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

20
samples/BindingDemo/App.xaml.cs

@ -1,6 +1,5 @@
using System;
using Avalonia; using Avalonia;
using Avalonia.Controls; using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml;
using Avalonia.ReactiveUI; using Avalonia.ReactiveUI;
@ -13,13 +12,20 @@ namespace BindingDemo
AvaloniaXamlLoader.Load(this); AvaloniaXamlLoader.Load(this);
} }
private static void Main() public override void OnFrameworkInitializationCompleted()
{ {
AppBuilder.Configure<App>() if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
desktop.MainWindow = new MainWindow();
base.OnFrameworkInitializationCompleted();
}
public static int Main(string[] args)
=> BuildAvaloniaApp().StartWithClassicDesktopLifetime(args);
public static AppBuilder BuildAvaloniaApp()
=> AppBuilder.Configure<App>()
.UsePlatformDetect() .UsePlatformDetect()
.UseReactiveUI() .UseReactiveUI()
.LogToDebug() .LogToDebug();
.Start<MainWindow>();
}
} }
} }

8
samples/ControlCatalog.Desktop/Program.cs

@ -10,12 +10,8 @@ namespace ControlCatalog
internal class Program internal class Program
{ {
[STAThread] [STAThread]
static void Main(string[] args) public static int Main(string[] args)
{ => BuildAvaloniaApp().StartWithClassicDesktopLifetime(args);
// TODO: Make this work with GTK/Skia/Cairo depending on command-line args
// again.
BuildAvaloniaApp().Start<MainWindow>();
}
/// <summary> /// <summary>
/// This method is needed for IDE previewer infrastructure /// This method is needed for IDE previewer infrastructure

1
samples/ControlCatalog.NetCore/ControlCatalog.NetCore.csproj

@ -11,7 +11,6 @@
<ProjectReference Include="..\..\src\Avalonia.Dialogs\Avalonia.Dialogs.csproj" /> <ProjectReference Include="..\..\src\Avalonia.Dialogs\Avalonia.Dialogs.csproj" />
<ProjectReference Include="..\..\src\Linux\Avalonia.LinuxFramebuffer\Avalonia.LinuxFramebuffer.csproj" /> <ProjectReference Include="..\..\src\Linux\Avalonia.LinuxFramebuffer\Avalonia.LinuxFramebuffer.csproj" />
<ProjectReference Include="..\ControlCatalog\ControlCatalog.csproj" /> <ProjectReference Include="..\ControlCatalog\ControlCatalog.csproj" />
<ProjectReference Include="..\..\src\Avalonia.Desktop\Avalonia.Desktop.csproj" />
<ProjectReference Include="..\..\src\Avalonia.X11\Avalonia.X11.csproj" /> <ProjectReference Include="..\..\src\Avalonia.X11\Avalonia.X11.csproj" />
<PackageReference Include="Avalonia.Angle.Windows.Natives" Version="2.1.0.2019013001" /> <PackageReference Include="Avalonia.Angle.Windows.Natives" Version="2.1.0.2019013001" />
</ItemGroup> </ItemGroup>

10
samples/Previewer/App.xaml.cs

@ -1,4 +1,5 @@
using Avalonia; using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml;
namespace Previewer namespace Previewer
@ -9,6 +10,13 @@ namespace Previewer
{ {
AvaloniaXamlLoader.Load(this); AvaloniaXamlLoader.Load(this);
} }
public override void OnFrameworkInitializationCompleted()
{
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
desktop.MainWindow = new MainWindow();
base.OnFrameworkInitializationCompleted();
}
} }
} }

15
samples/Previewer/Program.cs

@ -1,13 +1,14 @@
using System; using Avalonia;
using Avalonia;
namespace Previewer namespace Previewer
{ {
class Program class Program
{ {
static void Main(string[] args) public static AppBuilder BuildAvaloniaApp()
{ => AppBuilder.Configure<App>()
AppBuilder.Configure<App>().UsePlatformDetect().Start<MainWindow>(); .UsePlatformDetect();
}
public static int Main(string[] args)
=> BuildAvaloniaApp().StartWithClassicDesktopLifetime(args);
} }
} }

11
samples/RenderDemo/App.xaml.cs

@ -1,4 +1,5 @@
using Avalonia; using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml;
using Avalonia.ReactiveUI; using Avalonia.ReactiveUI;
@ -11,9 +12,17 @@ namespace RenderDemo
AvaloniaXamlLoader.Load(this); AvaloniaXamlLoader.Load(this);
} }
public override void OnFrameworkInitializationCompleted()
{
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
desktop.MainWindow = new MainWindow();
base.OnFrameworkInitializationCompleted();
}
// TODO: Make this work with GTK/Skia/Cairo depending on command-line args // TODO: Make this work with GTK/Skia/Cairo depending on command-line args
// again. // again.
static void Main(string[] args) => BuildAvaloniaApp().Start<MainWindow>(); static void Main(string[] args)
=> BuildAvaloniaApp().StartWithClassicDesktopLifetime(args);
// App configuration, used by the entry point and previewer // App configuration, used by the entry point and previewer
static AppBuilder BuildAvaloniaApp() static AppBuilder BuildAvaloniaApp()

6
samples/RenderDemo/Pages/GlyphRunPage.xaml

@ -6,9 +6,9 @@
x:Class="RenderDemo.Pages.GlyphRunPage"> x:Class="RenderDemo.Pages.GlyphRunPage">
<Border <Border
Background="White"> Background="White">
<DrawingPresenter <Image
x:Name="drawingPresenter" x:Name="imageControl"
Stretch="None"> Stretch="None">
</DrawingPresenter> </Image>
</Border> </Border>
</UserControl> </UserControl>

7
samples/RenderDemo/Pages/GlyphRunPage.xaml.cs

@ -9,7 +9,7 @@ namespace RenderDemo.Pages
{ {
public class GlyphRunPage : UserControl public class GlyphRunPage : UserControl
{ {
private DrawingPresenter _drawingPresenter; private Image _imageControl;
private GlyphTypeface _glyphTypeface = Typeface.Default.GlyphTypeface; private GlyphTypeface _glyphTypeface = Typeface.Default.GlyphTypeface;
private readonly Random _rand = new Random(); private readonly Random _rand = new Random();
private ushort[] _glyphIndices = new ushort[1]; private ushort[] _glyphIndices = new ushort[1];
@ -25,7 +25,8 @@ namespace RenderDemo.Pages
{ {
AvaloniaXamlLoader.Load(this); AvaloniaXamlLoader.Load(this);
_drawingPresenter = this.FindControl<DrawingPresenter>("drawingPresenter"); _imageControl = this.FindControl<Image>("imageControl");
_imageControl.Source = new DrawingImage();
DispatcherTimer.Run(() => DispatcherTimer.Run(() =>
{ {
@ -73,7 +74,7 @@ namespace RenderDemo.Pages
drawingGroup.Children.Add(geometryDrawing); drawingGroup.Children.Add(geometryDrawing);
_drawingPresenter.Drawing = drawingGroup; (_imageControl.Source as DrawingImage).Drawing = drawingGroup;
} }
} }
} }

8
samples/VirtualizationDemo/App.xaml.cs

@ -1,4 +1,5 @@
using Avalonia; using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml;
namespace VirtualizationDemo namespace VirtualizationDemo
@ -9,5 +10,12 @@ namespace VirtualizationDemo
{ {
AvaloniaXamlLoader.Load(this); AvaloniaXamlLoader.Load(this);
} }
public override void OnFrameworkInitializationCompleted()
{
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
desktop.MainWindow = new MainWindow();
base.OnFrameworkInitializationCompleted();
}
} }
} }

20
samples/VirtualizationDemo/Program.cs

@ -1,19 +1,17 @@
using System; using Avalonia;
using Avalonia;
using Avalonia.Controls;
using Avalonia.ReactiveUI; using Avalonia.ReactiveUI;
namespace VirtualizationDemo namespace VirtualizationDemo
{ {
class Program class Program
{ {
static void Main(string[] args) public static AppBuilder BuildAvaloniaApp()
{ => AppBuilder.Configure<App>()
AppBuilder.Configure<App>() .UsePlatformDetect()
.UsePlatformDetect() .UseReactiveUI()
.UseReactiveUI() .LogToDebug();
.LogToDebug()
.Start<MainWindow>(); public static int Main(string[] args)
} => BuildAvaloniaApp().StartWithClassicDesktopLifetime(args);
} }
} }

8
samples/interop/Direct3DInteropSample/App.paml.cs

@ -1,4 +1,5 @@
using Avalonia; using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml;
namespace Direct3DInteropSample namespace Direct3DInteropSample
@ -9,5 +10,12 @@ namespace Direct3DInteropSample
{ {
AvaloniaXamlLoader.Load(this); AvaloniaXamlLoader.Load(this);
} }
public override void OnFrameworkInitializationCompleted()
{
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
desktop.MainWindow = new MainWindow();
base.OnFrameworkInitializationCompleted();
}
} }
} }

21
samples/interop/Direct3DInteropSample/Program.cs

@ -1,19 +1,16 @@
using System; using Avalonia;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Avalonia;
namespace Direct3DInteropSample namespace Direct3DInteropSample
{ {
class Program class Program
{ {
static void Main(string[] args) public static AppBuilder BuildAvaloniaApp()
{ => AppBuilder.Configure<App>()
AppBuilder.Configure<App>() .With(new Win32PlatformOptions { UseDeferredRendering = false })
.With(new Win32PlatformOptions {UseDeferredRendering = false}) .UseWin32()
.UseWin32().UseDirect2D1().Start<MainWindow>(); .UseDirect2D1();
}
public static int Main(string[] args)
=> BuildAvaloniaApp().StartWithClassicDesktopLifetime(args);
} }
} }

1
samples/interop/NativeEmbedSample/NativeEmbedSample.csproj

@ -9,7 +9,6 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="MonoMac.NetStandard" Version="0.0.4" /> <PackageReference Include="MonoMac.NetStandard" Version="0.0.4" />
<ProjectReference Include="..\..\..\src\Avalonia.Desktop\Avalonia.Desktop.csproj" />
<ProjectReference Include="..\..\..\src\Windows\Avalonia.Direct2D1\Avalonia.Direct2D1.csproj" /> <ProjectReference Include="..\..\..\src\Windows\Avalonia.Direct2D1\Avalonia.Direct2D1.csproj" />
<ProjectReference Include="..\..\..\src\Avalonia.Diagnostics\Avalonia.Diagnostics.csproj" /> <ProjectReference Include="..\..\..\src\Avalonia.Diagnostics\Avalonia.Diagnostics.csproj" />
<ProjectReference Include="..\..\..\src\Avalonia.X11\Avalonia.X11.csproj" /> <ProjectReference Include="..\..\..\src\Avalonia.X11\Avalonia.X11.csproj" />

1
src/Avalonia.Controls.DataGrid/DataGridColumn.cs

@ -665,6 +665,7 @@ namespace Avalonia.Controls
/// <param name="dataItem"> /// <param name="dataItem">
/// The data item represented by the row that contains the intended cell. /// The data item represented by the row that contains the intended cell.
/// </param> /// </param>
/// <param name="binding">When the method returns, contains the applied binding.</param>
/// <returns> /// <returns>
/// A new editing element that is bound to the column's <see cref="P:Avalonia.Controls.DataGridBoundColumn.Binding" /> property value. /// A new editing element that is bound to the column's <see cref="P:Avalonia.Controls.DataGridBoundColumn.Binding" /> property value.
/// </returns> /// </returns>

1
src/Avalonia.Controls/Primitives/IPopupHost.cs

@ -47,6 +47,7 @@ namespace Avalonia.Controls.Primitives
/// <param name="offset">The offset, in device-independent pixels.</param> /// <param name="offset">The offset, in device-independent pixels.</param>
/// <param name="anchor">The anchor point.</param> /// <param name="anchor">The anchor point.</param>
/// <param name="gravity">The popup gravity.</param> /// <param name="gravity">The popup gravity.</param>
/// <param name="constraintAdjustment">Defines how a popup position will be adjusted if the unadjusted position would result in the popup being partly constrained.</param>
/// <param name="rect"> /// <param name="rect">
/// The anchor rect. If null, the bounds of <paramref name="target"/> will be used. /// The anchor rect. If null, the bounds of <paramref name="target"/> will be used.
/// </param> /// </param>

2
src/Avalonia.Controls/Window.cs

@ -451,7 +451,7 @@ namespace Avalonia.Controls
/// </summary> /// </summary>
/// <param name="dialogResult">The dialog result.</param> /// <param name="dialogResult">The dialog result.</param>
/// <remarks> /// <remarks>
/// When the window is shown with the <see cref="ShowDialog{TResult}(IWindowImpl)"/> /// When the window is shown with the <see cref="ShowDialog{TResult}(Window)"/>
/// or <see cref="ShowDialog{TResult}(Window)"/> method, the /// or <see cref="ShowDialog{TResult}(Window)"/> method, the
/// resulting task will produce the <see cref="_dialogResult"/> value when the window /// resulting task will produce the <see cref="_dialogResult"/> value when the window
/// is closed. /// is closed.

1
src/Avalonia.Visuals/Media/Imaging/Bitmap.cs

@ -99,7 +99,6 @@ namespace Avalonia.Media.Imaging
/// Initializes a new instance of the <see cref="Bitmap"/> class. /// Initializes a new instance of the <see cref="Bitmap"/> class.
/// </summary> /// </summary>
/// <param name="format">The pixel format.</param> /// <param name="format">The pixel format.</param>
/// <param name="alphaFormat">The alpha format.</param>
/// <param name="data">The pointer to the source bytes.</param> /// <param name="data">The pointer to the source bytes.</param>
/// <param name="size">The size of the bitmap in device pixels.</param> /// <param name="size">The size of the bitmap in device pixels.</param>
/// <param name="dpi">The DPI of the bitmap.</param> /// <param name="dpi">The DPI of the bitmap.</param>

2
src/Avalonia.Visuals/Platform/IDrawingContextImpl.cs

@ -69,7 +69,7 @@ namespace Avalonia.Platform
/// If the pen is null, then no stoke is performed. If both the pen and the brush are null, then the drawing is not visible. /// If the pen is null, then no stoke is performed. If both the pen and the brush are null, then the drawing is not visible.
/// </remarks> /// </remarks>
void DrawRectangle(IBrush brush, IPen pen, RoundedRect rect, void DrawRectangle(IBrush brush, IPen pen, RoundedRect rect,
BoxShadows boxShadow = default); BoxShadows boxShadows = default);
/// <summary> /// <summary>
/// Draws text. /// Draws text.

7
src/Avalonia.Visuals/Rendering/SceneGraph/ExperimentalAcrylicNode.cs

@ -13,10 +13,9 @@ namespace Avalonia.Rendering.SceneGraph
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="RectangleNode"/> class. /// Initializes a new instance of the <see cref="RectangleNode"/> class.
/// </summary> /// </summary>
/// <param name="transform">The transform.</param> /// <param name="transform">The transform.</param>
/// <param name="material"></param>
/// <param name="rect">The rectangle to draw.</param> /// <param name="rect">The rectangle to draw.</param>
/// <param name="boxShadow">The box shadow parameters</param>
/// <param name="childScenes">Child scenes for drawing visual brushes.</param>
public ExperimentalAcrylicNode( public ExperimentalAcrylicNode(
Matrix transform, Matrix transform,
IExperimentalAcrylicMaterial material, IExperimentalAcrylicMaterial material,
@ -44,7 +43,7 @@ namespace Avalonia.Rendering.SceneGraph
/// Determines if this draw operation equals another. /// Determines if this draw operation equals another.
/// </summary> /// </summary>
/// <param name="transform">The transform of the other draw operation.</param> /// <param name="transform">The transform of the other draw operation.</param>
/// <param name="brush">The fill of the other draw operation.</param> /// <param name="material">The fill of the other draw operation.</param>
/// <param name="rect">The rectangle of the other draw operation.</param> /// <param name="rect">The rectangle of the other draw operation.</param>
/// <returns>True if the draw operations are the same, otherwise false.</returns> /// <returns>True if the draw operations are the same, otherwise false.</returns>
/// <remarks> /// <remarks>

1
src/Avalonia.Visuals/Rendering/SceneGraph/GeometryNode.cs

@ -63,7 +63,6 @@ namespace Avalonia.Rendering.SceneGraph
/// <param name="brush">The fill of the other draw operation.</param> /// <param name="brush">The fill of the other draw operation.</param>
/// <param name="pen">The stroke of the other draw operation.</param> /// <param name="pen">The stroke of the other draw operation.</param>
/// <param name="geometry">The geometry of the other draw operation.</param> /// <param name="geometry">The geometry of the other draw operation.</param>
/// <param name="boxShadow">The box shadow parameters</param>
/// <returns>True if the draw operations are the same, otherwise false.</returns> /// <returns>True if the draw operations are the same, otherwise false.</returns>
/// <remarks> /// <remarks>
/// The properties of the other draw operation are passed in as arguments to prevent /// The properties of the other draw operation are passed in as arguments to prevent

2
src/Avalonia.Visuals/Rendering/SceneGraph/RectangleNode.cs

@ -73,7 +73,7 @@ namespace Avalonia.Rendering.SceneGraph
/// <param name="brush">The fill of the other draw operation.</param> /// <param name="brush">The fill of the other draw operation.</param>
/// <param name="pen">The stroke of the other draw operation.</param> /// <param name="pen">The stroke of the other draw operation.</param>
/// <param name="rect">The rectangle of the other draw operation.</param> /// <param name="rect">The rectangle of the other draw operation.</param>
/// <param name="boxShadow">The box shadow parameters of the other draw operation</param> /// <param name="boxShadows">The box shadow parameters of the other draw operation</param>
/// <returns>True if the draw operations are the same, otherwise false.</returns> /// <returns>True if the draw operations are the same, otherwise false.</returns>
/// <remarks> /// <remarks>
/// The properties of the other draw operation are passed in as arguments to prevent /// The properties of the other draw operation are passed in as arguments to prevent

16
src/Linux/Avalonia.LinuxFramebuffer/Output/Drm.cs

@ -113,22 +113,22 @@ namespace Avalonia.LinuxFramebuffer.Output
[StructLayout(LayoutKind.Sequential)] [StructLayout(LayoutKind.Sequential)]
public struct drmModeConnector { public struct drmModeConnector {
public uint connector_id; public uint connector_id;
public uint encoder_id; /**< Encoder currently connected to */ public uint encoder_id; // Encoder currently connected to
public uint connector_type; public uint connector_type;
public uint connector_type_id; public uint connector_type_id;
public DrmModeConnection connection; public DrmModeConnection connection;
public uint mmWidth, mmHeight; /**< HxW in millimeters */ public uint mmWidth, mmHeight; // HxW in millimeters
public DrmModeSubPixel subpixel; public DrmModeSubPixel subpixel;
public int count_modes; public int count_modes;
public drmModeModeInfo* modes; public drmModeModeInfo* modes;
public int count_props; public int count_props;
public uint *props; /**< List of property ids */ public uint *props; // List of property ids
public ulong *prop_values; /**< List of property values */ public ulong *prop_values; // List of property values
public int count_encoders; public int count_encoders;
public uint *encoders; /**< List of encoder ids */ public uint *encoders; //List of encoder ids
} }
[StructLayout(LayoutKind.Sequential)] [StructLayout(LayoutKind.Sequential)]
@ -143,14 +143,14 @@ namespace Avalonia.LinuxFramebuffer.Output
[StructLayout(LayoutKind.Sequential)] [StructLayout(LayoutKind.Sequential)]
public struct drmModeCrtc { public struct drmModeCrtc {
public uint crtc_id; public uint crtc_id;
public uint buffer_id; /**< FB id to connect to 0 = disconnect */ public uint buffer_id; // FB id to connect to 0 = disconnect
public uint x, y; /**< Position on the framebuffer */ public uint x, y; // Position on the framebuffer
public uint width, height; public uint width, height;
public int mode_valid; public int mode_valid;
public drmModeModeInfo mode; public drmModeModeInfo mode;
public int gamma_size; /**< Number of gamma stops */ public int gamma_size; // Number of gamma stops
} }

31
src/Markup/Avalonia.Markup.Xaml.Loader/AvaloniaRuntimeXamlLoader.cs

@ -3,7 +3,6 @@ using System.IO;
using System.Reflection; using System.Reflection;
using System.Text; using System.Text;
using Avalonia.Markup.Xaml.XamlIl; using Avalonia.Markup.Xaml.XamlIl;
// ReSharper disable CheckNamespace
namespace Avalonia.Markup.Xaml namespace Avalonia.Markup.Xaml
{ {
@ -13,10 +12,10 @@ namespace Avalonia.Markup.Xaml
/// Loads XAML from a string. /// Loads XAML from a string.
/// </summary> /// </summary>
/// <param name="xaml">The string containing the XAML.</param> /// <param name="xaml">The string containing the XAML.</param>
/// <param name="localAssembly">Default assembly for clr-namespace:</param> /// <param name="localAssembly">Default assembly for clr-namespace:.</param>
/// <param name="rootInstance"> /// <param name="rootInstance">The optional instance into which the XAML should be loaded.</param>
/// The optional instance into which the XAML should be loaded. /// <param name="uri">The URI of the XAML being loaded.</param>
/// </param> /// <param name="designMode">Indicates whether the XAML is being loaded in design mode.</param>
/// <returns>The loaded object.</returns> /// <returns>The loaded object.</returns>
public static object Load(string xaml, Assembly localAssembly = null, object rootInstance = null, Uri uri = null, bool designMode = false) public static object Load(string xaml, Assembly localAssembly = null, object rootInstance = null, Uri uri = null, bool designMode = false)
{ {
@ -28,13 +27,35 @@ namespace Avalonia.Markup.Xaml
} }
} }
/// <summary>
/// Loads XAML from a stream.
/// </summary>
/// <param name="stream">The stream containing the XAML.</param>
/// <param name="localAssembly">Default assembly for clr-namespace:</param>
/// <param name="rootInstance">The optional instance into which the XAML should be loaded.</param>
/// <param name="uri">The URI of the XAML being loaded.</param>
/// <param name="designMode">Indicates whether the XAML is being loaded in design mode.</param>
/// <returns>The loaded object.</returns>
public static object Load(Stream stream, Assembly localAssembly, object rootInstance = null, Uri uri = null, public static object Load(Stream stream, Assembly localAssembly, object rootInstance = null, Uri uri = null,
bool designMode = false) bool designMode = false)
=> AvaloniaXamlIlRuntimeCompiler.Load(stream, localAssembly, rootInstance, uri, designMode); => AvaloniaXamlIlRuntimeCompiler.Load(stream, localAssembly, rootInstance, uri, designMode);
/// <summary>
/// Parse XAML from a string.
/// </summary>
/// <param name="xaml">The string containing the XAML.</param>
/// <param name="localAssembly">Default assembly for clr-namespace:.</param>
/// <returns>The loaded object.</returns>
public static object Parse(string xaml, Assembly localAssembly = null) public static object Parse(string xaml, Assembly localAssembly = null)
=> Load(xaml, localAssembly); => Load(xaml, localAssembly);
/// <summary>
/// Parse XAML from a string.
/// </summary>
/// <typeparam name="T">The type of the returned object.</typeparam>
/// <param name="xaml">>The string containing the XAML.</param>
/// <param name="localAssembly">>Default assembly for clr-namespace:.</param>
/// <returns>The loaded object.</returns>
public static T Parse<T>(string xaml, Assembly localAssembly = null) public static T Parse<T>(string xaml, Assembly localAssembly = null)
=> (T)Parse(xaml, localAssembly); => (T)Parse(xaml, localAssembly);

1
src/Windows/Avalonia.Direct2D1/Media/DrawingContextImpl.cs

@ -323,7 +323,6 @@ namespace Avalonia.Direct2D1.Media
/// </summary> /// </summary>
/// <param name="foreground">The foreground.</param> /// <param name="foreground">The foreground.</param>
/// <param name="glyphRun">The glyph run.</param> /// <param name="glyphRun">The glyph run.</param>
/// <param name="baselineOrigin"></param>
public void DrawGlyphRun(IBrush foreground, GlyphRun glyphRun) public void DrawGlyphRun(IBrush foreground, GlyphRun glyphRun)
{ {
using (var brush = CreateBrush(foreground, glyphRun.Size)) using (var brush = CreateBrush(foreground, glyphRun.Size))

2
src/Windows/Avalonia.Win32.Interop/Avalonia.Win32.Interop.csproj

@ -2,7 +2,7 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>net461</TargetFramework> <TargetFramework>net461</TargetFramework>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks> <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<ExtrasEnableWpfProjectSetup>true</ExtrasEnableWpfProjectSetup> <UseWpf>true</UseWpf>
<ExtrasEnableImplicitWinFormsReferences>true</ExtrasEnableImplicitWinFormsReferences> <ExtrasEnableImplicitWinFormsReferences>true</ExtrasEnableImplicitWinFormsReferences>
<UseDirect3D9>true</UseDirect3D9> <UseDirect3D9>true</UseDirect3D9>
<PackageId>Avalonia.Win32.Interoperability</PackageId> <PackageId>Avalonia.Win32.Interoperability</PackageId>

1
src/Windows/Avalonia.Win32/Interop/TaskBarList.cs

@ -13,6 +13,7 @@ namespace Avalonia.Win32.Interop
/// <summary> /// <summary>
/// Ported from https://github.com/chromium/chromium/blob/master/ui/views/win/fullscreen_handler.cc /// Ported from https://github.com/chromium/chromium/blob/master/ui/views/win/fullscreen_handler.cc
/// </summary> /// </summary>
/// <param name="hwnd">The window handle.</param>
/// <param name="fullscreen">Fullscreen state.</param> /// <param name="fullscreen">Fullscreen state.</param>
public static unsafe void MarkFullscreen(IntPtr hwnd, bool fullscreen) public static unsafe void MarkFullscreen(IntPtr hwnd, bool fullscreen)
{ {

8
tests/Avalonia.Animation.UnitTests/AnimatableTests.cs

@ -113,7 +113,7 @@ namespace Avalonia.Animation.UnitTests
It.IsAny<IClock>(), It.IsAny<IClock>(),
1.0, 1.0,
0.5)); 0.5));
target.ResetCalls(); target.Invocations.Clear();
control.SetValue(Visual.OpacityProperty, 0.8, BindingPriority.StyleTrigger); control.SetValue(Visual.OpacityProperty, 0.8, BindingPriority.StyleTrigger);
@ -135,7 +135,7 @@ namespace Avalonia.Animation.UnitTests
target.Setup(x => x.Apply(control, It.IsAny<IClock>(), 1.0, 0.5)).Returns(sub.Object); target.Setup(x => x.Apply(control, It.IsAny<IClock>(), 1.0, 0.5)).Returns(sub.Object);
control.Opacity = 0.5; control.Opacity = 0.5;
sub.ResetCalls(); sub.Invocations.Clear();
control.Opacity = 0.4; control.Opacity = 0.4;
sub.Verify(x => x.Dispose()); sub.Verify(x => x.Dispose());
@ -158,7 +158,7 @@ namespace Avalonia.Animation.UnitTests
control.Opacity = 0.5; control.Opacity = 0.5;
Assert.Equal(0.9, control.Opacity); Assert.Equal(0.9, control.Opacity);
target.ResetCalls(); target.Invocations.Clear();
control.Opacity = 0.4; control.Opacity = 0.4;
@ -182,7 +182,7 @@ namespace Avalonia.Animation.UnitTests
It.IsAny<IClock>(), It.IsAny<IClock>(),
1.0, 1.0,
0.5)); 0.5));
target.ResetCalls(); target.Invocations.Clear();
var root = (TestRoot)control.Parent; var root = (TestRoot)control.Parent;
root.Child = null; root.Child = null;

4
tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_Metadata.cs

@ -67,7 +67,7 @@ namespace Avalonia.Base.UnitTests
public static readonly DirectProperty<Class1, string> DirectProperty = public static readonly DirectProperty<Class1, string> DirectProperty =
AvaloniaProperty.RegisterDirect<Class1, string>("Styled", o => o.Direct, unsetValue: "foo"); AvaloniaProperty.RegisterDirect<Class1, string>("Styled", o => o.Direct, unsetValue: "foo");
private string _direct; private string _direct = default;
public string Direct public string Direct
{ {
@ -92,7 +92,7 @@ namespace Avalonia.Base.UnitTests
public static readonly DirectProperty<Class3, string> DirectProperty = public static readonly DirectProperty<Class3, string> DirectProperty =
Class1.DirectProperty.AddOwner<Class3>(o => o.Direct, unsetValue: "baz"); Class1.DirectProperty.AddOwner<Class3>(o => o.Direct, unsetValue: "baz");
private string _direct; private string _direct = default;
static Class3() static Class3()
{ {

4
tests/Avalonia.Base.UnitTests/Collections/AvaloniaListExtenionsTests.cs

@ -6,10 +6,12 @@ namespace Avalonia.Base.UnitTests.Collections
{ {
public class AvaloniaListExtenionsTests public class AvaloniaListExtenionsTests
{ {
#pragma warning disable CS0618 // Type or member is obsolete
[Fact] [Fact]
public void CreateDerivedList_Creates_Initial_Items() public void CreateDerivedList_Creates_Initial_Items()
{ {
var source = new AvaloniaList<int>(new[] { 0, 1, 2, 3 }); var source = new AvaloniaList<int>(new[] { 0, 1, 2, 3 });
var target = source.CreateDerivedList(x => new Wrapper(x)); var target = source.CreateDerivedList(x => new Wrapper(x));
var result = target.Select(x => x.Value).ToList(); var result = target.Select(x => x.Value).ToList();
@ -137,6 +139,8 @@ namespace Avalonia.Base.UnitTests.Collections
Assert.Equal(source, result); Assert.Equal(source, result);
} }
#pragma warning restore CS0618 // Type or member is obsolete
private class Wrapper private class Wrapper
{ {

2
tests/Avalonia.Base.UnitTests/Data/Core/BindingExpressionTests.cs

@ -356,7 +356,7 @@ namespace Avalonia.Base.UnitTests.Data.Core
} }
[Fact] [Fact]
public async Task Null_Value_Should_Use_TargetNullValue() public void Null_Value_Should_Use_TargetNullValue()
{ {
var data = new Class1 { StringValue = "foo" }; var data = new Class1 { StringValue = "foo" };

14
tests/Avalonia.Base.UnitTests/Data/DefaultValueConverterTests.cs

@ -1,12 +1,11 @@
using System;
using System.ComponentModel;
using System.Globalization; using System.Globalization;
using Avalonia.Controls;
using Avalonia.Data;
using Xunit;
using System.Windows.Input; using System.Windows.Input;
using System; using Avalonia.Data;
using Avalonia.Data.Converters; using Avalonia.Data.Converters;
using Avalonia.Layout; using Avalonia.Layout;
using System.ComponentModel; using Xunit;
namespace Avalonia.Base.UnitTests.Data.Converters namespace Avalonia.Base.UnitTests.Data.Converters
{ {
@ -251,6 +250,11 @@ namespace Avalonia.Base.UnitTests.Data.Converters
{ {
return obj is CustomType other && this.Value == other.Value; return obj is CustomType other && this.Value == other.Value;
} }
public override int GetHashCode()
{
return 8399587^Value.GetHashCode();
}
} }
private class CustomTypeConverter : TypeConverter private class CustomTypeConverter : TypeConverter

3
tests/Avalonia.Benchmarks/NullRenderer.cs

@ -9,8 +9,9 @@ namespace Avalonia.Benchmarks
{ {
public bool DrawFps { get; set; } public bool DrawFps { get; set; }
public bool DrawDirtyRects { get; set; } public bool DrawDirtyRects { get; set; }
#pragma warning disable CS0067
public event EventHandler<SceneInvalidatedEventArgs> SceneInvalidated; public event EventHandler<SceneInvalidatedEventArgs> SceneInvalidated;
#pragma warning restore CS0067
public void AddDirty(IVisual visual) public void AddDirty(IVisual visual)
{ {
} }

3
tests/Avalonia.Benchmarks/NullThreadingPlatform.cs

@ -23,6 +23,9 @@ namespace Avalonia.Benchmarks
public bool CurrentThreadIsLoopThread => true; public bool CurrentThreadIsLoopThread => true;
#pragma warning disable CS0067
public event Action<DispatcherPriority?> Signaled; public event Action<DispatcherPriority?> Signaled;
#pragma warning restore CS0067
} }
} }

2
tests/Avalonia.Controls.UnitTests/BorderTests.cs

@ -54,7 +54,7 @@ namespace Avalonia.Controls.UnitTests
var root = new TestRoot(target); var root = new TestRoot(target);
var renderer = Mock.Get(root.Renderer); var renderer = Mock.Get(root.Renderer);
renderer.ResetCalls(); renderer.Invocations.Clear();
((SolidColorBrush)target.Background).Color = Colors.Green; ((SolidColorBrush)target.Background).Color = Colors.Green;

2
tests/Avalonia.Controls.UnitTests/PanelTests.cs

@ -127,7 +127,7 @@ namespace Avalonia.Controls.UnitTests
var root = new TestRoot(target); var root = new TestRoot(target);
var renderer = Mock.Get(root.Renderer); var renderer = Mock.Get(root.Renderer);
renderer.ResetCalls(); renderer.Invocations.Clear();
((SolidColorBrush)target.Background).Color = Colors.Green; ((SolidColorBrush)target.Background).Color = Colors.Green;

10
tests/Avalonia.Controls.UnitTests/Platform/DefaultMenuInteractionHandlerTests.cs

@ -503,26 +503,26 @@ namespace Avalonia.Controls.UnitTests.Platform
target.PointerEnter(item, enter); target.PointerEnter(item, enter);
Assert.True(timer.ActionIsQueued); Assert.True(timer.ActionIsQueued);
Mock.Get(parentItem).VerifySet(x => x.SelectedItem = item); Mock.Get(parentItem).VerifySet(x => x.SelectedItem = item);
Mock.Get(parentItem).ResetCalls(); Mock.Get(parentItem).Invocations.Clear();
// SubMenu shown after a delay. // SubMenu shown after a delay.
timer.Pulse(); timer.Pulse();
Mock.Get(item).Verify(x => x.Open()); Mock.Get(item).Verify(x => x.Open());
Mock.Get(item).SetupGet(x => x.IsSubMenuOpen).Returns(true); Mock.Get(item).SetupGet(x => x.IsSubMenuOpen).Returns(true);
Mock.Get(item).ResetCalls(); Mock.Get(item).Invocations.Clear();
// Pointer briefly exits item, but submenu remains open. // Pointer briefly exits item, but submenu remains open.
target.PointerLeave(item, leave); target.PointerLeave(item, leave);
Mock.Get(item).Verify(x => x.Close(), Times.Never); Mock.Get(item).Verify(x => x.Close(), Times.Never);
Mock.Get(item).ResetCalls(); Mock.Get(item).Invocations.Clear();
// Pointer enters child item; is selected. // Pointer enters child item; is selected.
enter.Source = childItem; enter.Source = childItem;
target.PointerEnter(childItem, enter); target.PointerEnter(childItem, enter);
Mock.Get(item).VerifySet(x => x.SelectedItem = childItem); Mock.Get(item).VerifySet(x => x.SelectedItem = childItem);
Mock.Get(parentItem).VerifySet(x => x.SelectedItem = item); Mock.Get(parentItem).VerifySet(x => x.SelectedItem = item);
Mock.Get(item).ResetCalls(); Mock.Get(item).Invocations.Clear();
Mock.Get(parentItem).ResetCalls(); Mock.Get(parentItem).Invocations.Clear();
} }
[Fact] [Fact]

2
tests/Avalonia.Controls.UnitTests/Presenters/ContentPresenterTests_Standalone.cs

@ -212,7 +212,7 @@ namespace Avalonia.Controls.UnitTests.Presenters
var root = new TestRoot(target); var root = new TestRoot(target);
var renderer = Mock.Get(root.Renderer); var renderer = Mock.Get(root.Renderer);
renderer.ResetCalls(); renderer.Invocations.Clear();
((SolidColorBrush)target.Background).Color = Colors.Green; ((SolidColorBrush)target.Background).Color = Colors.Green;

4
tests/Avalonia.Controls.UnitTests/TextBlockTests.cs

@ -37,7 +37,7 @@ namespace Avalonia.Controls.UnitTests
var root = new TestRoot(target); var root = new TestRoot(target);
var renderer = Mock.Get(root.Renderer); var renderer = Mock.Get(root.Renderer);
renderer.ResetCalls(); renderer.Invocations.Clear();
((SolidColorBrush)target.Background).Color = Colors.Green; ((SolidColorBrush)target.Background).Color = Colors.Green;
@ -54,7 +54,7 @@ namespace Avalonia.Controls.UnitTests
var root = new TestRoot(target); var root = new TestRoot(target);
var renderer = Mock.Get(root.Renderer); var renderer = Mock.Get(root.Renderer);
renderer.ResetCalls(); renderer.Invocations.Clear();
((SolidColorBrush)target.Foreground).Color = Colors.Green; ((SolidColorBrush)target.Foreground).Color = Colors.Green;

13
tests/Avalonia.DesignerSupport.TestApp/App.xaml.cs

@ -1,8 +1,4 @@
using System; using Avalonia.Controls.ApplicationLifetimes;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml;
namespace Avalonia.DesignerSupport.TestApp namespace Avalonia.DesignerSupport.TestApp
@ -13,5 +9,12 @@ namespace Avalonia.DesignerSupport.TestApp
{ {
AvaloniaXamlLoader.Load(this); AvaloniaXamlLoader.Load(this);
} }
public override void OnFrameworkInitializationCompleted()
{
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
desktop.MainWindow = new MainWindow();
base.OnFrameworkInitializationCompleted();
}
} }
} }

20
tests/Avalonia.DesignerSupport.TestApp/Program.cs

@ -1,24 +1,14 @@
using System; namespace Avalonia.DesignerSupport.TestApp
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Avalonia.Controls;
namespace Avalonia.DesignerSupport.TestApp
{ {
static class Program static class Program
{ {
/// <summary> /// <summary>
/// The main entry point for the application. /// The main entry point for the application.
/// </summary> /// </summary>
static void Main() public static int Main(string[] args)
{ => BuildAvaloniaApp().StartWithClassicDesktopLifetime(args);
BuildAvaloniaApp().Start<MainWindow>();
}
private static AppBuilder BuildAvaloniaApp() public static AppBuilder BuildAvaloniaApp()
{ => AppBuilder.Configure<App>().UsePlatformDetect();
return AppBuilder.Configure<App>().UsePlatformDetect();
}
} }
} }

6
tests/Avalonia.Layout.UnitTests/LayoutableTests.cs

@ -112,7 +112,7 @@ namespace Avalonia.Layout.UnitTests
root.Measure(Size.Infinity); root.Measure(Size.Infinity);
root.Arrange(new Rect(root.DesiredSize)); root.Arrange(new Rect(root.DesiredSize));
target.ResetCalls(); target.Invocations.Clear();
control.InvalidateMeasure(); control.InvalidateMeasure();
control.InvalidateMeasure(); control.InvalidateMeasure();
@ -133,7 +133,7 @@ namespace Avalonia.Layout.UnitTests
root.Measure(Size.Infinity); root.Measure(Size.Infinity);
root.Arrange(new Rect(root.DesiredSize)); root.Arrange(new Rect(root.DesiredSize));
target.ResetCalls(); target.Invocations.Clear();
control.InvalidateArrange(); control.InvalidateArrange();
control.InvalidateArrange(); control.InvalidateArrange();
@ -163,7 +163,7 @@ namespace Avalonia.Layout.UnitTests
Assert.False(control.IsMeasureValid); Assert.False(control.IsMeasureValid);
Assert.True(root.IsMeasureValid); Assert.True(root.IsMeasureValid);
target.ResetCalls(); target.Invocations.Clear();
root.Child = control; root.Child = control;

2
tests/Avalonia.Layout.UnitTests/LayoutableTests_EffectiveViewportChanged.cs

@ -15,7 +15,9 @@ namespace Avalonia.Layout.UnitTests
[Fact] [Fact]
public async Task EffectiveViewportChanged_Not_Raised_When_Control_Added_To_Tree() public async Task EffectiveViewportChanged_Not_Raised_When_Control_Added_To_Tree()
{ {
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously
await RunOnUIThread.Execute(async () => await RunOnUIThread.Execute(async () =>
#pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously
{ {
var root = CreateRoot(); var root = CreateRoot();
var target = new Canvas(); var target = new Canvas();

7
tests/Avalonia.LeakTests/ControlTests.cs

@ -460,7 +460,7 @@ namespace Avalonia.LeakTests
AttachShowAndDetachContextMenu(window); AttachShowAndDetachContextMenu(window);
Mock.Get(window.PlatformImpl).ResetCalls(); Mock.Get(window.PlatformImpl).Invocations.Clear();
dotMemory.Check(memory => dotMemory.Check(memory =>
Assert.Equal(initialMenuCount, memory.GetObjects(where => where.Type.Is<ContextMenu>()).ObjectsCount)); Assert.Equal(initialMenuCount, memory.GetObjects(where => where.Type.Is<ContextMenu>()).ObjectsCount));
dotMemory.Check(memory => dotMemory.Check(memory =>
@ -505,7 +505,7 @@ namespace Avalonia.LeakTests
BuildAndShowContextMenu(window); BuildAndShowContextMenu(window);
BuildAndShowContextMenu(window); BuildAndShowContextMenu(window);
Mock.Get(window.PlatformImpl).ResetCalls(); Mock.Get(window.PlatformImpl).Invocations.Clear();
dotMemory.Check(memory => dotMemory.Check(memory =>
Assert.Equal(initialMenuCount, memory.GetObjects(where => where.Type.Is<ContextMenu>()).ObjectsCount)); Assert.Equal(initialMenuCount, memory.GetObjects(where => where.Type.Is<ContextMenu>()).ObjectsCount));
dotMemory.Check(memory => dotMemory.Check(memory =>
@ -601,8 +601,9 @@ namespace Avalonia.LeakTests
{ {
public bool DrawFps { get; set; } public bool DrawFps { get; set; }
public bool DrawDirtyRects { get; set; } public bool DrawDirtyRects { get; set; }
#pragma warning disable CS0067
public event EventHandler<SceneInvalidatedEventArgs> SceneInvalidated; public event EventHandler<SceneInvalidatedEventArgs> SceneInvalidated;
#pragma warning restore CS0067
public void AddDirty(IVisual visual) public void AddDirty(IVisual visual)
{ {
} }

15
tests/Avalonia.Markup.UnitTests/Parsers/ExpressionObserverBuilderTests_Negation.cs

@ -168,10 +168,23 @@ namespace Avalonia.Markup.UnitTests.Parsers
private class Test : INotifyDataErrorInfo private class Test : INotifyDataErrorInfo
{ {
private string _dataValidationError;
public bool Foo { get; set; } public bool Foo { get; set; }
public object Bar { get; set; } public object Bar { get; set; }
public string DataValidationError { get; set; } public string DataValidationError
{
get => _dataValidationError;
set
{
if (value == _dataValidationError)
return;
_dataValidationError = value;
ErrorsChanged?
.Invoke(this, new DataErrorsChangedEventArgs(nameof(DataValidationError)));
}
}
public bool HasErrors => !string.IsNullOrWhiteSpace(DataValidationError); public bool HasErrors => !string.IsNullOrWhiteSpace(DataValidationError);
public event EventHandler<DataErrorsChangedEventArgs> ErrorsChanged; public event EventHandler<DataErrorsChangedEventArgs> ErrorsChanged;

2
tests/Avalonia.RenderTests/Media/BitmapTests.cs

@ -102,7 +102,9 @@ namespace Avalonia.Direct2D1.RenderTests.Media
[InlineData(PixelFormat.Bgra8888), InlineData(PixelFormat.Rgba8888)] [InlineData(PixelFormat.Bgra8888), InlineData(PixelFormat.Rgba8888)]
public void WriteableBitmapShouldBeUsable(PixelFormat fmt) public void WriteableBitmapShouldBeUsable(PixelFormat fmt)
{ {
#pragma warning disable CS0618 // Type or member is obsolete
var writeableBitmap = new WriteableBitmap(new PixelSize(256, 256), new Vector(96, 96), fmt); var writeableBitmap = new WriteableBitmap(new PixelSize(256, 256), new Vector(96, 96), fmt);
#pragma warning restore CS0618 // Type or member is obsolete
var data = new int[256 * 256]; var data = new int[256 * 256];
for (int y = 0; y < 256; y++) for (int y = 0; y < 256; y++)

12
tests/Avalonia.Styling.UnitTests/ResourceDictionaryTests.cs

@ -108,7 +108,7 @@ namespace Avalonia.Styling.UnitTests
var target = new ResourceDictionary { { "foo", "bar" } }; var target = new ResourceDictionary { { "foo", "bar" } };
((IResourceProvider)target).AddOwner(host.Object); ((IResourceProvider)target).AddOwner(host.Object);
host.ResetCalls(); host.Invocations.Clear();
((IResourceProvider)target).RemoveOwner(host.Object); ((IResourceProvider)target).RemoveOwner(host.Object);
host.Verify(x => x.NotifyHostedResourcesChanged(It.IsAny<ResourcesChangedEventArgs>())); host.Verify(x => x.NotifyHostedResourcesChanged(It.IsAny<ResourcesChangedEventArgs>()));
@ -120,7 +120,7 @@ namespace Avalonia.Styling.UnitTests
var host = new Mock<IResourceHost>(); var host = new Mock<IResourceHost>();
var target = new ResourceDictionary(host.Object); var target = new ResourceDictionary(host.Object);
host.ResetCalls(); host.Invocations.Clear();
target.Add("foo", "bar"); target.Add("foo", "bar");
host.Verify(x => x.NotifyHostedResourcesChanged(It.IsAny<ResourcesChangedEventArgs>())); host.Verify(x => x.NotifyHostedResourcesChanged(It.IsAny<ResourcesChangedEventArgs>()));
@ -132,7 +132,7 @@ namespace Avalonia.Styling.UnitTests
var host = new Mock<IResourceHost>(); var host = new Mock<IResourceHost>();
var target = new ResourceDictionary(host.Object); var target = new ResourceDictionary(host.Object);
host.ResetCalls(); host.Invocations.Clear();
target.MergedDictionaries.Add(new ResourceDictionary target.MergedDictionaries.Add(new ResourceDictionary
{ {
{ "foo", "bar" }, { "foo", "bar" },
@ -149,7 +149,7 @@ namespace Avalonia.Styling.UnitTests
var host = new Mock<IResourceHost>(); var host = new Mock<IResourceHost>();
var target = new ResourceDictionary(host.Object); var target = new ResourceDictionary(host.Object);
host.ResetCalls(); host.Invocations.Clear();
target.MergedDictionaries.Add(new ResourceDictionary()); target.MergedDictionaries.Add(new ResourceDictionary());
host.Verify( host.Verify(
@ -169,7 +169,7 @@ namespace Avalonia.Styling.UnitTests
} }
}; };
host.ResetCalls(); host.Invocations.Clear();
target.MergedDictionaries.RemoveAt(0); target.MergedDictionaries.RemoveAt(0);
host.Verify( host.Verify(
@ -189,7 +189,7 @@ namespace Avalonia.Styling.UnitTests
} }
}; };
host.ResetCalls(); host.Invocations.Clear();
((IResourceDictionary)target.MergedDictionaries[0]).Add("foo", "bar"); ((IResourceDictionary)target.MergedDictionaries[0]).Add("foo", "bar");
host.Verify( host.Verify(

75
tests/Avalonia.Styling.UnitTests/SelectorTests_Child.cs

@ -1,12 +1,7 @@
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Reactive;
using System.Reactive.Linq; using System.Reactive.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Avalonia.Collections;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Data;
using Avalonia.LogicalTree; using Avalonia.LogicalTree;
using Xunit; using Xunit;
@ -85,76 +80,6 @@ namespace Avalonia.Styling.UnitTests
get => Parent; get => Parent;
set => ((ISetLogicalParent)this).SetParent(value); set => ((ISetLogicalParent)this).SetParent(value);
} }
public void ClearValue(AvaloniaProperty property)
{
throw new NotImplementedException();
}
public void ClearValue<T>(AvaloniaProperty<T> property)
{
throw new NotImplementedException();
}
public void AddInheritanceChild(IAvaloniaObject child)
{
throw new NotImplementedException();
}
public void RemoveInheritanceChild(IAvaloniaObject child)
{
throw new NotImplementedException();
}
public void InheritanceParentChanged<T>(StyledPropertyBase<T> property, IAvaloniaObject oldParent, IAvaloniaObject newParent)
{
throw new NotImplementedException();
}
public void InheritedPropertyChanged<T>(AvaloniaProperty<T> property, Optional<T> oldValue, Optional<T> newValue)
{
throw new NotImplementedException();
}
public void ClearValue<T>(StyledPropertyBase<T> property)
{
throw new NotImplementedException();
}
public void ClearValue<T>(DirectPropertyBase<T> property)
{
throw new NotImplementedException();
}
public T GetValue<T>(StyledPropertyBase<T> property)
{
throw new NotImplementedException();
}
public T GetValue<T>(DirectPropertyBase<T> property)
{
throw new NotImplementedException();
}
public void SetValue<T>(StyledPropertyBase<T> property, T value, BindingPriority priority = BindingPriority.LocalValue)
{
throw new NotImplementedException();
}
public void SetValue<T>(DirectPropertyBase<T> property, T value)
{
throw new NotImplementedException();
}
public IDisposable Bind<T>(StyledPropertyBase<T> property, IObservable<BindingValue<T>> source, BindingPriority priority = BindingPriority.LocalValue)
{
throw new NotImplementedException();
}
public IDisposable Bind<T>(DirectPropertyBase<T> property, IObservable<BindingValue<T>> source)
{
throw new NotImplementedException();
}
} }
public class TestLogical1 : TestLogical public class TestLogical1 : TestLogical

74
tests/Avalonia.Styling.UnitTests/SelectorTests_Descendent.cs

@ -1,11 +1,7 @@
using System;
using System.Linq; using System.Linq;
using System.Reactive;
using System.Reactive.Linq; using System.Reactive.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Avalonia.Collections;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Data;
using Avalonia.LogicalTree; using Avalonia.LogicalTree;
using Xunit; using Xunit;
@ -115,76 +111,6 @@ namespace Avalonia.Styling.UnitTests
get => Parent; get => Parent;
set => ((ISetLogicalParent)this).SetParent(value); set => ((ISetLogicalParent)this).SetParent(value);
} }
public void ClearValue(AvaloniaProperty property)
{
throw new NotImplementedException();
}
public void ClearValue<T>(AvaloniaProperty<T> property)
{
throw new NotImplementedException();
}
public void AddInheritanceChild(IAvaloniaObject child)
{
throw new NotImplementedException();
}
public void RemoveInheritanceChild(IAvaloniaObject child)
{
throw new NotImplementedException();
}
public void InheritanceParentChanged<T>(StyledPropertyBase<T> property, IAvaloniaObject oldParent, IAvaloniaObject newParent)
{
throw new NotImplementedException();
}
public void InheritedPropertyChanged<T>(AvaloniaProperty<T> property, Optional<T> oldValue, Optional<T> newValue)
{
throw new NotImplementedException();
}
public void ClearValue<T>(StyledPropertyBase<T> property)
{
throw new NotImplementedException();
}
public void ClearValue<T>(DirectPropertyBase<T> property)
{
throw new NotImplementedException();
}
public T GetValue<T>(StyledPropertyBase<T> property)
{
throw new NotImplementedException();
}
public T GetValue<T>(DirectPropertyBase<T> property)
{
throw new NotImplementedException();
}
public void SetValue<T>(StyledPropertyBase<T> property, T value, BindingPriority priority = BindingPriority.LocalValue)
{
throw new NotImplementedException();
}
public void SetValue<T>(DirectPropertyBase<T> property, T value)
{
throw new NotImplementedException();
}
public IDisposable Bind<T>(StyledPropertyBase<T> property, IObservable<BindingValue<T>> source, BindingPriority priority = BindingPriority.LocalValue)
{
throw new NotImplementedException();
}
public IDisposable Bind<T>(DirectPropertyBase<T> property, IObservable<BindingValue<T>> source)
{
throw new NotImplementedException();
}
} }
public class TestLogical1 : TestLogical public class TestLogical1 : TestLogical

2
tests/Avalonia.Styling.UnitTests/StyleTests.cs

@ -443,7 +443,7 @@ namespace Avalonia.Styling.UnitTests
var resources = new Mock<IResourceDictionary>(); var resources = new Mock<IResourceDictionary>();
target.Resources = resources.Object; target.Resources = resources.Object;
host.ResetCalls(); host.Invocations.Clear();
((IResourceProvider)target).AddOwner(host.Object); ((IResourceProvider)target).AddOwner(host.Object);
resources.Verify(x => x.AddOwner(host.Object), Times.Once); resources.Verify(x => x.AddOwner(host.Object), Times.Once);
} }

8
tests/Avalonia.Styling.UnitTests/StylesTests.cs

@ -15,7 +15,7 @@ namespace Avalonia.Styling.UnitTests
var style = new Mock<IStyle>(); var style = new Mock<IStyle>();
var rp = style.As<IResourceProvider>(); var rp = style.As<IResourceProvider>();
host.ResetCalls(); host.Invocations.Clear();
target.Add(style.Object); target.Add(style.Object);
rp.Verify(x => x.AddOwner(host.Object)); rp.Verify(x => x.AddOwner(host.Object));
@ -29,7 +29,7 @@ namespace Avalonia.Styling.UnitTests
var style = new Mock<IStyle>(); var style = new Mock<IStyle>();
var rp = style.As<IResourceProvider>(); var rp = style.As<IResourceProvider>();
host.ResetCalls(); host.Invocations.Clear();
target.Add(style.Object); target.Add(style.Object);
target.Remove(style.Object); target.Remove(style.Object);
@ -58,7 +58,7 @@ namespace Avalonia.Styling.UnitTests
var resources = new Mock<IResourceDictionary>(); var resources = new Mock<IResourceDictionary>();
target.Resources = resources.Object; target.Resources = resources.Object;
host.ResetCalls(); host.Invocations.Clear();
((IResourceProvider)target).AddOwner(host.Object); ((IResourceProvider)target).AddOwner(host.Object);
resources.Verify(x => x.AddOwner(host.Object), Times.Once); resources.Verify(x => x.AddOwner(host.Object), Times.Once);
} }
@ -87,7 +87,7 @@ namespace Avalonia.Styling.UnitTests
var resourceProvider = style.As<IResourceProvider>(); var resourceProvider = style.As<IResourceProvider>();
target.Add(style.Object); target.Add(style.Object);
host.ResetCalls(); host.Invocations.Clear();
((IResourceProvider)target).AddOwner(host.Object); ((IResourceProvider)target).AddOwner(host.Object);
resourceProvider.Verify(x => x.AddOwner(host.Object), Times.Once); resourceProvider.Verify(x => x.AddOwner(host.Object), Times.Once);
} }

2
tests/Avalonia.Visuals.UnitTests/Rendering/DeferredRendererTests.cs

@ -756,7 +756,7 @@ namespace Avalonia.Visuals.UnitTests.Rendering
private void IgnoreFirstFrame(IRenderLoopTask task, Mock<ISceneBuilder> sceneBuilder) private void IgnoreFirstFrame(IRenderLoopTask task, Mock<ISceneBuilder> sceneBuilder)
{ {
RunFrame(task); RunFrame(task);
sceneBuilder.ResetCalls(); sceneBuilder.Invocations.Clear();
} }
private void RunFrame(IRenderLoopTask task) private void RunFrame(IRenderLoopTask task)

2
tests/Avalonia.Visuals.UnitTests/VisualTests.cs

@ -173,7 +173,7 @@ namespace Avalonia.Visuals.UnitTests
}; };
root.Child = child; root.Child = child;
renderer.ResetCalls(); renderer.Invocations.Clear();
root.Child = null; root.Child = null;
renderer.Verify(x => x.AddDirty(child)); renderer.Verify(x => x.AddDirty(child));

Loading…
Cancel
Save