using Xunit; namespace ZB.MOM.WW.OtOpcUa.Runtime.Tests.Drivers; /// /// Phase 4c array intent (isArray + optional arrayLength) byte-parity between the two /// equipment-tag producers. /// /// v3 DARK (Batch 1): equipment-tag variable plans do not materialize — the composer and the /// artifact both emit an EMPTY EquipmentTags set until the Batch-4 dual-namespace UNS↔Raw /// fan-out, so there is nothing to compare. The underlying parse of isArray / arrayLength /// from a raw TagConfig blob is characterized today by TagConfigIntentTests and /// round-tripped through the artifact by (RawTagEntry /// byte-preservation). Unskip when Batch 4 lights the equipment-tag plans. /// /// public sealed class DeploymentArtifactArrayParityTests { /// Batch-4 pending: composer and artifact agree on array equipment-tag plans /// (IsArray + ArrayLength). See class remarks — equipment-tag plans are dark this batch. [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. } }