using System.IO; using Rozpisky.Dxf; using Xunit; namespace Rozpisky.Tests; /// /// Nabídka log ze dvou složek (): dodávaná vedle .exe /// a uživatelská, na kterou přeinstalace nesahá. Stejná hierarchie jako u číselníků – /// uživatelovo logo stejného jména přebíjí dodávané. /// public class LogaVrstvyTesty : IDisposable { private readonly string _koren = Path.Combine(Path.GetTempPath(), "rozpisky-loga-testy-" + Guid.NewGuid().ToString("N")); private readonly string _dodavana; private readonly string _uzivatelska; public LogaVrstvyTesty() { _dodavana = Path.Combine(_koren, "dodavana"); _uzivatelska = Path.Combine(_koren, "uzivatelska"); Directory.CreateDirectory(_dodavana); Directory.CreateDirectory(_uzivatelska); } public void Dispose() { try { Directory.Delete(_koren, recursive: true); } catch (IOException) { } GC.SuppressFinalize(this); } private void Zaloz(string dir, params string[] soubory) { foreach (var s in soubory) File.WriteAllText(Path.Combine(dir, s), "0\nEOF\n"); } [Fact] public void BezUzivatelskychLogSeVratiJenDodavana() { Zaloz(_dodavana, "exprojekt.dxf", "mco.dxf"); Assert.Equal(new[] { "exprojekt.dxf", "mco.dxf" }, LogaResolver.SlozNabidku(_uzivatelska, _dodavana)); } [Fact] public void UzivatelskaLogaSeDoplniKDodavanym() { Zaloz(_dodavana, "exprojekt.dxf"); Zaloz(_uzivatelska, "nova_firma.dxf"); Assert.Equal(new[] { "exprojekt.dxf", "nova_firma.dxf" }, LogaResolver.SlozNabidku(_uzivatelska, _dodavana)); } [Fact] public void StejneJmenoSeVNabidceNezdvoji() { // Uživatel si opravil dodávané logo a uložil ho pod stejným jménem k sobě – // v comboboxu musí zůstat jedna položka, ne dvě nerozlišitelné. Zaloz(_dodavana, "exprojekt.dxf"); Zaloz(_uzivatelska, "exprojekt.dxf"); Assert.Equal(new[] { "exprojekt.dxf" }, LogaResolver.SlozNabidku(_uzivatelska, _dodavana)); } [Fact] public void ChybejiciUzivatelskaSlozkaNevadi() { Zaloz(_dodavana, "exprojekt.dxf"); var neexistuje = Path.Combine(_koren, "tady-nic-neni"); Assert.Equal(new[] { "exprojekt.dxf" }, LogaResolver.SlozNabidku(neexistuje, _dodavana)); } [Fact] public void NabidkaJeAbecedniAIgnorujeJineNezDxf() { Zaloz(_dodavana, "tesia.dxf", "README.txt", "mco.dxf"); Zaloz(_uzivatelska, "alfa.dxf"); Assert.Equal(new[] { "alfa.dxf", "mco.dxf", "tesia.dxf" }, LogaResolver.SlozNabidku(_uzivatelska, _dodavana)); } }