Kořen mísil tři nesouvisející věci. Nově:
- docs/ – podklady jen pro tvorbu programu (ROZPISKY, ROZHRANI,
PODKLAD_CAD, manuál SŽ v .md)
- Rozpisky/Podklady/ – podklady nutné k běhu, dodávané vedle .exe
(Rozpiska.dxf, SEZNAM.xlsx, manuál .pdf, ciselniky.json,
mapovani.json, loga/)
- vzorky/ – cizí vstupy pro ruční zkoušení (schema.dxf)
Mění se jen zdrojový strom. Rozvržení vedle .exe zůstává ploché (+ loga\)
přes metadata Link v .csproj, takže všechny resolvery nad AppContext.BaseDirectory
fungují beze změny. Konec odkazů přes ..\ ven z projektu.
Doprovodně: cesty v TestData.Logo, odkazy v dokumentaci, CLAUDE.md a v promptech
subagentů.
Build 0 chyb / 0 varování, 36 testů zelených.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
32 lines
1.2 KiB
C#
32 lines
1.2 KiB
C#
using System.IO;
|
||
|
||
namespace Rozpisky.Tests;
|
||
|
||
/// <summary>Cesty k testovacím datům (loga DXF dodávaná s programem).</summary>
|
||
public static class TestData
|
||
{
|
||
/// <summary>Kořen repozitáře – nalezen od bin složky testů směrem nahoru podle Rozpisky.sln.</summary>
|
||
public static string RepoRoot { get; } = NajdiKoren();
|
||
|
||
/// <summary>Plná cesta k logu ve zdrojové složce <c>Rozpisky\Podklady\loga</c>.</summary>
|
||
public static string Logo(string fileName) => Path.Combine(RepoRoot, "Rozpisky", "Podklady", "loga", fileName);
|
||
|
||
/// <summary>Všech 9 log dodávaných s programem.</summary>
|
||
public static readonly string[] VsechnaLoga =
|
||
{
|
||
"eu_op_doprava.dxf", "md_sfdi.dxf", "sprava_zeleznic.dxf", "exprojekt.dxf",
|
||
"signalprojekt.dxf", "tesia.dxf", "mco.dxf", "exprojekt+mco.dxf", "sudopBrno.dxf",
|
||
};
|
||
|
||
private static string NajdiKoren()
|
||
{
|
||
var dir = new DirectoryInfo(AppContext.BaseDirectory);
|
||
while (dir is not null)
|
||
{
|
||
if (File.Exists(Path.Combine(dir.FullName, "Rozpisky.sln"))) return dir.FullName;
|
||
dir = dir.Parent!;
|
||
}
|
||
throw new InvalidOperationException("Rozpisky.sln nenalezen nad " + AppContext.BaseDirectory);
|
||
}
|
||
}
|