using Xunit;

namespace ZB.MOM.WW.OtOpcUa.Runtime.Tests.Drivers;

/// <summary>
///     Phase C HistoryRead intent (<c>isHistorized</c> + optional <c>historianTagname</c>) byte-parity
///     between the two equipment-tag producers.
///     <para>
///     <b>v3 DARK (Batch 1):</b> equipment-tag variable plans do not materialize —
///     <c>AddressSpaceComposer.Compose</c> and <c>DeploymentArtifact.ParseComposition</c> both emit an
///     EMPTY <c>EquipmentTags</c> set until the Batch-4 dual-namespace UNS↔Raw fan-out. There is nothing
///     to compare, so the parity assertion is parked. The underlying parse of <c>isHistorized</c> /
///     <c>historianTagname</c> from a raw <c>TagConfig</c> blob is characterized today by
///     <c>TagConfigIntentTests</c> (the parse unit) and round-tripped through the artifact by
///     <see cref="TagConfigCorpusParityTests"/> (RawTagEntry byte-preservation). Unskip + restore the
///     composer↔artifact equipment-tag comparison when Batch 4 lights the equipment-tag plans.
///     </para>
/// </summary>
public sealed class DeploymentArtifactHistorizeParityTests
{
    /// <summary>Batch-4 pending: composer and artifact agree on historized equipment-tag plans
    /// (IsHistorized + HistorianTagname). See class remarks — equipment-tag plans are dark this batch.</summary>
    [Fact(Skip = DarkAddressSpaceReasons.EquipmentTagsDarkBatch4)]
    public void Composer_and_artifact_agree_on_historized_equipment_tags()
    {
        // Restored when Batch 4 materializes equipment-tag variable plans: compose a draft with a
        // historized tag (no explicit tagname → HistorianTagname null), a historized tag WITH an explicit
        // historianTagname override, and a plain tag; assert decoded EquipmentTags == composed element-wise.
    }
}
