180 lines
3.7 KiB
C#
180 lines
3.7 KiB
C#
|
|
// Licensed to the .NET Foundation under one or more agreements.
|
||
|
|
// The .NET Foundation licenses this file to you under the MIT license.
|
||
|
|
|
||
|
|
using FluentAssertions;
|
||
|
|
using Microsoft.Maui.Graphics;
|
||
|
|
using Microsoft.Maui.Platform;
|
||
|
|
using SkiaSharp;
|
||
|
|
using Xunit;
|
||
|
|
|
||
|
|
namespace Microsoft.Maui.Controls.Linux.Tests.Views;
|
||
|
|
|
||
|
|
public class SkiaViewTests
|
||
|
|
{
|
||
|
|
[Fact]
|
||
|
|
public void IsVisible_DefaultsToTrue()
|
||
|
|
{
|
||
|
|
// Arrange & Act
|
||
|
|
var view = new SkiaLabel();
|
||
|
|
|
||
|
|
// Assert
|
||
|
|
view.IsVisible.Should().BeTrue();
|
||
|
|
}
|
||
|
|
|
||
|
|
[Fact]
|
||
|
|
public void IsEnabled_DefaultsToTrue()
|
||
|
|
{
|
||
|
|
// Arrange & Act
|
||
|
|
var view = new SkiaLabel();
|
||
|
|
|
||
|
|
// Assert
|
||
|
|
view.IsEnabled.Should().BeTrue();
|
||
|
|
}
|
||
|
|
|
||
|
|
[Fact]
|
||
|
|
public void Opacity_DefaultsToOne()
|
||
|
|
{
|
||
|
|
// Arrange & Act
|
||
|
|
var view = new SkiaLabel();
|
||
|
|
|
||
|
|
// Assert
|
||
|
|
view.Opacity.Should().Be(1.0f);
|
||
|
|
}
|
||
|
|
|
||
|
|
[Fact]
|
||
|
|
public void BackgroundColor_WhenSet_UpdatesProperty()
|
||
|
|
{
|
||
|
|
// Arrange
|
||
|
|
var view = new SkiaLabel();
|
||
|
|
var color = Microsoft.Maui.Graphics.Colors.Red;
|
||
|
|
|
||
|
|
// Act
|
||
|
|
view.BackgroundColor = color;
|
||
|
|
|
||
|
|
// Assert
|
||
|
|
view.BackgroundColor.Should().Be(color);
|
||
|
|
}
|
||
|
|
|
||
|
|
[Fact]
|
||
|
|
public void Margin_WhenSet_UpdatesProperty()
|
||
|
|
{
|
||
|
|
// Arrange
|
||
|
|
var view = new SkiaLabel();
|
||
|
|
var margin = new Thickness(10, 20, 30, 40);
|
||
|
|
|
||
|
|
// Act
|
||
|
|
view.Margin = margin;
|
||
|
|
|
||
|
|
// Assert
|
||
|
|
view.Margin.Should().Be(margin);
|
||
|
|
}
|
||
|
|
|
||
|
|
[Fact]
|
||
|
|
public void Padding_WhenSet_UpdatesProperty()
|
||
|
|
{
|
||
|
|
// Arrange
|
||
|
|
var view = new SkiaLabel();
|
||
|
|
var padding = new Thickness(5, 10, 15, 20);
|
||
|
|
|
||
|
|
// Act
|
||
|
|
view.Padding = padding;
|
||
|
|
|
||
|
|
// Assert
|
||
|
|
view.Padding.Should().Be(padding);
|
||
|
|
}
|
||
|
|
|
||
|
|
[Fact]
|
||
|
|
public void Bounds_WhenSet_UpdatesProperty()
|
||
|
|
{
|
||
|
|
// Arrange
|
||
|
|
var view = new SkiaLabel();
|
||
|
|
var bounds = new Rect(10, 20, 200, 100);
|
||
|
|
|
||
|
|
// Act
|
||
|
|
view.Bounds = bounds;
|
||
|
|
|
||
|
|
// Assert
|
||
|
|
view.Bounds.Should().Be(bounds);
|
||
|
|
}
|
||
|
|
|
||
|
|
[Fact]
|
||
|
|
public void InputTransparent_DefaultsToFalse()
|
||
|
|
{
|
||
|
|
// Arrange & Act
|
||
|
|
var view = new SkiaLabel();
|
||
|
|
|
||
|
|
// Assert
|
||
|
|
view.InputTransparent.Should().BeFalse();
|
||
|
|
}
|
||
|
|
|
||
|
|
[Fact]
|
||
|
|
public void AddChild_AddsChildToCollection()
|
||
|
|
{
|
||
|
|
// Arrange
|
||
|
|
var parent = new SkiaButton();
|
||
|
|
var child = new SkiaLabel();
|
||
|
|
|
||
|
|
// Act
|
||
|
|
parent.AddChild(child);
|
||
|
|
|
||
|
|
// Assert
|
||
|
|
parent.Children.Should().Contain(child);
|
||
|
|
child.Parent.Should().Be(parent);
|
||
|
|
}
|
||
|
|
|
||
|
|
[Fact]
|
||
|
|
public void RemoveChild_RemovesChildFromCollection()
|
||
|
|
{
|
||
|
|
// Arrange
|
||
|
|
var parent = new SkiaButton();
|
||
|
|
var child = new SkiaLabel();
|
||
|
|
parent.AddChild(child);
|
||
|
|
|
||
|
|
// Act
|
||
|
|
parent.RemoveChild(child);
|
||
|
|
|
||
|
|
// Assert
|
||
|
|
parent.Children.Should().NotContain(child);
|
||
|
|
child.Parent.Should().BeNull();
|
||
|
|
}
|
||
|
|
|
||
|
|
[Fact]
|
||
|
|
public void HitTest_WithPointInsideBounds_ReturnsSelf()
|
||
|
|
{
|
||
|
|
// Arrange
|
||
|
|
var view = new SkiaButton();
|
||
|
|
view.Bounds = new Rect(0, 0, 100, 50);
|
||
|
|
|
||
|
|
// Act
|
||
|
|
var hit = view.HitTest(50, 25);
|
||
|
|
|
||
|
|
// Assert
|
||
|
|
hit.Should().NotBeNull();
|
||
|
|
}
|
||
|
|
|
||
|
|
[Fact]
|
||
|
|
public void HitTest_WithPointOutsideBounds_ReturnsNull()
|
||
|
|
{
|
||
|
|
// Arrange
|
||
|
|
var view = new SkiaButton();
|
||
|
|
view.Bounds = new Rect(0, 0, 100, 50);
|
||
|
|
|
||
|
|
// Act
|
||
|
|
var hit = view.HitTest(200, 200);
|
||
|
|
|
||
|
|
// Assert
|
||
|
|
hit.Should().BeNull();
|
||
|
|
}
|
||
|
|
|
||
|
|
[Fact]
|
||
|
|
public void Invalidate_DoesNotThrow()
|
||
|
|
{
|
||
|
|
// Arrange
|
||
|
|
var view = new SkiaLabel();
|
||
|
|
|
||
|
|
// Act & Assert
|
||
|
|
var exception = Record.Exception(() => view.Invalidate());
|
||
|
|
exception.Should().BeNull();
|
||
|
|
}
|
||
|
|
}
|