using AcDream.Core.Meshing; using DatReaderWriter.Enums; namespace AcDream.Core.Tests.Meshing; /// /// Verifies that maps /// SurfaceType flag combinations to the correct /// according to the documented priority order: /// Additive > InvAlpha > AlphaBlend (Alpha|Translucent) > ClipMap > Opaque /// public class TranslucencyKindTests { // ── Opaque cases ──────────────────────────────────────────────────────── [Fact] public void Opaque_FromZeroFlags_ReturnsOpaque() => Assert.Equal(TranslucencyKind.Opaque, TranslucencyKindExtensions.FromSurfaceType((SurfaceType)0)); [Fact] public void Opaque_FromBase1SolidFlag_ReturnsOpaque() => Assert.Equal(TranslucencyKind.Opaque, TranslucencyKindExtensions.FromSurfaceType(SurfaceType.Base1Solid)); [Fact] public void Opaque_FromBase1ImageFlag_ReturnsOpaque() => Assert.Equal(TranslucencyKind.Opaque, TranslucencyKindExtensions.FromSurfaceType(SurfaceType.Base1Image)); // ── ClipMap cases ─────────────────────────────────────────────────────── [Fact] public void ClipMap_FromBase1ClipMapFlag_ReturnsClipMap() => Assert.Equal(TranslucencyKind.ClipMap, TranslucencyKindExtensions.FromSurfaceType(SurfaceType.Base1ClipMap)); [Fact] public void ClipMap_WithOtherOpaqueFlags_ReturnsClipMap() => Assert.Equal(TranslucencyKind.ClipMap, TranslucencyKindExtensions.FromSurfaceType(SurfaceType.Base1ClipMap | SurfaceType.Gouraud)); // ── AlphaBlend cases ──────────────────────────────────────────────────── [Fact] public void AlphaBlend_FromAlphaFlag_ReturnsAlphaBlend() => Assert.Equal(TranslucencyKind.AlphaBlend, TranslucencyKindExtensions.FromSurfaceType(SurfaceType.Alpha)); [Fact] public void AlphaBlend_FromTranslucentFlag_ReturnsAlphaBlend() => Assert.Equal(TranslucencyKind.AlphaBlend, TranslucencyKindExtensions.FromSurfaceType(SurfaceType.Translucent)); [Fact] public void AlphaBlend_FromAlphaAndTranslucentFlags_ReturnsAlphaBlend() => Assert.Equal(TranslucencyKind.AlphaBlend, TranslucencyKindExtensions.FromSurfaceType(SurfaceType.Alpha | SurfaceType.Translucent)); [Fact] public void AlphaBlend_AlphaWithClipMap_AlphaWins() => Assert.Equal(TranslucencyKind.AlphaBlend, TranslucencyKindExtensions.FromSurfaceType(SurfaceType.Alpha | SurfaceType.Base1ClipMap)); // ── InvAlpha cases ────────────────────────────────────────────────────── [Fact] public void InvAlpha_FromInvAlphaFlag_ReturnsInvAlpha() => Assert.Equal(TranslucencyKind.InvAlpha, TranslucencyKindExtensions.FromSurfaceType(SurfaceType.InvAlpha)); [Fact] public void InvAlpha_InvAlphaBeatsAlpha() => Assert.Equal(TranslucencyKind.InvAlpha, TranslucencyKindExtensions.FromSurfaceType(SurfaceType.InvAlpha | SurfaceType.Alpha)); // ── Additive cases ────────────────────────────────────────────────────── [Fact] public void Additive_FromAdditiveFlag_ReturnsAdditive() => Assert.Equal(TranslucencyKind.Additive, TranslucencyKindExtensions.FromSurfaceType(SurfaceType.Additive)); [Fact] public void Additive_AdditiveBeatsAllOther() => Assert.Equal(TranslucencyKind.Additive, TranslucencyKindExtensions.FromSurfaceType( SurfaceType.Additive | SurfaceType.InvAlpha | SurfaceType.Alpha | SurfaceType.Base1ClipMap)); }