Browse Source

fix: Address reviw

pull/9189/head
Giuseppe Lippolis 3 years ago
parent
commit
2aa79269e8
  1. 4
      samples/ControlCatalog/Pages/AutoCompleteBoxPage.xaml.cs
  2. 2
      samples/ControlCatalog/Pages/CompositionPage.axaml.cs
  3. 2
      samples/ControlCatalog/Pages/ImagePage.xaml.cs
  4. 20
      samples/ControlCatalog/Pages/OpenGlPage.xaml.cs
  5. 6
      samples/ControlCatalog/Pages/ScreenPage.cs
  6. 4
      samples/ControlCatalog/Pages/TabControlPage.xaml.cs
  7. 2
      src/Avalonia.Base/Input/KeyboardDevice.cs
  8. 12
      src/Avalonia.Base/Rendering/Composition/Drawing/CompositionDrawingContext.cs
  9. 4
      src/Avalonia.Base/Rendering/DeferredRenderer.cs
  10. 4
      src/Avalonia.Base/Rendering/SceneGraph/SceneBuilder.cs
  11. 4
      src/Avalonia.Controls.ColorPicker/ColorSlider/ColorSlider.cs
  12. 2
      src/Avalonia.Controls.ColorPicker/ColorSpectrum/ColorSpectrum.cs
  13. 8
      src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs
  14. 2
      src/Avalonia.X11/XI2Manager.cs
  15. 4
      src/Markup/Avalonia.Markup.Xaml/Converters/AvaloniaPropertyTypeConverter.cs
  16. 10
      tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/BindingExtensionTests.cs
  17. 8
      tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/StaticResourceExtensionTests.cs
  18. 33
      tests/Avalonia.Markup.Xaml.UnitTests/Parsers/PropertyParserTests.cs

4
samples/ControlCatalog/Pages/AutoCompleteBoxPage.xaml.cs

@ -109,8 +109,8 @@ namespace ControlCatalog.Pages
{ {
this.InitializeComponent(); this.InitializeComponent();
States = AutoCompleteBoxPage.BuildAllStates(); States = BuildAllStates();
Sentences = AutoCompleteBoxPage.BuildAllSentences(); Sentences = BuildAllSentences();
foreach (AutoCompleteBox box in GetAllAutoCompleteBox().Where(x => x.Name != "CustomAutocompleteBox")) foreach (AutoCompleteBox box in GetAllAutoCompleteBox().Where(x => x.Name != "CustomAutocompleteBox"))
{ {

2
samples/ControlCatalog/Pages/CompositionPage.axaml.cs

@ -22,7 +22,7 @@ public partial class CompositionPage : UserControl
protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e) protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
{ {
base.OnAttachedToVisualTree(e); base.OnAttachedToVisualTree(e);
this.Get<ItemsControl>("Items").Items = CompositionPage.CreateColorItems(); this.Get<ItemsControl>("Items").Items = CreateColorItems();
} }
private static List<CompositionPageColorItem> CreateColorItems() private static List<CompositionPageColorItem> CreateColorItems()

2
samples/ControlCatalog/Pages/ImagePage.xaml.cs

@ -52,7 +52,7 @@ namespace ControlCatalog.Pages
var comboxBox = (ComboBox)sender; var comboxBox = (ComboBox)sender;
if (_croppedImage.Source is CroppedBitmap croppedBitmap) if (_croppedImage.Source is CroppedBitmap croppedBitmap)
{ {
croppedBitmap.SourceRect = ImagePage.GetCropRect(comboxBox.SelectedIndex); croppedBitmap.SourceRect = GetCropRect(comboxBox.SelectedIndex);
} }
} }

20
samples/ControlCatalog/Pages/OpenGlPage.xaml.cs

@ -256,7 +256,7 @@ namespace ControlCatalog.Pages
protected unsafe override void OnOpenGlInit(GlInterface GL, int fb) protected unsafe override void OnOpenGlInit(GlInterface GL, int fb)
{ {
OpenGlPageControl.CheckError(GL); CheckError(GL);
Info = $"Renderer: {GL.GetString(GL_RENDERER)} Version: {GL.GetString(GL_VERSION)}"; Info = $"Renderer: {GL.GetString(GL_RENDERER)} Version: {GL.GetString(GL_VERSION)}";
@ -277,13 +277,13 @@ namespace ControlCatalog.Pages
GL.BindAttribLocationString(_shaderProgram, positionLocation, "aPos"); GL.BindAttribLocationString(_shaderProgram, positionLocation, "aPos");
GL.BindAttribLocationString(_shaderProgram, normalLocation, "aNormal"); GL.BindAttribLocationString(_shaderProgram, normalLocation, "aNormal");
Console.WriteLine(GL.LinkProgramAndGetError(_shaderProgram)); Console.WriteLine(GL.LinkProgramAndGetError(_shaderProgram));
OpenGlPageControl.CheckError(GL); CheckError(GL);
// Create the vertex buffer object (VBO) for the vertex data. // Create the vertex buffer object (VBO) for the vertex data.
_vertexBufferObject = GL.GenBuffer(); _vertexBufferObject = GL.GenBuffer();
// Bind the VBO and copy the vertex data into it. // Bind the VBO and copy the vertex data into it.
GL.BindBuffer(GL_ARRAY_BUFFER, _vertexBufferObject); GL.BindBuffer(GL_ARRAY_BUFFER, _vertexBufferObject);
OpenGlPageControl.CheckError(GL); CheckError(GL);
var vertexSize = Marshal.SizeOf<Vertex>(); var vertexSize = Marshal.SizeOf<Vertex>();
fixed (void* pdata = _points) fixed (void* pdata = _points)
GL.BufferData(GL_ARRAY_BUFFER, new IntPtr(_points.Length * vertexSize), GL.BufferData(GL_ARRAY_BUFFER, new IntPtr(_points.Length * vertexSize),
@ -291,21 +291,21 @@ namespace ControlCatalog.Pages
_indexBufferObject = GL.GenBuffer(); _indexBufferObject = GL.GenBuffer();
GL.BindBuffer(GL_ELEMENT_ARRAY_BUFFER, _indexBufferObject); GL.BindBuffer(GL_ELEMENT_ARRAY_BUFFER, _indexBufferObject);
OpenGlPageControl.CheckError(GL); CheckError(GL);
fixed (void* pdata = _indices) fixed (void* pdata = _indices)
GL.BufferData(GL_ELEMENT_ARRAY_BUFFER, new IntPtr(_indices.Length * sizeof(ushort)), new IntPtr(pdata), GL.BufferData(GL_ELEMENT_ARRAY_BUFFER, new IntPtr(_indices.Length * sizeof(ushort)), new IntPtr(pdata),
GL_STATIC_DRAW); GL_STATIC_DRAW);
OpenGlPageControl.CheckError(GL); CheckError(GL);
_vertexArrayObject = GL.GenVertexArray(); _vertexArrayObject = GL.GenVertexArray();
GL.BindVertexArray(_vertexArrayObject); GL.BindVertexArray(_vertexArrayObject);
OpenGlPageControl.CheckError(GL); CheckError(GL);
GL.VertexAttribPointer(positionLocation, 3, GL_FLOAT, GL.VertexAttribPointer(positionLocation, 3, GL_FLOAT,
0, vertexSize, IntPtr.Zero); 0, vertexSize, IntPtr.Zero);
GL.VertexAttribPointer(normalLocation, 3, GL_FLOAT, GL.VertexAttribPointer(normalLocation, 3, GL_FLOAT,
0, vertexSize, new IntPtr(12)); 0, vertexSize, new IntPtr(12));
GL.EnableVertexAttribArray(positionLocation); GL.EnableVertexAttribArray(positionLocation);
GL.EnableVertexAttribArray(normalLocation); GL.EnableVertexAttribArray(normalLocation);
OpenGlPageControl.CheckError(GL); CheckError(GL);
} }
@ -339,7 +339,7 @@ namespace ControlCatalog.Pages
GL.BindBuffer(GL_ELEMENT_ARRAY_BUFFER, _indexBufferObject); GL.BindBuffer(GL_ELEMENT_ARRAY_BUFFER, _indexBufferObject);
GL.BindVertexArray(_vertexArrayObject); GL.BindVertexArray(_vertexArrayObject);
GL.UseProgram(_shaderProgram); GL.UseProgram(_shaderProgram);
OpenGlPageControl.CheckError(GL); CheckError(GL);
var projection = var projection =
Matrix4x4.CreatePerspectiveFieldOfView((float)(Math.PI / 4), (float)(Bounds.Width / Bounds.Height), Matrix4x4.CreatePerspectiveFieldOfView((float)(Math.PI / 4), (float)(Bounds.Width / Bounds.Height),
0.01f, 1000); 0.01f, 1000);
@ -361,10 +361,10 @@ namespace ControlCatalog.Pages
GL.Uniform1f(minYLoc, _minY); GL.Uniform1f(minYLoc, _minY);
GL.Uniform1f(timeLoc, (float)St.Elapsed.TotalSeconds); GL.Uniform1f(timeLoc, (float)St.Elapsed.TotalSeconds);
GL.Uniform1f(discoLoc, _disco); GL.Uniform1f(discoLoc, _disco);
OpenGlPageControl.CheckError(GL); CheckError(GL);
GL.DrawElements(GL_TRIANGLES, _indices.Length, GL_UNSIGNED_SHORT, IntPtr.Zero); GL.DrawElements(GL_TRIANGLES, _indices.Length, GL_UNSIGNED_SHORT, IntPtr.Zero);
OpenGlPageControl.CheckError(GL); CheckError(GL);
if (_disco > 0.01) if (_disco > 0.01)
Dispatcher.UIThread.Post(InvalidateVisual, DispatcherPriority.Background); Dispatcher.UIThread.Post(InvalidateVisual, DispatcherPriority.Background);
} }

6
samples/ControlCatalog/Pages/ScreenPage.cs

@ -55,11 +55,11 @@ namespace ControlCatalog.Pages
context.DrawRectangle(p, workingAreaRect); context.DrawRectangle(p, workingAreaRect);
var formattedText = ScreenPage.CreateFormattedText($"Bounds: {screen.Bounds.Width}:{screen.Bounds.Height}"); var formattedText = CreateFormattedText($"Bounds: {screen.Bounds.Width}:{screen.Bounds.Height}");
context.DrawText(formattedText, boundsRect.Position.WithY(boundsRect.Size.Height)); context.DrawText(formattedText, boundsRect.Position.WithY(boundsRect.Size.Height));
formattedText = formattedText =
ScreenPage.CreateFormattedText($"WorkArea: {screen.WorkingArea.Width}:{screen.WorkingArea.Height}"); CreateFormattedText($"WorkArea: {screen.WorkingArea.Width}:{screen.WorkingArea.Height}");
context.DrawText(formattedText, boundsRect.Position.WithY(boundsRect.Size.Height + 20)); context.DrawText(formattedText, boundsRect.Position.WithY(boundsRect.Size.Height + 20));
formattedText = CreateFormattedText($"Scaling: {screen.Scaling * 100}%"); formattedText = CreateFormattedText($"Scaling: {screen.Scaling * 100}%");
@ -70,7 +70,7 @@ namespace ControlCatalog.Pages
context.DrawText(formattedText, boundsRect.Position.WithY(boundsRect.Size.Height + 60)); context.DrawText(formattedText, boundsRect.Position.WithY(boundsRect.Size.Height + 60));
formattedText = formattedText =
ScreenPage.CreateFormattedText( CreateFormattedText(
$"Current: {screen.Equals(w.Screens.ScreenFromBounds(new PixelRect(w.Position, PixelSize.FromSize(w.Bounds.Size, scaling))))}"); $"Current: {screen.Equals(w.Screens.ScreenFromBounds(new PixelRect(w.Position, PixelSize.FromSize(w.Bounds.Size, scaling))))}");
context.DrawText(formattedText, boundsRect.Position.WithY(boundsRect.Size.Height + 80)); context.DrawText(formattedText, boundsRect.Position.WithY(boundsRect.Size.Height + 80));
} }

4
samples/ControlCatalog/Pages/TabControlPage.xaml.cs

@ -25,13 +25,13 @@ namespace ControlCatalog.Pages
{ {
Header = "Arch", Header = "Arch",
Text = "This is the first templated tab page.", Text = "This is the first templated tab page.",
Image = TabControlPage.LoadBitmap("avares://ControlCatalog/Assets/delicate-arch-896885_640.jpg"), Image = LoadBitmap("avares://ControlCatalog/Assets/delicate-arch-896885_640.jpg"),
}, },
new TabControlPageViewModelItem new TabControlPageViewModelItem
{ {
Header = "Leaf", Header = "Leaf",
Text = "This is the second templated tab page.", Text = "This is the second templated tab page.",
Image = TabControlPage.LoadBitmap("avares://ControlCatalog/Assets/maple-leaf-888807_640.jpg"), Image = LoadBitmap("avares://ControlCatalog/Assets/maple-leaf-888807_640.jpg"),
}, },
new TabControlPageViewModelItem new TabControlPageViewModelItem
{ {

2
src/Avalonia.Base/Input/KeyboardDevice.cs

@ -67,7 +67,7 @@ namespace Avalonia.Input
{ {
if (newElement == null && oldElement != null) if (newElement == null && oldElement != null)
{ {
KeyboardDevice.ClearFocusWithinAncestors(oldElement); ClearFocusWithinAncestors(oldElement);
return; return;
} }

12
src/Avalonia.Base/Rendering/Composition/Drawing/CompositionDrawingContext.cs

@ -55,7 +55,7 @@ internal class CompositionDrawingContext : IDrawingContextImpl, IDrawingContextW
if (next == null || !next.Item.Equals(Transform, brush, pen, geometry)) if (next == null || !next.Item.Equals(Transform, brush, pen, geometry))
{ {
Add(new GeometryNode(Transform, brush, pen, geometry, CompositionDrawingContext.CreateChildScene(brush))); Add(new GeometryNode(Transform, brush, pen, geometry, CreateChildScene(brush)));
} }
else else
{ {
@ -94,7 +94,7 @@ internal class CompositionDrawingContext : IDrawingContextImpl, IDrawingContextW
if (next == null || !next.Item.Equals(Transform, pen, p1, p2)) if (next == null || !next.Item.Equals(Transform, pen, p1, p2))
{ {
Add(new LineNode(Transform, pen, p1, p2, CompositionDrawingContext.CreateChildScene(pen.Brush))); Add(new LineNode(Transform, pen, p1, p2, CreateChildScene(pen.Brush)));
} }
else else
{ {
@ -110,7 +110,7 @@ internal class CompositionDrawingContext : IDrawingContextImpl, IDrawingContextW
if (next == null || !next.Item.Equals(Transform, brush, pen, rect, boxShadows)) if (next == null || !next.Item.Equals(Transform, brush, pen, rect, boxShadows))
{ {
Add(new RectangleNode(Transform, brush, pen, rect, boxShadows, CompositionDrawingContext.CreateChildScene(brush))); Add(new RectangleNode(Transform, brush, pen, rect, boxShadows, CreateChildScene(brush)));
} }
else else
{ {
@ -139,7 +139,7 @@ internal class CompositionDrawingContext : IDrawingContextImpl, IDrawingContextW
if (next == null || !next.Item.Equals(Transform, brush, pen, rect)) if (next == null || !next.Item.Equals(Transform, brush, pen, rect))
{ {
Add(new EllipseNode(Transform, brush, pen, rect, CompositionDrawingContext.CreateChildScene(brush))); Add(new EllipseNode(Transform, brush, pen, rect, CreateChildScene(brush)));
} }
else else
{ {
@ -165,7 +165,7 @@ internal class CompositionDrawingContext : IDrawingContextImpl, IDrawingContextW
if (next == null || !next.Item.Equals(Transform, foreground, glyphRun)) if (next == null || !next.Item.Equals(Transform, foreground, glyphRun))
{ {
Add(new GlyphRunNode(Transform, foreground, glyphRun, CompositionDrawingContext.CreateChildScene(foreground))); Add(new GlyphRunNode(Transform, foreground, glyphRun, CreateChildScene(foreground)));
} }
else else
@ -324,7 +324,7 @@ internal class CompositionDrawingContext : IDrawingContextImpl, IDrawingContextW
if (next == null || !next.Item.Equals(mask, bounds)) if (next == null || !next.Item.Equals(mask, bounds))
{ {
Add(new OpacityMaskNode(mask, bounds, CompositionDrawingContext.CreateChildScene(mask))); Add(new OpacityMaskNode(mask, bounds, CreateChildScene(mask)));
} }
else else
{ {

4
src/Avalonia.Base/Rendering/DeferredRenderer.cs

@ -277,13 +277,13 @@ namespace Avalonia.Rendering
/// <inheritdoc/> /// <inheritdoc/>
Size IVisualBrushRenderer.GetRenderTargetSize(IVisualBrush brush) Size IVisualBrushRenderer.GetRenderTargetSize(IVisualBrush brush)
{ {
return DeferredRenderer.TryGetChildScene(_currentDraw)?.Size ?? Size.Empty; return TryGetChildScene(_currentDraw)?.Size ?? Size.Empty;
} }
/// <inheritdoc/> /// <inheritdoc/>
void IVisualBrushRenderer.RenderVisualBrush(IDrawingContextImpl context, IVisualBrush brush) void IVisualBrushRenderer.RenderVisualBrush(IDrawingContextImpl context, IVisualBrush brush)
{ {
var childScene = DeferredRenderer.TryGetChildScene(_currentDraw); var childScene = TryGetChildScene(_currentDraw);
if (childScene != null) if (childScene != null)
{ {

4
src/Avalonia.Base/Rendering/SceneGraph/SceneBuilder.cs

@ -18,7 +18,7 @@ namespace Avalonia.Rendering.SceneGraph
_ = scene ?? throw new ArgumentNullException(nameof(scene)); _ = scene ?? throw new ArgumentNullException(nameof(scene));
Dispatcher.UIThread.VerifyAccess(); Dispatcher.UIThread.VerifyAccess();
SceneBuilder.UpdateSize(scene); UpdateSize(scene);
scene.Layers.GetOrAdd(scene.Root.Visual); scene.Layers.GetOrAdd(scene.Root.Visual);
using (var impl = new DeferredDrawingContextImpl(this, scene.Layers)) using (var impl = new DeferredDrawingContextImpl(this, scene.Layers))
@ -46,7 +46,7 @@ namespace Avalonia.Rendering.SceneGraph
if (visual == scene.Root.Visual) if (visual == scene.Root.Visual)
{ {
SceneBuilder.UpdateSize(scene); UpdateSize(scene);
} }
if (visual.VisualRoot == scene.Root.Visual) if (visual.VisualRoot == scene.Root.Visual)

4
src/Avalonia.Controls.ColorPicker/ColorSlider/ColorSlider.cs

@ -180,7 +180,7 @@ namespace Avalonia.Controls.Primitives
if (IsRoundingEnabled) if (IsRoundingEnabled)
{ {
hsvColor = ColorSlider.RoundComponentValues(hsvColor); hsvColor = RoundComponentValues(hsvColor);
} }
// Note: Components converted into a usable range for the user // Note: Components converted into a usable range for the user
@ -305,7 +305,7 @@ namespace Avalonia.Controls.Primitives
if (IsRoundingEnabled) if (IsRoundingEnabled)
{ {
hsvColor = ColorSlider.RoundComponentValues(hsvColor); hsvColor = RoundComponentValues(hsvColor);
} }
return (rgbColor, hsvColor); return (rgbColor, hsvColor);

2
src/Avalonia.Controls.ColorPicker/ColorSpectrum/ColorSpectrum.cs

@ -1074,7 +1074,7 @@ namespace Avalonia.Controls.Primitives
{ {
for (int y = pixelDimension - 1; y >= 0; --y) for (int y = pixelDimension - 1; y >= 0; --y)
{ {
ColorSpectrum.FillPixelForBox( FillPixelForBox(
x, y, hsv, pixelDimension, components, minHue, maxHue, minSaturation, maxSaturation, minValue, maxValue, x, y, hsv, pixelDimension, components, minHue, maxHue, minSaturation, maxSaturation, minValue, maxValue,
bgraMinPixelData, bgraMiddle1PixelData, bgraMiddle2PixelData, bgraMiddle3PixelData, bgraMiddle4PixelData, bgraMaxPixelData, bgraMinPixelData, bgraMiddle1PixelData, bgraMiddle2PixelData, bgraMiddle3PixelData, bgraMiddle4PixelData, bgraMaxPixelData,
newHsvValues); newHsvValues);

8
src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs

@ -82,7 +82,7 @@ namespace Avalonia.Diagnostics.ViewModels
{ {
var setterValue = regularSetter.Value; var setterValue = regularSetter.Value;
var resourceInfo = ControlDetailsViewModel.GetResourceInfo(setterValue); var resourceInfo = GetResourceInfo(setterValue);
SetterViewModel setterVm; SetterViewModel setterVm;
@ -95,7 +95,7 @@ namespace Avalonia.Diagnostics.ViewModels
} }
else else
{ {
var isBinding = ControlDetailsViewModel.IsBinding(setterValue); var isBinding = IsBinding(setterValue);
if (isBinding) if (isBinding)
{ {
@ -509,8 +509,8 @@ namespace Avalonia.Diagnostics.ViewModels
SelectedEntityName = entityName; SelectedEntityName = entityName;
SelectedEntityType = o.ToString(); SelectedEntityType = o.ToString();
var properties = ControlDetailsViewModel.GetAvaloniaProperties(o) var properties = GetAvaloniaProperties(o)
.Concat(ControlDetailsViewModel.GetClrProperties(o, _showImplementedInterfaces)) .Concat(GetClrProperties(o, _showImplementedInterfaces))
.OrderBy(x => x, PropertyComparer.Instance) .OrderBy(x => x, PropertyComparer.Instance)
.ThenBy(x => x.Name) .ThenBy(x => x.Name)
.ToArray(); .ToArray();

2
src/Avalonia.X11/XI2Manager.cs

@ -197,7 +197,7 @@ namespace Avalonia.X11
} }
} }
static void OnEnterLeaveEvent(IXI2Client client, ref XIEnterLeaveEvent ev) void OnEnterLeaveEvent(IXI2Client client, ref XIEnterLeaveEvent ev)
{ {
if (ev.evtype == XiEventType.XI_Leave) if (ev.evtype == XiEventType.XI_Leave)
{ {

4
src/Markup/Avalonia.Markup.Xaml/Converters/AvaloniaPropertyTypeConverter.cs

@ -3,7 +3,6 @@ using System.ComponentModel;
using System.Globalization; using System.Globalization;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Logging; using Avalonia.Logging;
using Avalonia.Markup.Parsers;
using Avalonia.Markup.Xaml.Parsers; using Avalonia.Markup.Xaml.Parsers;
using Avalonia.Markup.Xaml.Templates; using Avalonia.Markup.Xaml.Templates;
using Avalonia.Styling; using Avalonia.Styling;
@ -21,9 +20,8 @@ namespace Avalonia.Markup.Xaml.Converters
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{ {
var registry = AvaloniaPropertyRegistry.Instance; var registry = AvaloniaPropertyRegistry.Instance;
var parser = new PropertyParser();
var (ns, owner, propertyName) = PropertyParser.Parse(new CharacterReader(((string)value).AsSpan())); var (ns, owner, propertyName) = PropertyParser.Parse(new CharacterReader(((string)value).AsSpan()));
var ownerType = AvaloniaPropertyTypeConverter.TryResolveOwnerByName(context, ns, owner); var ownerType = TryResolveOwnerByName(context, ns, owner);
var targetType = context.GetFirstParent<ControlTemplate>()?.TargetType ?? var targetType = context.GetFirstParent<ControlTemplate>()?.TargetType ??
context.GetFirstParent<Style>()?.Selector?.TargetType ?? context.GetFirstParent<Style>()?.Selector?.TargetType ??
typeof(Control); typeof(Control);

10
tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/BindingExtensionTests.cs

@ -1,6 +1,4 @@
using System; using System;
using System.Collections.Generic;
using System.Text;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Controls.Presenters; using Avalonia.Controls.Presenters;
using Avalonia.Controls.Primitives; using Avalonia.Controls.Primitives;
@ -17,7 +15,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions
[Fact] [Fact]
public void BindingExtension_Binds_To_Source() public void BindingExtension_Binds_To_Source()
{ {
using (BindingExtensionTests.StyledWindow()) using (StyledWindow())
{ {
var xaml = @" var xaml = @"
<Window xmlns='https://github.com/avaloniaui' <Window xmlns='https://github.com/avaloniaui'
@ -41,7 +39,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions
[Fact] [Fact]
public void BindingExtension_Binds_To_TargetNullValue() public void BindingExtension_Binds_To_TargetNullValue()
{ {
using (BindingExtensionTests.StyledWindow()) using (StyledWindow())
{ {
var xaml = @" var xaml = @"
<Window xmlns='https://github.com/avaloniaui' <Window xmlns='https://github.com/avaloniaui'
@ -66,7 +64,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions
[Fact] [Fact]
public void BindingExtension_TargetNullValue_UnsetByDefault() public void BindingExtension_TargetNullValue_UnsetByDefault()
{ {
using (BindingExtensionTests.StyledWindow()) using (StyledWindow())
{ {
var xaml = @" var xaml = @"
<Window xmlns='https://github.com/avaloniaui' <Window xmlns='https://github.com/avaloniaui'
@ -143,7 +141,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions
assetLoader: new MockAssetLoader(assets), assetLoader: new MockAssetLoader(assets),
theme: () => new Styles theme: () => new Styles
{ {
BindingExtensionTests.WindowStyle(), WindowStyle(),
}); });
return UnitTestApplication.Start(services); return UnitTestApplication.Start(services);

8
tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/StaticResourceExtensionTests.cs

@ -380,7 +380,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions
[Fact] [Fact]
public void StaticResource_Can_Be_Assigned_To_Converter() public void StaticResource_Can_Be_Assigned_To_Converter()
{ {
using (StaticResourceExtensionTests.StyledWindow()) using (StyledWindow())
{ {
var xaml = @" var xaml = @"
<Window xmlns='https://github.com/avaloniaui' <Window xmlns='https://github.com/avaloniaui'
@ -406,7 +406,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions
[Fact] [Fact]
public void StaticResource_Can_Be_Assigned_To_Binding_Converter_In_DataTemplate() public void StaticResource_Can_Be_Assigned_To_Binding_Converter_In_DataTemplate()
{ {
using (StaticResourceExtensionTests.StyledWindow()) using (StyledWindow())
{ {
var xaml = @" var xaml = @"
<Window xmlns='https://github.com/avaloniaui' <Window xmlns='https://github.com/avaloniaui'
@ -441,7 +441,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions
{ {
// this tests if IAmbientProviders in DataTemplate contexts are in correct order // this tests if IAmbientProviders in DataTemplate contexts are in correct order
// if they wouldn't be, Purple brush would be bound to // if they wouldn't be, Purple brush would be bound to
using (StaticResourceExtensionTests.StyledWindow()) using (StyledWindow())
{ {
var xaml = @" var xaml = @"
<Window xmlns='https://github.com/avaloniaui' <Window xmlns='https://github.com/avaloniaui'
@ -522,7 +522,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions
[Fact] [Fact]
public void Automatically_Converts_Color_To_SolidColorBrush_From_Setter() public void Automatically_Converts_Color_To_SolidColorBrush_From_Setter()
{ {
using (StaticResourceExtensionTests.StyledWindow()) using (StyledWindow())
{ {
var xaml = @" var xaml = @"
<Window xmlns='https://github.com/avaloniaui' <Window xmlns='https://github.com/avaloniaui'

33
tests/Avalonia.Markup.Xaml.UnitTests/Parsers/PropertyParserTests.cs

@ -12,7 +12,6 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
[Fact] [Fact]
public void Parses_Name() public void Parses_Name()
{ {
var target = new PropertyParser();
var reader = new CharacterReader("Foo".AsSpan()); var reader = new CharacterReader("Foo".AsSpan());
var (ns, owner, name) = PropertyParser.Parse(reader); var (ns, owner, name) = PropertyParser.Parse(reader);
@ -24,7 +23,6 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
[Fact] [Fact]
public void Parses_Owner_And_Name() public void Parses_Owner_And_Name()
{ {
var target = new PropertyParser();
var reader = new CharacterReader("Foo.Bar".AsSpan()); var reader = new CharacterReader("Foo.Bar".AsSpan());
var (ns, owner, name) = PropertyParser.Parse(reader); var (ns, owner, name) = PropertyParser.Parse(reader);
@ -36,7 +34,6 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
[Fact] [Fact]
public void Parses_Namespace_Owner_And_Name() public void Parses_Namespace_Owner_And_Name()
{ {
var target = new PropertyParser();
var reader = new CharacterReader("foo:Bar.Baz".AsSpan()); var reader = new CharacterReader("foo:Bar.Baz".AsSpan());
var (ns, owner, name) = PropertyParser.Parse(reader); var (ns, owner, name) = PropertyParser.Parse(reader);
@ -48,7 +45,6 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
[Fact] [Fact]
public void Parses_Owner_And_Name_With_Parentheses() public void Parses_Owner_And_Name_With_Parentheses()
{ {
var target = new PropertyParser();
var reader = new CharacterReader("(Foo.Bar)".AsSpan()); var reader = new CharacterReader("(Foo.Bar)".AsSpan());
var (ns, owner, name) = PropertyParser.Parse(reader); var (ns, owner, name) = PropertyParser.Parse(reader);
@ -60,7 +56,6 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
[Fact] [Fact]
public void Parses_Namespace_Owner_And_Name_With_Parentheses() public void Parses_Namespace_Owner_And_Name_With_Parentheses()
{ {
var target = new PropertyParser();
var reader = new CharacterReader("(foo:Bar.Baz)".AsSpan()); var reader = new CharacterReader("(foo:Bar.Baz)".AsSpan());
var (ns, owner, name) = PropertyParser.Parse(reader); var (ns, owner, name) = PropertyParser.Parse(reader);
@ -72,8 +67,6 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
[Fact] [Fact]
public void Fails_With_Empty_String() public void Fails_With_Empty_String()
{ {
var target = new PropertyParser();
var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader(ReadOnlySpan<char>.Empty))); var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader(ReadOnlySpan<char>.Empty)));
Assert.Equal(0, ex.Column); Assert.Equal(0, ex.Column);
Assert.Equal("Expected property name.", ex.Message); Assert.Equal("Expected property name.", ex.Message);
@ -82,8 +75,6 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
[Fact] [Fact]
public void Fails_With_Only_Whitespace() public void Fails_With_Only_Whitespace()
{ {
var target = new PropertyParser();
var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader(" ".AsSpan()))); var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader(" ".AsSpan())));
Assert.Equal(0, ex.Column); Assert.Equal(0, ex.Column);
Assert.Equal("Unexpected ' '.", ex.Message); Assert.Equal("Unexpected ' '.", ex.Message);
@ -92,8 +83,6 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
[Fact] [Fact]
public void Fails_With_Leading_Whitespace() public void Fails_With_Leading_Whitespace()
{ {
var target = new PropertyParser();
var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader(" Foo".AsSpan()))); var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader(" Foo".AsSpan())));
Assert.Equal(0, ex.Column); Assert.Equal(0, ex.Column);
Assert.Equal("Unexpected ' '.", ex.Message); Assert.Equal("Unexpected ' '.", ex.Message);
@ -102,8 +91,6 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
[Fact] [Fact]
public void Fails_With_Trailing_Whitespace() public void Fails_With_Trailing_Whitespace()
{ {
var target = new PropertyParser();
var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader("Foo ".AsSpan()))); var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader("Foo ".AsSpan())));
Assert.Equal(3, ex.Column); Assert.Equal(3, ex.Column);
Assert.Equal("Unexpected ' '.", ex.Message); Assert.Equal("Unexpected ' '.", ex.Message);
@ -112,8 +99,6 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
[Fact] [Fact]
public void Fails_With_Invalid_Property_Name() public void Fails_With_Invalid_Property_Name()
{ {
var target = new PropertyParser();
var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader("123".AsSpan()))); var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader("123".AsSpan())));
Assert.Equal(0, ex.Column); Assert.Equal(0, ex.Column);
Assert.Equal("Unexpected '1'.", ex.Message); Assert.Equal("Unexpected '1'.", ex.Message);
@ -122,8 +107,6 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
[Fact] [Fact]
public void Fails_With_Trailing_Junk() public void Fails_With_Trailing_Junk()
{ {
var target = new PropertyParser();
var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader("Foo%".AsSpan()))); var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader("Foo%".AsSpan())));
Assert.Equal(3, ex.Column); Assert.Equal(3, ex.Column);
Assert.Equal("Unexpected '%'.", ex.Message); Assert.Equal("Unexpected '%'.", ex.Message);
@ -132,8 +115,6 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
[Fact] [Fact]
public void Fails_With_Invalid_Property_Name_After_Owner() public void Fails_With_Invalid_Property_Name_After_Owner()
{ {
var target = new PropertyParser();
var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader("Foo.123".AsSpan()))); var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader("Foo.123".AsSpan())));
Assert.Equal(4, ex.Column); Assert.Equal(4, ex.Column);
Assert.Equal("Unexpected '1'.", ex.Message); Assert.Equal("Unexpected '1'.", ex.Message);
@ -142,8 +123,6 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
[Fact] [Fact]
public void Fails_With_Whitespace_Between_Owner_And_Name() public void Fails_With_Whitespace_Between_Owner_And_Name()
{ {
var target = new PropertyParser();
var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader("Foo. Bar".AsSpan()))); var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader("Foo. Bar".AsSpan())));
Assert.Equal(4, ex.Column); Assert.Equal(4, ex.Column);
Assert.Equal("Unexpected ' '.", ex.Message); Assert.Equal("Unexpected ' '.", ex.Message);
@ -152,8 +131,6 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
[Fact] [Fact]
public void Fails_With_Too_Many_Segments() public void Fails_With_Too_Many_Segments()
{ {
var target = new PropertyParser();
var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader("Foo.Bar.Baz".AsSpan()))); var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader("Foo.Bar.Baz".AsSpan())));
Assert.Equal(8, ex.Column); Assert.Equal(8, ex.Column);
Assert.Equal("Unexpected '.'.", ex.Message); Assert.Equal("Unexpected '.'.", ex.Message);
@ -162,8 +139,6 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
[Fact] [Fact]
public void Fails_With_Too_Many_Namespaces() public void Fails_With_Too_Many_Namespaces()
{ {
var target = new PropertyParser();
var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader("foo:bar:Baz".AsSpan()))); var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader("foo:bar:Baz".AsSpan())));
Assert.Equal(8, ex.Column); Assert.Equal(8, ex.Column);
Assert.Equal("Unexpected ':'.", ex.Message); Assert.Equal("Unexpected ':'.", ex.Message);
@ -172,8 +147,6 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
[Fact] [Fact]
public void Fails_With_Parens_But_No_Owner() public void Fails_With_Parens_But_No_Owner()
{ {
var target = new PropertyParser();
var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader("(Foo)".AsSpan()))); var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader("(Foo)".AsSpan())));
Assert.Equal(1, ex.Column); Assert.Equal(1, ex.Column);
Assert.Equal("Expected property owner.", ex.Message); Assert.Equal("Expected property owner.", ex.Message);
@ -182,8 +155,6 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
[Fact] [Fact]
public void Fails_With_Parens_And_Namespace_But_No_Owner() public void Fails_With_Parens_And_Namespace_But_No_Owner()
{ {
var target = new PropertyParser();
var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader("(foo:Bar)".AsSpan()))); var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader("(foo:Bar)".AsSpan())));
Assert.Equal(1, ex.Column); Assert.Equal(1, ex.Column);
Assert.Equal("Expected property owner.", ex.Message); Assert.Equal("Expected property owner.", ex.Message);
@ -192,8 +163,6 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
[Fact] [Fact]
public void Fails_With_Missing_Close_Parens() public void Fails_With_Missing_Close_Parens()
{ {
var target = new PropertyParser();
var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader("(Foo.Bar".AsSpan()))); var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader("(Foo.Bar".AsSpan())));
Assert.Equal(8, ex.Column); Assert.Equal(8, ex.Column);
Assert.Equal("Expected ')'.", ex.Message); Assert.Equal("Expected ')'.", ex.Message);
@ -202,8 +171,6 @@ namespace Avalonia.Markup.Xaml.UnitTests.Parsers
[Fact] [Fact]
public void Fails_With_Unexpected_Close_Parens() public void Fails_With_Unexpected_Close_Parens()
{ {
var target = new PropertyParser();
var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader("Foo.Bar)".AsSpan()))); var ex = Assert.Throws<ExpressionParseException>(() => PropertyParser.Parse(new CharacterReader("Foo.Bar)".AsSpan())));
Assert.Equal(7, ex.Column); Assert.Equal(7, ex.Column);
Assert.Equal("Unexpected ')'.", ex.Message); Assert.Equal("Unexpected ')'.", ex.Message);

Loading…
Cancel
Save