Browse Source

Added failing tests for #1614.

Steven Kirk 7 years ago
parent
commit
f1c2c72400

+ 123 - 0
tests/Avalonia.RenderTests/Media/VisualBrushTests.cs

@@ -449,5 +449,128 @@ namespace Avalonia.Direct2D1.RenderTests.Media
             await RenderToFile(target);
             CompareImages();
         }
+
+        [Fact]
+        public async Task VisualBrush_Checkerboard_96_Dpi()
+        {
+            var target = new Border
+            {
+                Width = 200,
+                Height = 200,
+                Background = new VisualBrush
+                {
+                    DestinationRect = new RelativeRect(0, 0, 16, 16, RelativeUnit.Absolute),
+                    TileMode = TileMode.Tile,
+                    Visual = new Canvas
+                    {
+                        Width = 16,
+                        Height= 16,
+                        Background = Brushes.Red,
+                        Children =
+                        {
+                            new Rectangle
+                            {
+                                Width = 8,
+                                Height = 8,
+                                Fill = Brushes.Green,
+                            },
+                            new Rectangle
+                            {
+                                Width = 8,
+                                Height = 8,
+                                Fill = Brushes.Green,
+                                [Canvas.LeftProperty] = 8,
+                                [Canvas.TopProperty] = 8,
+                            },
+                        }
+                    }
+                }
+            };
+
+            await RenderToFile(target);
+            CompareImages();
+        }
+
+        [Fact]
+        public async Task VisualBrush_Checkerboard_144_Dpi()
+        {
+            var target = new Border
+            {
+                Width = 200,
+                Height = 200,
+                Background = new VisualBrush
+                {
+                    DestinationRect = new RelativeRect(0, 0, 16, 16, RelativeUnit.Absolute),
+                    TileMode = TileMode.Tile,
+                    Visual = new Canvas
+                    {
+                        Width = 16,
+                        Height = 16,
+                        Background = Brushes.Red,
+                        Children =
+                        {
+                            new Rectangle
+                            {
+                                Width = 8,
+                                Height = 8,
+                                Fill = Brushes.Green,
+                            },
+                            new Rectangle
+                            {
+                                Width = 8,
+                                Height = 8,
+                                Fill = Brushes.Green,
+                                [Canvas.LeftProperty] = 8,
+                                [Canvas.TopProperty] = 8,
+                            },
+                        }
+                    }
+                }
+            };
+
+            await RenderToFile(target, dpi: 144);
+            CompareImages();
+        }
+
+        [Fact]
+        public async Task VisualBrush_Checkerboard_192_Dpi()
+        {
+            var target = new Border
+            {
+                Width = 200,
+                Height = 200,
+                Background = new VisualBrush
+                {
+                    DestinationRect = new RelativeRect(0, 0, 16, 16, RelativeUnit.Absolute),
+                    TileMode = TileMode.Tile,
+                    Visual = new Canvas
+                    {
+                        Width = 16,
+                        Height = 16,
+                        Background = Brushes.Red,
+                        Children =
+                        {
+                            new Rectangle
+                            {
+                                Width = 8,
+                                Height = 8,
+                                Fill = Brushes.Green,
+                            },
+                            new Rectangle
+                            {
+                                Width = 8,
+                                Height = 8,
+                                Fill = Brushes.Green,
+                                [Canvas.LeftProperty] = 8,
+                                [Canvas.TopProperty] = 8,
+                            },
+                        }
+                    }
+                }
+            };
+
+            await RenderToFile(target, dpi: 192);
+            CompareImages();
+        }
     }
 }

+ 4 - 4
tests/Avalonia.RenderTests/TestBase.cs

@@ -63,7 +63,7 @@ namespace Avalonia.Direct2D1.RenderTests
             get;
         }
 
-        protected async Task RenderToFile(Control target, [CallerMemberName] string testName = "")
+        protected async Task RenderToFile(Control target, [CallerMemberName] string testName = "", double dpi = 96)
         {
             if (!Directory.Exists(OutputPath))
             {
@@ -75,9 +75,9 @@ namespace Avalonia.Direct2D1.RenderTests
             var factory = AvaloniaLocator.Current.GetService<IPlatformRenderInterface>();
             var pixelSize = new PixelSize((int)target.Width, (int)target.Height);
             var size = new Size(target.Width, target.Height);
-            var dpi = new Vector(96, 96);
+            var dpiVector = new Vector(dpi, dpi);
 
-            using (RenderTargetBitmap bitmap = new RenderTargetBitmap(pixelSize, dpi))
+            using (RenderTargetBitmap bitmap = new RenderTargetBitmap(pixelSize, dpiVector))
             {
                 target.Measure(size);
                 target.Arrange(new Rect(size));
@@ -85,7 +85,7 @@ namespace Avalonia.Direct2D1.RenderTests
                 bitmap.Save(immediatePath);
             }
 
-            using (var rtb = factory.CreateRenderTargetBitmap(pixelSize, dpi))
+            using (var rtb = factory.CreateRenderTargetBitmap(pixelSize, dpiVector))
             using (var renderer = new DeferredRenderer(target, rtb))
             {
                 target.Measure(size);

BIN
tests/TestFiles/Direct2D1/Media/VisualBrush/VisualBrush_Checkerboard_96_Dpi.expected.png


BIN
tests/TestFiles/Skia/Media/VisualBrush/VisualBrush_Checkerboard_96_Dpi.expected.png