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)); } }