Baseline: současný stav projektu Rozpisky
První commit — WPF aplikace pro generování výkresových rohových razítek (.NET 10, SkiaSharp, ACadSharp, ClosedXML) včetně xUnit testů, DXF šablony, log a dokumentace. Build výstupy (bin/, obj/, .vs/) jsou ignorovány. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
using System.IO;
|
||||
using ACadSharp.Entities;
|
||||
using ACadSharp.IO;
|
||||
using Rozpisky.Dxf;
|
||||
using Rozpisky.Rendering;
|
||||
using Xunit;
|
||||
|
||||
namespace Rozpisky.Tests;
|
||||
|
||||
/// <summary>
|
||||
/// Oblique úhel textu (kurzíva náklonem, DXF group 51/50) – dřív se ignoroval a text
|
||||
/// se kreslil vzpřímeně. „SUDOP BRNO" má v DXF group 51 = 15° a group 41 (width) = 0,7.
|
||||
/// </summary>
|
||||
public class ObliqueTesty
|
||||
{
|
||||
[Fact]
|
||||
public void SudopBrno_TextNeseObliqueAWidthFactor()
|
||||
{
|
||||
var rec = new RecordingRenderer();
|
||||
new DxfTemplate(TestData.Logo("sudopBrno.dxf")).Replay(rec);
|
||||
|
||||
var t = Assert.Single(rec.Texts);
|
||||
Assert.Equal("SUDOP BRNO", t.Text);
|
||||
Assert.Equal(15.0, t.Style.ObliqueDeg, 2); // DXF group 51 = 15.0
|
||||
Assert.Equal(0.7, t.WidthFactor, 3);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void OstatniLoga_MajiObliqueNula()
|
||||
{
|
||||
// Regrese: žádné jiné logo oblique nemá – nesmí se objevit nenulový sklon.
|
||||
foreach (var name in TestData.VsechnaLoga.Where(n => n != "sudopBrno.dxf"))
|
||||
{
|
||||
var rec = new RecordingRenderer();
|
||||
new DxfTemplate(TestData.Logo(name)).Replay(rec);
|
||||
Assert.All(rec.Texts, t => Assert.Equal(0, t.Style.ObliqueDeg));
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void DxfExport_ZachovaObliqueNaTextu()
|
||||
{
|
||||
var dxf = new DxfProfileRenderer();
|
||||
dxf.Layer("0", 0x000000, 0.25);
|
||||
dxf.Text(10, 20, "Zkouška", 2.5, style: new TextStyle("Arial", ObliqueDeg: 3));
|
||||
|
||||
string path = Path.Combine(Path.GetTempPath(), $"rozpisky-oblique-{Guid.NewGuid():N}.dxf");
|
||||
try
|
||||
{
|
||||
DxfWriter.Write(path, dxf.Document, binary: false);
|
||||
var doc = DxfReader.Read(path);
|
||||
var t = Assert.Single(doc.Entities.OfType<TextEntity>());
|
||||
Assert.Equal(3.0 * Math.PI / 180.0, t.ObliqueAngle, 6);
|
||||
}
|
||||
finally
|
||||
{
|
||||
File.Delete(path);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user