namespace ZB.MOM.WW.OtOpcUa.Driver.AbLegacy.IntegrationTests;
///
/// Crosses the PCCC compose profiles with both AbLegacy transports so each integration test runs
/// once on libplctag and once on the native managed stack.
///
///
/// Preserves the AB_LEGACY_COMPOSE_PROFILE filter the smoke theory always applied: when set,
/// is narrowed to that profile before it is crossed with the
/// transports, so the rows match the running container. Unset, every family is crossed because each
/// has its own port and skips itself when unreachable — unlessAB_LEGACY_ENDPOINT pins
/// one device, in which case the family is a property of that device and cannot be detected, so only
/// the default SLC500 profile is crossed (set AB_LEGACY_COMPOSE_PROFILE to pick another).
///
public static class TransportMatrix
{
/// Both transports, for tests that are not parameterised by profile.
public static IReadOnlyList AllTransports { get; } =
[AbLegacyTransport.Libplctag, AbLegacyTransport.Native];
/// Gets (profile, transport) rows for every selected profile × both transports.
public static IEnumerable