Files
logikonline c5221ba580
All checks were successful
CI / Build (Linux) (push) Successful in 18s
test: add unit tests for controls and rendering helpers
Add comprehensive test coverage for 20+ Skia controls including ActivityIndicator, Border, CheckBox, CollectionView, DatePicker, Editor, Grid, Image, ImageButton, Label, NavigationPage, Page, Picker, ProgressBar, RadioButton, SearchBar, Stepper, Switch, and TimePicker. Include tests for TextRenderingHelper utility methods covering color conversion, font style mapping, and font family resolution.
2026-03-06 22:43:25 -05:00

181 lines
4.1 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 SkiaEditorTests
{
[Fact]
public void Constructor_SetsDefaultValues()
{
// Arrange & Act
var editor = new SkiaEditor();
// Assert
editor.Text.Should().BeEmpty();
editor.Placeholder.Should().BeEmpty();
editor.IsReadOnly.Should().BeFalse();
editor.TextColor.Should().BeNull();
editor.PlaceholderColor.Should().BeNull();
editor.FontSize.Should().Be(14.0);
editor.FontFamily.Should().BeEmpty();
editor.MaxLength.Should().Be(-1);
editor.IsFocusable.Should().BeTrue();
}
[Fact]
public void Text_WhenSet_UpdatesProperty()
{
// Arrange
var editor = new SkiaEditor();
// Act
editor.Text = "Hello World";
// Assert
editor.Text.Should().Be("Hello World");
}
[Fact]
public void Placeholder_WhenSet_UpdatesProperty()
{
// Arrange
var editor = new SkiaEditor();
// Act
editor.Placeholder = "Enter text...";
// Assert
editor.Placeholder.Should().Be("Enter text...");
}
[Fact]
public void TextColor_WhenSet_UpdatesProperty()
{
// Arrange
var editor = new SkiaEditor();
var color = Microsoft.Maui.Graphics.Colors.Blue;
// Act
editor.TextColor = color;
// Assert
editor.TextColor.Should().Be(color);
}
[Fact]
public void PlaceholderColor_WhenSet_UpdatesProperty()
{
// Arrange
var editor = new SkiaEditor();
var color = Microsoft.Maui.Graphics.Colors.Gray;
// Act
editor.PlaceholderColor = color;
// Assert
editor.PlaceholderColor.Should().Be(color);
}
[Fact]
public void FontSize_WhenSet_UpdatesProperty()
{
// Arrange
var editor = new SkiaEditor();
// Act
editor.FontSize = 20.0;
// Assert
editor.FontSize.Should().Be(20.0);
}
[Fact]
public void FontFamily_WhenSet_UpdatesProperty()
{
// Arrange
var editor = new SkiaEditor();
// Act
editor.FontFamily = "Monospace";
// Assert
editor.FontFamily.Should().Be("Monospace");
}
[Fact]
public void IsReadOnly_WhenSet_UpdatesProperty()
{
// Arrange
var editor = new SkiaEditor();
// Act
editor.IsReadOnly = true;
// Assert
editor.IsReadOnly.Should().BeTrue();
}
[Fact]
public void MaxLength_WhenSet_UpdatesProperty()
{
// Arrange
var editor = new SkiaEditor();
// Act
editor.MaxLength = 100;
// Assert
editor.MaxLength.Should().Be(100);
}
[Fact]
public void TextChanged_EventCanBeSubscribed()
{
// Arrange
var editor = new SkiaEditor();
var eventSubscribed = false;
// Act
editor.TextChanged += (s, e) => eventSubscribed = true;
// Assert - Just verify we can subscribe without error
eventSubscribed.Should().BeFalse(); // Not raised yet, just subscribed
}
[Fact]
public void Measure_ReturnsPositiveSize()
{
// Arrange
var editor = new SkiaEditor { Text = "Test" };
// Act
var size = editor.Measure(new Size(1000, 1000));
// Assert
size.Width.Should().BeGreaterThan(0);
size.Height.Should().BeGreaterThan(0);
}
[Fact]
public void Draw_DoesNotThrow()
{
// Arrange
var editor = new SkiaEditor { Text = "Test" };
editor.Bounds = new Rect(0, 0, 200, 100);
using var surface = SKSurface.Create(new SKImageInfo(200, 100));
var canvas = surface.Canvas;
// Act & Assert
var exception = Record.Exception(() => editor.Draw(canvas));
exception.Should().BeNull();
}
}