using Xunit;

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

/// <summary>
///     Phase 4c array intent (<c>isArray</c> + optional <c>arrayLength</c>) byte-parity between the two
///     equipment-tag producers.
///     <para>
///     <b>v3 DARK (Batch 1):</b> equipment-tag variable plans do not materialize — the composer and the
///     artifact both emit an EMPTY <c>EquipmentTags</c> set until the Batch-4 dual-namespace UNS↔Raw
///     fan-out, so there is nothing to compare. The underlying parse of <c>isArray</c> / <c>arrayLength</c>
///     from a raw <c>TagConfig</c> blob is characterized today by <c>TagConfigIntentTests</c> and
///     round-tripped through the artifact by <see cref="TagConfigCorpusParityTests"/> (RawTagEntry
///     byte-preservation). Unskip when Batch 4 lights the equipment-tag plans.
///     </para>
/// </summary>
public sealed class DeploymentArtifactArrayParityTests
{
    /// <summary>Batch-4 pending: composer and artifact agree on array equipment-tag plans
    /// (IsArray + ArrayLength). See class remarks — equipment-tag plans are dark this batch.</summary>
    [Fact(Skip = DarkAddressSpaceReasons.EquipmentTagsDarkBatch4)]
    public void Composer_and_artifact_agree_on_array_equipment_tags()
    {
        // Restored when Batch 4 materializes equipment-tag variable plans: compose a draft exercising every
        // array branch (isArray:true+length, absent, isArray:true no length, non-number length) and assert
        // decoded EquipmentTags == composed element-wise.
    }
}
