using Rozpisky.Rendering; using Xunit; namespace Rozpisky.Tests; /// /// Rozřešení stavu kresby: co se má nakreslit, když barvu neurčí entita, ale hladina. /// Chyba tady se projeví špatnou barvou v náhledu, ne pádem – proto explicitní testy. /// public class BarvaTesty { private static KresliciStav Stav(Barva entita, Barva hladina) => new(HladinaStav.Vychozi with { Barva = hladina }, entita); [Fact] public void VlastniBarvaEntityPrebijiHladinu() { Assert.Equal(0x0000FF, Stav(Barva.Aci(5), Barva.Aci(1)).RgbProKresbu()); Assert.Equal(0x123456, Stav(Barva.Prima(0x123456), Barva.Aci(1)).RgbProKresbu()); } [Fact] public void ByLayerSiVezmeBarvuHladiny() => Assert.Equal(0xFF0000, Stav(Barva.ZHladiny, Barva.Aci(1)).RgbProKresbu()); [Fact] public void ByBlockMimoBlokSeChovaJakoByLayer() => Assert.Equal(0xFF0000, Stav(Barva.ZBloku, Barva.Aci(1)).RgbProKresbu()); [Fact] public void ByLayerNadHladinouBezBarvyDaCernou() => Assert.Equal(0x000000, Stav(Barva.ZHladiny, Barva.ZHladiny).RgbProKresbu()); [Fact] public void TloustkaPadaZEntityNaHladinuAPakNaVychozi() { var h = HladinaStav.Vychozi with { TloustkaMm = 0.5 }; Assert.Equal(0.35, new KresliciStav(h, Barva.ZHladiny, TloustkaMm: 0.35).TloustkaKresby(), 3); Assert.Equal(0.5, new KresliciStav(h, Barva.ZHladiny).TloustkaKresby(), 3); Assert.Equal(KresliciStav.VychoziTloustkaMm, new KresliciStav(HladinaStav.Vychozi, Barva.ZHladiny).TloustkaKresby(), 3); } [Fact] public void TypCaryPadaZEntityNaHladinuAPakNaContinuous() { var h = HladinaStav.Vychozi with { TypCary = "DASHED" }; Assert.Equal("CENTER", new KresliciStav(h, Barva.ZHladiny, TypCary: "CENTER").TypCaryKresby()); Assert.Equal("DASHED", new KresliciStav(h, Barva.ZHladiny).TypCaryKresby()); Assert.Equal("Continuous", new KresliciStav(h with { TypCary = "" }, Barva.ZHladiny).TypCaryKresby()); } [Fact] public void IndexNeseIRgbProKresbu() { var b = Barva.Aci(5); Assert.Equal(BarvaDruh.Index, b.Druh); Assert.Equal(5, b.Index); Assert.Equal(0x0000FF, b.Rgb); Assert.True(b.JeVlastni); Assert.False(Barva.ZHladiny.JeVlastni); } }