using LehrerApp.Templating; using Xunit; namespace LehrerApp.Desktop.Tests; public sealed class _TempFlowCheck2 { [Fact] public void MarkerTest() { var outDir = @"C:\Users\SHedt\AppData\Local\Temp\claude\d--source-LehrerApp\fb3681df-caaf-4f2d-9996-e343e44f5554\scratchpad"; Directory.CreateDirectory(outDir); var commands = new List { new DrawStringEx(0, 0, 12, 170, "TOP-0", DrawingTextAlignment.AlignLeft, 10, Color: "#000000"), new DrawStringEx(0, 90, 12, 170, "NEARBOTTOM-90", DrawingTextAlignment.AlignLeft, 10, Color: "#000000"), new DrawStringEx(0, 105, 12, 170, "AFTERBOUNDARY-105", DrawingTextAlignment.AlignLeft, 10, Color: "#000000"), new DrawStringEx(0, 190, 12, 170, "BOTTOM-190", DrawingTextAlignment.AlignLeft, 10, Color: "#000000"), }; var drawing = new DrawingValue(commands, 200); var manifest = new TemplateManifest { Id = "marker", Name = "Marker", Placeholders = [new("Marker", PlaceholderType.Drawing, true)], }; var layout = "PAGE 210 297 mm\nFLOWDRAWBOX 20 20 170 100 $Marker\n"; var loadedLayout = new LayoutParser().Parse(layout); var loaded = new LoadedTemplate(manifest, loadedLayout, new Dictionary()); var provider = new FakeProvider(new Dictionary { ["Marker"] = drawing }); var pngs = new QuestTemplateRenderer().RenderPagesToPng(loaded, provider, dpi: 150); for (var i = 0; i < pngs.Count; i++) File.WriteAllBytes(Path.Combine(outDir, $"marker2-{i}.png"), pngs[i]); } private sealed class FakeProvider(IReadOnlyDictionary values) : ITemplateDataProvider { public IReadOnlyDictionary GetValues() => values; } }