Files
maui-linux/tests/Handlers/HandlerPropertyMappingTests.cs

561 lines
11 KiB
C#
Raw Normal View History

// 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 Xunit;
namespace Microsoft.Maui.Controls.Linux.Tests.Handlers;
#region LabelPropertyMappingTests
public class LabelPropertyMappingTests
{
[Fact]
public void Text_NullMapsToEmpty()
{
// Arrange
var label = new SkiaLabel();
// Act
label.Text = null ?? "";
// Assert
label.Text.Should().BeEmpty();
}
[Fact]
public void TextColor_WhenSet_UpdatesProperty()
{
// Arrange
var label = new SkiaLabel();
var color = Colors.Red;
// Act
label.TextColor = color;
// Assert
label.TextColor.Should().Be(color);
}
[Fact]
public void FontSize_WhenPositive_UpdatesProperty()
{
// Arrange
var label = new SkiaLabel();
// Act
label.FontSize = 20.0;
// Assert
label.FontSize.Should().Be(20.0);
label.FontSize.Should().BeGreaterThan(0);
}
[Fact]
public void FontFamily_WhenNotEmpty_UpdatesProperty()
{
// Arrange
var label = new SkiaLabel();
// Act
label.FontFamily = "Roboto";
// Assert
label.FontFamily.Should().Be("Roboto");
label.FontFamily.Should().NotBeEmpty();
}
[Fact]
public void FontAttributes_Bold_SetsCorrectly()
{
// Arrange
var label = new SkiaLabel();
// Act
label.FontAttributes = FontAttributes.Bold;
// Assert
label.FontAttributes.Should().Be(FontAttributes.Bold);
}
[Fact]
public void HorizontalTextAlignment_Center_MapsCorrectly()
{
// Arrange
var label = new SkiaLabel();
// Act
label.HorizontalTextAlignment = TextAlignment.Center;
// Assert
label.HorizontalTextAlignment.Should().Be(TextAlignment.Center);
}
[Fact]
public void VerticalTextAlignment_End_MapsCorrectly()
{
// Arrange
var label = new SkiaLabel();
// Act
label.VerticalTextAlignment = TextAlignment.End;
// Assert
label.VerticalTextAlignment.Should().Be(TextAlignment.End);
}
[Fact]
public void TextDecorations_Underline_SetsCorrectly()
{
// Arrange
var label = new SkiaLabel();
// Act
label.TextDecorations = TextDecorations.Underline;
// Assert
label.TextDecorations.Should().Be(TextDecorations.Underline);
}
[Fact]
public void LineHeight_WhenSet_UpdatesProperty()
{
// Arrange
var label = new SkiaLabel();
// Act
label.LineHeight = 1.5;
// Assert
label.LineHeight.Should().Be(1.5);
}
[Fact]
public void CharacterSpacing_WhenSet_UpdatesProperty()
{
// Arrange
var label = new SkiaLabel();
// Act
label.CharacterSpacing = 2.0;
// Assert
label.CharacterSpacing.Should().Be(2.0);
}
[Fact]
public void MaxLines_WhenSet_UpdatesProperty()
{
// Arrange
var label = new SkiaLabel();
// Act
label.MaxLines = 3;
// Assert
label.MaxLines.Should().Be(3);
}
[Fact]
public void Padding_WhenSet_UpdatesProperty()
{
// Arrange
var label = new SkiaLabel();
var padding = new Thickness(5, 10, 15, 20);
// Act
label.Padding = padding;
// Assert
label.Padding.Left.Should().Be(5);
label.Padding.Top.Should().Be(10);
label.Padding.Right.Should().Be(15);
label.Padding.Bottom.Should().Be(20);
}
}
#endregion
#region EntryPropertyMappingTests
public class EntryPropertyMappingTests
{
[Fact]
public void Text_NullMapsToEmpty()
{
// Arrange
var entry = new SkiaEntry();
// Act
entry.Text = null ?? "";
// Assert
entry.Text.Should().BeEmpty();
}
[Fact]
public void Placeholder_WhenSet_UpdatesProperty()
{
// Arrange
var entry = new SkiaEntry();
// Act
entry.Placeholder = "Enter text here";
// Assert
entry.Placeholder.Should().Be("Enter text here");
}
[Fact]
public void IsReadOnly_WhenSet_UpdatesProperty()
{
// Arrange
var entry = new SkiaEntry();
// Act
entry.IsReadOnly = true;
// Assert
entry.IsReadOnly.Should().BeTrue();
}
[Fact]
public void MaxLength_WhenSet_UpdatesProperty()
{
// Arrange
var entry = new SkiaEntry();
// Act
entry.MaxLength = 50;
// Assert
entry.MaxLength.Should().Be(50);
}
[Fact]
public void IsPassword_WhenSet_UpdatesProperty()
{
// Arrange
var entry = new SkiaEntry();
// Act
entry.IsPassword = true;
// Assert
entry.IsPassword.Should().BeTrue();
}
[Fact]
public void CursorPosition_WhenSet_UpdatesProperty()
{
// Arrange
var entry = new SkiaEntry();
entry.Text = "Hello World";
// Act
entry.CursorPosition = 5;
// Assert
entry.CursorPosition.Should().Be(5);
}
[Fact]
public void SelectionLength_WhenSet_UpdatesProperty()
{
// Arrange
var entry = new SkiaEntry();
entry.Text = "Hello World";
// Act
entry.SelectionLength = 5;
// Assert
entry.SelectionLength.Should().Be(5);
}
[Fact]
public void TextColor_WhenSet_UpdatesProperty()
{
// Arrange
var entry = new SkiaEntry();
var color = Colors.Blue;
// Act
entry.TextColor = color;
// Assert
entry.TextColor.Should().Be(color);
}
[Fact]
public void HorizontalTextAlignment_Center_MapsCorrectly()
{
// Arrange
var entry = new SkiaEntry();
// Act
entry.HorizontalTextAlignment = TextAlignment.Center;
// Assert
entry.HorizontalTextAlignment.Should().Be(TextAlignment.Center);
}
}
#endregion
#region ButtonPropertyMappingTests
public class ButtonPropertyMappingTests
{
[Fact]
public void Text_WhenSet_UpdatesProperty()
{
// Arrange
var button = new SkiaButton();
// Act
button.Text = "Click Me";
// Assert
button.Text.Should().Be("Click Me");
}
[Fact]
public void TextColor_WhenSet_UpdatesProperty()
{
// Arrange
var button = new SkiaButton();
var color = Colors.White;
// Act
button.TextColor = color;
// Assert
button.TextColor.Should().Be(color);
}
[Fact]
public void IsEnabled_WhenFalse_UpdatesProperty()
{
// Arrange
var button = new SkiaButton();
// Act
button.IsEnabled = false;
// Assert
button.IsEnabled.Should().BeFalse();
}
[Fact]
public void BorderColor_WhenSet_UpdatesProperty()
{
// Arrange
var button = new SkiaButton();
var color = Colors.DarkGray;
// Act
button.BorderColor = color;
// Assert
button.BorderColor.Should().Be(color);
}
[Fact]
public void BorderWidth_WhenSet_UpdatesProperty()
{
// Arrange
var button = new SkiaButton();
// Act
button.BorderWidth = 2.0;
// Assert
button.BorderWidth.Should().Be(2.0);
}
[Fact]
public void CornerRadius_WhenSet_UpdatesProperty()
{
// Arrange
var button = new SkiaButton();
// Act
button.CornerRadius = 10;
// Assert
button.CornerRadius.Should().Be(10);
}
[Fact]
public void Padding_WhenSet_UpdatesProperty()
{
// Arrange
var button = new SkiaButton();
var padding = new Thickness(8, 4, 8, 4);
// Act
button.Padding = padding;
// Assert
button.Padding.Left.Should().Be(8);
button.Padding.Top.Should().Be(4);
button.Padding.Right.Should().Be(8);
button.Padding.Bottom.Should().Be(4);
}
}
#endregion
#region CheckBoxPropertyMappingTests
public class CheckBoxPropertyMappingTests
{
[Fact]
public void IsChecked_WhenTrue_UpdatesProperty()
{
// Arrange
var checkBox = new SkiaCheckBox();
// Act
checkBox.IsChecked = true;
// Assert
checkBox.IsChecked.Should().BeTrue();
}
[Fact]
public void IsEnabled_WhenFalse_UpdatesProperty()
{
// Arrange
var checkBox = new SkiaCheckBox();
// Act
checkBox.IsEnabled = false;
// Assert
checkBox.IsEnabled.Should().BeFalse();
}
[Fact]
public void Color_WhenSet_UpdatesProperty()
{
// Arrange
var checkBox = new SkiaCheckBox();
var color = Colors.Green;
// Act
checkBox.Color = color;
// Assert
checkBox.Color.Should().Be(color);
}
}
#endregion
#region SliderPropertyMappingTests
public class SliderPropertyMappingTests
{
[Fact]
public void Minimum_WhenSet_UpdatesProperty()
{
// Arrange
var slider = new SkiaSlider();
slider.Maximum = 100.0; // Must set Maximum first since default is 1.0
// Act
slider.Minimum = 10.0;
// Assert
slider.Minimum.Should().Be(10.0);
}
[Fact]
public void Maximum_WhenSet_UpdatesProperty()
{
// Arrange
var slider = new SkiaSlider();
// Act
slider.Maximum = 200.0;
// Assert
slider.Maximum.Should().Be(200.0);
}
[Fact]
public void Value_WhenSet_UpdatesProperty()
{
// Arrange
var slider = new SkiaSlider();
slider.Maximum = 100.0;
// Act
slider.Value = 50.0;
// Assert
slider.Value.Should().Be(50.0);
}
[Fact]
public void MinimumTrackColor_WhenSet_UpdatesProperty()
{
// Arrange
var slider = new SkiaSlider();
var color = Colors.Orange;
// Act
slider.MinimumTrackColor = color;
// Assert
slider.MinimumTrackColor.Should().Be(color);
}
[Fact]
public void MaximumTrackColor_WhenSet_UpdatesProperty()
{
// Arrange
var slider = new SkiaSlider();
var color = Colors.LightGray;
// Act
slider.MaximumTrackColor = color;
// Assert
slider.MaximumTrackColor.Should().Be(color);
}
[Fact]
public void ThumbColor_WhenSet_UpdatesProperty()
{
// Arrange
var slider = new SkiaSlider();
var color = Colors.Purple;
// Act
slider.ThumbColor = color;
// Assert
slider.ThumbColor.Should().Be(color);
}
[Fact]
public void IsEnabled_WhenFalse_UpdatesProperty()
{
// Arrange
var slider = new SkiaSlider();
// Act
slider.IsEnabled = false;
// Assert
slider.IsEnabled.Should().BeFalse();
}
}
#endregion