Initial commit: .NET MAUI Linux Platform
Complete Linux platform implementation for .NET MAUI with:
- 35+ Skia-rendered controls (Button, Label, Entry, CarouselView, etc.)
- Platform services (Clipboard, FilePicker, Notifications, DragDrop, etc.)
- Accessibility support (AT-SPI2, High Contrast)
- HiDPI and Input Method support
- 216 unit tests
- CI/CD workflows
- Project templates
- Documentation
🤖 Generated with Claude Code
This commit is contained in:
211
tests/Views/SkiaSwipeViewTests.cs
Normal file
211
tests/Views/SkiaSwipeViewTests.cs
Normal file
@@ -0,0 +1,211 @@
|
||||
// Licensed to the .NET Foundation under one or more agreements.
|
||||
// The .NET Foundation licenses this file to you under the MIT license.
|
||||
|
||||
using SkiaSharp;
|
||||
using Xunit;
|
||||
|
||||
namespace Microsoft.Maui.Platform.Tests;
|
||||
|
||||
public class SkiaSwipeViewTests
|
||||
{
|
||||
[Fact]
|
||||
public void Constructor_InitializesWithDefaultValues()
|
||||
{
|
||||
var swipeView = new SkiaSwipeView();
|
||||
|
||||
Assert.Null(swipeView.Content);
|
||||
Assert.Empty(swipeView.LeftItems);
|
||||
Assert.Empty(swipeView.RightItems);
|
||||
Assert.Empty(swipeView.TopItems);
|
||||
Assert.Empty(swipeView.BottomItems);
|
||||
Assert.Equal(SwipeMode.Reveal, swipeView.Mode);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Content_CanBeSet()
|
||||
{
|
||||
var swipeView = new SkiaSwipeView();
|
||||
var content = new SkiaLabel { Text = "Swipeable" };
|
||||
|
||||
swipeView.Content = content;
|
||||
|
||||
Assert.Equal(content, swipeView.Content);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void LeftItems_CanAddItems()
|
||||
{
|
||||
var swipeView = new SkiaSwipeView();
|
||||
var item = new SwipeItem { Text = "Delete", BackgroundColor = SKColors.Red };
|
||||
|
||||
swipeView.LeftItems.Add(item);
|
||||
|
||||
Assert.Single(swipeView.LeftItems);
|
||||
Assert.Equal("Delete", swipeView.LeftItems[0].Text);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void RightItems_CanAddItems()
|
||||
{
|
||||
var swipeView = new SkiaSwipeView();
|
||||
var item = new SwipeItem { Text = "Archive", BackgroundColor = SKColors.Blue };
|
||||
|
||||
swipeView.RightItems.Add(item);
|
||||
|
||||
Assert.Single(swipeView.RightItems);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SwipeItem_InvokedEvent_CanBeSubscribed()
|
||||
{
|
||||
var item = new SwipeItem { Text = "Test" };
|
||||
bool invoked = false;
|
||||
|
||||
item.Invoked += (s, e) => invoked = true;
|
||||
|
||||
Assert.False(invoked); // Event not raised yet
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Open_OpensSwipeInDirection()
|
||||
{
|
||||
var swipeView = new SkiaSwipeView();
|
||||
swipeView.RightItems.Add(new SwipeItem { Text = "Delete" });
|
||||
|
||||
swipeView.Open(SwipeDirection.Left);
|
||||
|
||||
// Open state is internal, but we verify no exception
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Close_ClosesOpenSwipe()
|
||||
{
|
||||
var swipeView = new SkiaSwipeView();
|
||||
swipeView.LeftItems.Add(new SwipeItem { Text = "Test" });
|
||||
swipeView.Open(SwipeDirection.Right);
|
||||
|
||||
swipeView.Close();
|
||||
|
||||
// Verifies no exception
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Mode_CanBeSetToExecute()
|
||||
{
|
||||
var swipeView = new SkiaSwipeView();
|
||||
|
||||
swipeView.Mode = SwipeMode.Execute;
|
||||
|
||||
Assert.Equal(SwipeMode.Execute, swipeView.Mode);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void LeftSwipeThreshold_CanBeSet()
|
||||
{
|
||||
var swipeView = new SkiaSwipeView();
|
||||
|
||||
swipeView.LeftSwipeThreshold = 150f;
|
||||
|
||||
Assert.Equal(150f, swipeView.LeftSwipeThreshold);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void RightSwipeThreshold_CanBeSet()
|
||||
{
|
||||
var swipeView = new SkiaSwipeView();
|
||||
|
||||
swipeView.RightSwipeThreshold = 150f;
|
||||
|
||||
Assert.Equal(150f, swipeView.RightSwipeThreshold);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SwipeStartedEvent_CanBeSubscribed()
|
||||
{
|
||||
var swipeView = new SkiaSwipeView();
|
||||
SwipeDirection? direction = null;
|
||||
|
||||
swipeView.SwipeStarted += (s, e) => direction = e.Direction;
|
||||
// Simulate internal swipe start
|
||||
swipeView.LeftItems.Add(new SwipeItem { Text = "Test" });
|
||||
|
||||
Assert.NotNull(swipeView);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SwipeEndedEvent_CanBeSubscribed()
|
||||
{
|
||||
var swipeView = new SkiaSwipeView();
|
||||
bool ended = false;
|
||||
|
||||
swipeView.SwipeEnded += (s, e) => ended = true;
|
||||
|
||||
Assert.NotNull(swipeView);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SwipeItem_TextColor_CanBeSet()
|
||||
{
|
||||
var item = new SwipeItem { TextColor = SKColors.Yellow };
|
||||
|
||||
Assert.Equal(SKColors.Yellow, item.TextColor);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SwipeItem_BackgroundColor_CanBeSet()
|
||||
{
|
||||
var item = new SwipeItem { BackgroundColor = SKColors.Green };
|
||||
|
||||
Assert.Equal(SKColors.Green, item.BackgroundColor);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SwipeItem_IconSource_CanBeSet()
|
||||
{
|
||||
var item = new SwipeItem { IconSource = "delete.png" };
|
||||
|
||||
Assert.Equal("delete.png", item.IconSource);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TopItems_CanAddItems()
|
||||
{
|
||||
var swipeView = new SkiaSwipeView();
|
||||
swipeView.TopItems.Add(new SwipeItem { Text = "Top" });
|
||||
|
||||
Assert.Single(swipeView.TopItems);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void BottomItems_CanAddItems()
|
||||
{
|
||||
var swipeView = new SkiaSwipeView();
|
||||
swipeView.BottomItems.Add(new SwipeItem { Text = "Bottom" });
|
||||
|
||||
Assert.Single(swipeView.BottomItems);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HitTest_ReturnsCorrectView()
|
||||
{
|
||||
var swipeView = new SkiaSwipeView();
|
||||
swipeView.Content = new SkiaLabel { Text = "Content" };
|
||||
swipeView.Arrange(new SKRect(0, 0, 300, 50));
|
||||
|
||||
var hit = swipeView.HitTest(150, 25);
|
||||
|
||||
Assert.NotNull(hit);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Measure_ReturnsCorrectSize()
|
||||
{
|
||||
var swipeView = new SkiaSwipeView();
|
||||
swipeView.Content = new SkiaLabel { Text = "Test" };
|
||||
|
||||
var size = swipeView.Measure(new SKSize(300, 100));
|
||||
|
||||
Assert.True(size.Width <= 300);
|
||||
Assert.True(size.Height <= 100);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user