using Avalonia; using LehrerApp.TemplateDesigner; using Xunit; namespace LehrerApp.TemplateDesigner.Tests; public sealed class OverlayEditorTests { [Fact] public void Koordinatenabbildung_BeruecksichtigtLetterboxUndIstUmkehrbar() { var displayedPage = OverlayCoordinateMapper.PageRect(new Size(1000, 1000), 210, 297); var dslRect = new Rect(20, 30, 80, 45); var controlRect = OverlayCoordinateMapper.ToControl(dslRect, displayedPage, 210, 297); var mappedTopLeft = OverlayCoordinateMapper.ToDsl(controlRect.TopLeft, displayedPage, 210, 297); var mappedBottomRight = OverlayCoordinateMapper.ToDsl(controlRect.BottomRight, displayedPage, 210, 297); Assert.Equal(1000, displayedPage.Height, 6); Assert.True(displayedPage.X > 140); Assert.Equal(dslRect.X, mappedTopLeft.X, 6); Assert.Equal(dslRect.Y, mappedTopLeft.Y, 6); Assert.Equal(dslRect.Right, mappedBottomRight.X, 6); Assert.Equal(dslRect.Bottom, mappedBottomRight.Y, 6); } [Fact] public void Messbereich_WirdInElementformularUebernommen() { var viewModel = new DesignerViewModel(); viewModel.ApplyMeasurement(new(12.5, 34.25, 80, 22.5, true)); Assert.Equal("12.5", viewModel.NewX); Assert.Equal("34.25", viewModel.NewY); Assert.Equal("80", viewModel.NewWidth); Assert.Equal("22.5", viewModel.NewHeight); } [Fact] public void TextVerschieben_ErhaeltInhaltUndAttribute() { var viewModel = new DesignerViewModel { LayoutSource = "PAGE 210 297 mm\nTEXT 20 30 \"Hallo Welt\" size=10 bold=true" }; viewModel.ApplyElementGeometry(new(2, "TEXT", 25.5, 40, 70, 5)); Assert.Contains("TEXT 25.5 40 \"Hallo Welt\" size=10 bold=true", viewModel.LayoutSource); } [Fact] public void SkaliertesBildResize_RechnetEffektivenRahmenZurueckUndErhaeltScale() { var viewModel = new DesignerViewModel { LayoutSource = "PAGE 210 297 mm\nIMG logo.png 10 15 30 12 scale=50%" }; viewModel.ApplyElementGeometry(new(2, "IMG", 20, 25, 30, 12)); Assert.Contains("IMG logo.png 20 25 60 24 scale=50%", viewModel.LayoutSource); } [Fact] public void DslSeitengroesse_SteuertOverlayAuchBeiAbweichendemManifestformular() { var viewModel = new DesignerViewModel { PageWidth = 210, PageHeight = 297 }; viewModel.LayoutSource = "PAGE 200 200 pt"; Assert.Equal(200, viewModel.OverlayPageWidth); Assert.Equal(200, viewModel.OverlayPageHeight); Assert.Equal("pt", viewModel.OverlayPageUnit); } }