using System.IO;
using System.Text;
using LanMountainDesktop.Services;
using Xunit;
namespace LanMountainDesktop.Tests;
public sealed class WhiteboardSvgImportServiceTests
{
[Fact]
public void Import_WithFilledPath_CreatesStaticStrokeSnapshot()
{
using var stream = ToStream("""
""");
var result = WhiteboardSvgImportService.Import(stream, targetWidth: 200, targetHeight: 100);
Assert.Single(result.Strokes);
Assert.Equal("#FF112233", result.Strokes[0].Color);
Assert.Empty(result.Strokes[0].Points);
Assert.False(string.IsNullOrWhiteSpace(result.Strokes[0].PathSvgData));
}
[Fact]
public void Import_WithStrokePath_ConvertsStrokeToFilledPath()
{
using var stream = ToStream("""
""");
var result = WhiteboardSvgImportService.Import(stream, targetWidth: 100, targetHeight: 100);
Assert.Single(result.Strokes);
Assert.Equal("#FFFF0000", result.Strokes[0].Color);
Assert.True(result.Strokes[0].InkThickness >= 6d);
Assert.Empty(result.Strokes[0].Points);
Assert.False(string.IsNullOrWhiteSpace(result.Strokes[0].PathSvgData));
}
[Fact]
public void Import_WithStylePresentationAttributes_ParsesStyleValues()
{
using var stream = ToStream("""
""");
var result = WhiteboardSvgImportService.Import(stream, targetWidth: 100, targetHeight: 100);
Assert.Single(result.Strokes);
Assert.Equal("#FF00FF00", result.Strokes[0].Color);
Assert.True(result.Strokes[0].InkThickness >= 4d);
}
private static MemoryStream ToStream(string svg)
{
return new MemoryStream(Encoding.UTF8.GetBytes(svg));
}
}