PROFINET IO Controller Stack 1.0.0
Modern C++ implementation of a PROFINET IO Controller stack
Loading...
Searching...
No Matches
Test List
Member profinet::cyclic::CyclicControllerTestAccess::FirstOutputIocs (const CyclicController &controller)
Verifies that the expected IOCS value reaches the send buffer.
Member profinet::cyclic::CyclicControllerTestAccess::SetAllOutputIocs (CyclicController &controller, std::uint8_t status)
Allows the test to reproduce the BAD-IOCS state created by a watchdog fault.
Member profinet::cyclic::TEST_F (CyclicControllerConformanceTest, VlanTaggedInputFrameIsAccepted)
Verify that a priority VLAN-tagged cyclic input frame is accepted.
Member profinet::cyclic::TEST_F (CyclicControllerConformanceTest, NonZeroTransferStatusIsRejected)
Verify that a non-zero TransferStatus frame is rejected.
Member profinet::cyclic::TEST_F (CyclicControllerConformanceTest, TxContinuesWhileControllerIsInFault)
Verify that cyclic output transmission continues while in FAULT.
Member profinet::cyclic::TEST_F (CyclicStateTests, StopDoesNotDestroyRxSocketBeforeRxThreadExits)
Verify Stop never destroys the RX socket while Recv is still executing.
Member profinet::cyclic::TEST_F (CyclicStateTests, StartAcceptsFaultState)
Start can restart a controller explicitly placed in FAULT.
Member profinet::cyclic::TEST_F (CyclicControllerConformanceTest, UntaggedInputFrameIsAccepted)
Verify that an untagged cyclic input frame is accepted.
Member profinet::cyclic::TEST_F (CyclicStateTests, ToStringReturnsUnknownForInvalidValue)
ToString returns unknown for an enum value outside the defined states.
Member profinet::cyclic::TEST_F (CyclicStateTests, TransitionCallsCallbackForStateChange)
Transition invokes the state callback for a real state change.
Member profinet::cyclic::TEST_F (CyclicStateTests, TransitionSkipsCallbackForSameState)
Transition skips callbacks when the state does not change.
Member profinet::cyclic::TEST_F (CyclicStateTests, TransitionSwallowsCallbackException)
Transition swallows an exception from the application callback.
Member profinet::cyclic::TEST_F (CyclicStateTests, StartRejectsInvalidStartingStates)
Start rejects states that are neither idle, stopped nor faulted.
Member profinet::cyclic::TEST_F (CyclicTxTests, SendStopFramesStopsAfterSendErrorCallbackThrows)
SendStopFrames stops after an exception escapes the send path.
Member profinet::cyclic::TEST_F (CyclicTest, CyclicControllerConstructsWithSafeCycleTime)
CyclicController constructs successfully with a safe cycle time
Member profinet::cyclic::TEST_F (CyclicTest, CyclicControllerRejectsSub1msCycleTime)
CyclicController rejects sub-1ms cycle time
Member profinet::cyclic::TEST_F (CyclicTest, CyclicControllerRejectsNegativeMaxConsecutiveTimeouts)
CyclicController rejects negative max_consecutive_timeouts
Member profinet::cyclic::TEST_F (CyclicTest, CyclicStatsResetRestoresInitialValues)
CyclicStats::reset restores initial values
Member profinet::cyclic::TEST_F (CyclicTest, CyclicStateToStringCoversAllStates)
CyclicState::ToString covers all states
Member profinet::cyclic::TEST_F (CyclicTxTests, SetOutputDataIsReflectedInTransmittedFrame)
SetOutputData changes the payload emitted by the next cyclic frame.
Member profinet::cyclic::TEST_F (ReceivedIopsTest, DISABLED_LowerIopsBitsDoNotAffectGoodState)
Verify that only the IOPS DataState bit determines GOOD/BAD.
Member profinet::cyclic::TEST_F (ReceivedIopsTest, InputCallbackSkipsBadData)
Verify that the application input callback skips BAD IOPS data.
Member profinet::cyclic::TEST_F (ReceivedIopsTest, StatusCallbackFiresOnlyOnTransitions)
Verify that the IOPS callback is generated only on status transitions.
Member profinet::cyclic::TEST_F (ReceivedIopsTest, DISABLED_BadIopsWithholdsStaleInputData)
Verify that BAD IOPS withholds stale input data.
Member profinet::cyclic::TEST_F (ReceivedIopsTest, GoodIopsDeliversInputData)
Verify that input data with GOOD IOPS is delivered.
Member profinet::cyclic::TEST_F (CyclicFrameTests, RejectsInvalidDataStatus)
ProcessInputFrame counts a frame with an invalid DataStatus as invalid.
Member profinet::cyclic::TEST_F (CyclicFrameTests, TrackCycleCounterCountsOutOfOrder)
TrackCycleCounter counts a sufficiently old frame as out of order.
Member profinet::cyclic::TEST_F (CyclicFrameTests, TrackCycleCounterCountsForwardGap)
TrackCycleCounter counts missing forward cycles.
Member profinet::cyclic::TEST_F (CyclicFrameTests, TrackCycleCounterAcceptsExpectedStep)
TrackCycleCounter accepts the expected next cycle without a miss.
Member profinet::cyclic::TEST_F (CyclicFrameTests, TrackCycleCounterCountsDuplicate)
TrackCycleCounter counts an exact duplicate frame.
Member profinet::cyclic::TEST_F (CyclicFrameTests, TrackCycleCounterInitializesOnFirstFrame)
TrackCycleCounter initializes its previous counter on the first frame.
Member profinet::cyclic::TEST_F (CyclicFrameTests, SkipsObjectWithInvalidDataRange)
ProcessInputFrame skips an object whose data range exceeds the payload.
Member profinet::cyclic::TEST_F (CyclicFrameTests, SkipsObjectWithInvalidIopsOffset)
ProcessInputFrame skips an object whose IOPS offset exceeds the payload.
Member profinet::cyclic::TEST_F (CyclicFrameTests, DISABLED_ValidInputRestoresIocsGoodState)
ProcessInputFrame restores GOOD IOCS after a valid frame following a watchdog fault.
Member profinet::cyclic::TEST_F (CyclicFrameTests, RejectsNonZeroTransferStatus)
ProcessInputFrame counts a non-zero TransferStatus as invalid.
Member profinet::cyclic::TEST_F (CyclicFrameTests, TrackCycleCounterHandlesZeroStep)
TrackCycleCounter handles a zero cycle step without dividing by zero.
Member profinet::cyclic::TEST_F (CyclicFrameTests, AcceptsVlanTaggedInputFrame)
ProcessInputFrame accepts a priority-tagged Ethernet frame.
Member profinet::cyclic::TEST_F (CyclicFrameTests, RejectsUnexpectedFrameId)
ProcessInputFrame rejects a frame with the wrong FrameID.
Member profinet::cyclic::TEST_F (CyclicFrameTests, RejectsMalformedRtFrame)
ProcessInputFrame safely ignores malformed RT bytes that throw during parsing.
Member profinet::cyclic::TEST_F (CyclicFrameTests, RejectsUnexpectedSourceMac)
ProcessInputFrame rejects an unexpected source MAC.
Member profinet::cyclic::TEST_F (CyclicFrameTests, RejectsUnexpectedEtherType)
ProcessInputFrame rejects an unexpected EtherType.
Member profinet::cyclic::TEST_F (CyclicFrameTests, RejectsTooShortEthernetFrame)
ProcessInputFrame rejects Ethernet frames shorter than the minimum header.
Member profinet::cyclic::TEST_F (CyclicCallbackTests, TimeoutAndErrorCallbacksCanBeRegistered)
OnTimeout and OnError registrations are accepted without invoking them.
Member profinet::cyclic::TEST_F (CyclicCallbackTests, InputDataCallbackSwallowsException)
OnInput swallows application callback exceptions.
Member profinet::cyclic::TEST_F (CyclicCallbackTests, InputDataCallbackSkipsEmptyData)
OnInput skips callback delivery when the configured object has zero data bytes.
Member profinet::cyclic::TEST_F (CyclicWatchdogTests, RxLoopReportsSocketException)
RxLoop reports receive exceptions through OnError.
Member profinet::cyclic::TEST_F (CyclicTxTests, SendStopFramesWithoutSocketDoesNothing)
SendStopFrames does nothing when no TX socket exists.
Member profinet::cyclic::TEST_F (CyclicTxTests, SendStopFramesGeneratesStopFrameCount)
SendStopFrames emits exactly STOP_FRAME_COUNT frames.
Member profinet::cyclic::TEST_F (CyclicTxTests, SendOutputFrameUsesDataStatusOverride)
SendOutputFrame honors a caller-provided DataStatus override.
Member profinet::cyclic::TEST_F (CyclicTxTests, SendOutputFrameReportsSocketError)
SendOutputFrame routes socket failures to OnError.
Member profinet::cyclic::TEST_F (CyclicTxTests, SendOutputFrameWithoutSocketDoesNotThrow)
SendOutputFrame does nothing when the TX socket is absent.
Member profinet::cyclic::TEST_F (CyclicTxTests, TxCycleSendsInFault)
TxCycle continues to transmit while the controller is in FAULT.
Member profinet::cyclic::TEST_F (CyclicTxTests, TxCycleSendsFrameAndUpdatesStatistics)
TxCycle transmits a frame and increments framesSent.
Member profinet::cyclic::TEST_F (CyclicTxTests, TxLoopRecordsCycleTiming)
TxLoop records cycle timing statistics across two transmitted cycles.
Member profinet::cyclic::TEST_F (CyclicWatchdogTests, RxLoopHandlesWatchdogTimeout)
RxLoop handles an elapsed watchdog timeout and invokes OnTimeout.
Member profinet::cyclic::TEST_F (CyclicStateTests, StopDoesNothingWhenNotRunning)
Stop returns without changing state when no worker is running.
Member profinet::cyclic::TEST_F (CyclicWatchdogTests, RxLoopStopsWithoutSocket)
RxLoop exits cleanly when the receive socket is absent.
Member profinet::cyclic::TEST_F (CyclicWatchdogTests, RxLoopProcessesValidFrame)
RxLoop processes a valid received frame before the worker is stopped.
Member profinet::cyclic::TEST_F (CyclicWatchdogTests, WatchdogDoesNotRepeatBadTransition)
IOCS is marked BAD only on the first watchdog faulting transition.
Member profinet::cyclic::TEST_F (CyclicWatchdogTests, TimeoutCallbackSwallowsException)
A timeout callback exception is swallowed by watchdog handling.
Member profinet::cyclic::TEST_F (CyclicWatchdogTests, WatchdogDoesNotTransitionWhenAlreadyFaulted)
Watchdog handling does not re-enter FAULT when already faulted.
Member profinet::cyclic::TEST_F (CyclicWatchdogTests, WatchdogFaultsAtConfiguredThreshold)
Watchdog handling enters FAULT when the configured threshold is reached.
Member profinet::cyclic::TEST_F (CyclicWatchdogTests, MonitoringOnlyWatchdogKeepsIocsGood)
Monitoring-only watchdog mode keeps IOCS GOOD and never faults.
Member profinet::cyclic::TEST_F (CyclicWatchdogTests, WatchdogTimeoutUpdatesStatistics)
Watchdog timeout increments missed and consecutive-timeout statistics.
Member profinet::cyclic::TEST_F (CyclicCallbackTests, InputDataCallbackRunsForGoodInput)
OnInput runs for a GOOD input object and receives the payload.
Member profinet::cyclic::TEST_F (CyclicCallbackTests, InputDataCallbackSkipsBadInput)
OnInput does not run for a BAD input object.
Member profinet::cyclic::TEST_F (CyclicStateTests, StartAcceptsStoppedState)
Start accepts the STOPPED state as a restart point.
Member profinet::cyclic::TEST_F (CyclicStateTests, StartAndStopCompleteNormalLifecycle)
Start and Stop complete the normal lifecycle using injected sockets.
Member profinet::cyclic::TEST_F (CyclicStatsTests, AverageCycleTimeReturnsIntegerAverage)
AvgCycleTimeUs calculates the integer average.
Member profinet::cyclic::TEST_F (CyclicStatsTests, AverageCycleTimeReturnsZeroWhenNoCycles)
AvgCycleTimeUs returns zero when no cycles were recorded.
Member profinet::cyclic::TEST_F (CyclicStatsTests, SnapshotAverageCycleTimeReturnsZeroWhenNoCycles)
AvgCycleTimeUs on a snapshot returns zero when no cycles were recorded.
Member profinet::cyclic::TEST_F (CyclicStatsTests, StatsSnapshotCopiesAllFields)
StatsSnapshot copies all public statistics fields.
Member profinet::cyclic::TEST_F (CyclicStatsTests, ResetRestoresInitialValues)
CyclicStats::Reset restores all counters used by the controller.
Member profinet::cyclic::TEST_F (CyclicDataTests, GetInputDataReturnsNulloptForUnknownObject)
GetInputData returns no value for an unknown object.
Member profinet::cyclic::TEST_F (CyclicDataTests, GetInputDataReturnsGoodInput)
GetInputData returns received bytes when IOPS is GOOD.
Member profinet::cyclic::TEST_F (CyclicDataTests, GetInputDataRejectsBadInputByDefault)
GetInputData rejects BAD input unless allowBad is set.
Member profinet::cyclic::TEST_F (CyclicDataTests, GetInputStatusReturnsNulloptForUnknownObject)
GetInputStatus returns no status for an unknown object.
Member profinet::cyclic::TEST_F (CyclicCallbackTests, InputStatusCallbackSwallowsException)
OnInputStatus swallows application callback exceptions.
Member profinet::cyclic::TEST_F (CyclicCallbackTests, InputStatusCallbackRunsOnBadTransition)
OnInputStatus runs when the device changes the IOPS value to BAD.
Member profinet::cyclic::TEST_F (CyclicCallbackTests, InputStatusCallbackSkipsUnchangedStatus)
OnInputStatus does not run while the IOPS value remains unchanged.
Member profinet::cyclic::TEST_F (CyclicCallbackTests, InputStatusCallbackRunsOnGoodTransition)
OnInputStatus runs when the status changes from unknown to GOOD.
Member profinet::cyclic::TEST_F (CyclicDataTests, SetOutputDataRejectsFaultState)
SetOutputData rejects changes in the fault state.
Member profinet::cyclic::TEST_F (CyclicDataTests, SetOutputDataRejectsStoppedState)
SetOutputData rejects changes in the stopped state.
Member profinet::cyclic::TEST_F (CyclicDataTests, SetOutputDataAcceptsIdleState)
SetOutputData accepts changes in the idle state.
Member profinet::cyclic::TEST_F (CyclicDataTests, IsInputGoodReturnsFalseForBadInput)
IsInputGood returns false for BAD IOPS input.
Member profinet::cyclic::TEST_F (CyclicDataTests, IsInputGoodReturnsTrueForGoodInput)
IsInputGood returns true for a GOOD IOPS input.
Member profinet::cyclic::TEST_F (CyclicDataTests, IsInputGoodReturnsFalseForUnknownObject)
IsInputGood returns false for an unknown object.
Member profinet::cyclic::TEST_F (CyclicDataTests, GetInputStatusReturnsReceivedIops)
GetInputStatus returns the IOPS value from the device frame.
Member profinet::CyclicCaptureTests::TEST (CyclicCaptureTests, SetValveOpenContainsOneSecondOpenCommand)
Verify the one-second AUMA opening command sequence from the real capture.
Member profinet::CyclicCaptureTests::TEST (CyclicCaptureTests, BuildExpectedSubmoduleBlocksMatchPhoenixAumaCapture)
Verify BuildExpectedSubmoduleBlock reproduces the three captured expected-submodule blocks.
Member profinet::CyclicCaptureTests::TEST (CyclicCaptureTests, DISABLED_BuildInputIocrBlockMatchesPhoenixAumaCapture)
Validate BuildIocrBlock against the captured 43-byte input IOCR request.
Member profinet::CyclicCaptureTests::TEST (CyclicCaptureTests, DISABLED_BuildOutputIocrBlockMatchesPhoenixAumaCapture)
Validate BuildIocrBlock against the captured 40-byte output IOCR request.
Member profinet::CyclicCaptureTests::TEST (CyclicCaptureTests, PhoenixToAumaCaptureHasExpectedCyclicContract)
Verify the baseline Phoenix-to-AUMA cyclic connection capture.
Member profinet::CyclicCaptureTests::TEST (CyclicCaptureTests, SetValveCloseContainsOneSecondCloseCommand)
Verify the one-second AUMA closing command sequence from the real capture.
Member profinet::CyclicCaptureTests::TEST (CyclicCaptureTests, CapturesUseExpectedPhoenixAndAumaMacAddresses)
Verify both open and close captures contain stable Layer-2 addressing.
Member profinet::CyclicCaptureTests::TEST (CyclicCaptureTests, EveryCapturedCyclicRtFrameRoundTrips)
Verify the production RT parser can round-trip every captured cyclic frame.
Member profinet::CyclicCaptureTests::TEST (CyclicCaptureTests, AumaGsdmlMatchesCapturedProcessData)
Verify the AUMA GSDML identity and process-data sizes used by the captures.
Member profinet::CyclicCaptureTests::TEST (CyclicCaptureTests, CommandByteIsAtEthernetByteTwentyFive)
Verify the captured open/close command bytes are exactly the cyclic IO command field.
Member profinet::CyclicCaptureTests::TEST (CyclicCaptureTests, AumaGsdmlResolvesCompletePhoenixAumaSlotSet)
Verify the AUMA GSDML resolves to the complete nine-submodule configuration used by CONNECT.
Member profinet::CyclicCaptureTests::TEST (CyclicCaptureTests, DISABLED_BuildIocrConfigsMatchesPhoenixAumaWireLayout)
Validate BuildIocrConfigs against the 43-byte input and 40-byte output wire layouts.
Member profinet::CyclicCaptureTests::TEST (CyclicCaptureTests, CyclicControllerTransmitsCapturedCloseCommand)
Verify the real CyclicController TX path produces a captured AUMA close command.
Member profinet::CyclicCaptureTests::TEST (CyclicCaptureTests, CyclicControllerReceivesCapturedAumaPosition)
Verify the real CyclicController RX path decodes the captured AUMA position.
Member profinet::CyclicCaptureTests::TEST (CyclicCaptureTests, PhoenixGsdmlMatchesCapturedControllerIdentity)
Verify the Phoenix GSDML identity of the controller used by the captures.
Member profinet::dcp::TEST (DcpTest, DcpResponseCodeGetNameUnknown)
Verify DCPResponseCode::GetName uses the hexadecimal fallback for an unknown response code.
Member profinet::dcp::TEST (DcpTest, DcpResponseCodeGetNameDefinedValues)
Verify DCPResponseCode::GetName resolves all defined response codes.
Member profinet::dcp::TEST (DcpTest, DeviceInitiativeUnknown)
Verify DeviceInitiative::GetName uses the hexadecimal fallback for an unknown value.
Member profinet::dcp::TEST (DcpTest, DeviceInitiativeIssueHello)
Verify DeviceInitiative::GetName resolves the ISSUE_HELLO value.
Member profinet::dcp::TEST (DcpTest, DeviceInitiativeNoHello)
Verify DeviceInitiative::GetName resolves the NO_HELLO value.
Member profinet::dcp::TEST (DcpTest, ResetQualifierUnknown)
Verify ResetQualifier::GetName uses the hexadecimal fallback for an unknown qualifier.
Member profinet::dcp::TEST (DcpTest, ResetQualifierRestoreData)
Verify ResetQualifier::GetName resolves both reset-and-restore values.
Member profinet::dcp::TEST (DcpTest, ResetQualifierFactory)
Verify ResetQualifier::GetName resolves both factory-reset values.
Member profinet::dcp::TEST (DcpTest, ResetQualifierEngineeringParameterSecondRange)
Verify ResetQualifier::GetName resolves both engineering-parameter values in the second qualifier range.
Member profinet::dcp::TEST (DcpTest, ResetQualifierAllStoredData)
Verify ResetQualifier::GetName resolves both all-stored-data reset values.
Member profinet::dcp::TEST (DcpTest, ResetQualifierEngineeringParameter)
Verify ResetQualifier::GetName resolves both engineering-parameter reset values.
Member profinet::dcp::TEST (DcpTest, GetDcpBlockErrorNameDefinedValues)
Verify GetDcpBlockErrorName resolves all defined block error codes.
Member profinet::dcp::TEST (DcpTest, GetDcpBlockErrorNameUnknown)
Verify GetDcpBlockErrorName uses the hexadecimal fallback for an unknown block error.
Member profinet::dcp::TEST (DcpTest, DcpDhcpBlockParseHostname)
Verify DCPDHCPBlock::Parse decodes a Hostname suboption and preserves its raw payload.
Member profinet::dcp::TEST (DcpTest, DcpDhcpBlockParseClientId)
Verify DCPDHCPBlock::Parse stores ClientID data without decoding it.
Member profinet::dcp::TEST (DcpTest, DcpDhcpBlockParseVendorSpecific)
Verify DCPDHCPBlock::Parse stores vendor-specific data without decoding it.
Member profinet::dcp::TEST (DcpTest, DcpDhcpBlockParseFqdn)
Verify DCPDHCPBlock::Parse decodes an FQDN into an optional string.
Member profinet::dcp::TEST (DcpTest, DcpDhcpBlockParseUuid)
Verify DCPDHCPBlock::Parse converts a complete 16-byte UUID into the expected hexadecimal representation.
Member profinet::dcp::TEST (DcpTest, DcpDhcpBlockParseUuidTooShort)
Verify DCPDHCPBlock::Parse does not decode a UUID when the payload is shorter than 16 bytes.
Member profinet::dcp::TEST (DcpTest, DcpDhcpBlockParseUuidMinimumLength)
Verify DCPDHCPBlock::Parse accepts a UUID payload exactly at the minimum required length.
Member profinet::dcp::TEST (DcpTest, DcpDhcpBlockParseUnknownSuboption)
Verify DCPDHCPBlock::Parse uses the hexadecimal fallback for an unknown DHCP suboption.
Member profinet::dcp::TEST (DcpTest, DcpDhcpBlockParseUnknownSuboptionEmptyPayload)
Verify DCPDHCPBlock::Parse preserves an empty payload for an unknown suboption.
Member profinet::dcp::TEST (DcpTest, DcpDhcpBlockKnownSuboptionNames)
Verify DCPDHCPBlock::Parse resolves all registered DHCP suboption names that do not have dedicated payload decoding.
Member profinet::dcp::TEST (DcpTest, GetBlockNameKnownOptionWithoutSuboptionTable)
Verify GetBlockName falls back to hexadecimal naming when the option has no suboption table.
Member profinet::dcp::TEST (DcpTest, RecvSetResponseAcceptsVlanResponse)
Verify RecvSetResponse accepts a VLAN-tagged PROFINET SET response.
Member profinet::dcp::TEST (DcpTest, DecodeDeviceRoleUnknown)
Verify DecodeDeviceRole returns Unknown when no role bits are set.
Member profinet::dcp::TEST (DcpTest, DecodeDeviceRoleIoDevice)
Verify DecodeDeviceRole decodes the IO-Device role.
Member profinet::dcp::TEST (DcpTest, DecodeDeviceRoleIoController)
Verify DecodeDeviceRole decodes the IO-Controller role.
Member profinet::dcp::TEST (DcpTest, DecodeDeviceRoleIoMultidevice)
Verify DecodeDeviceRole decodes the IO-Multidevice role.
Member profinet::dcp::TEST (DcpTest, DecodeDeviceRolePnSupervisor)
Verify DecodeDeviceRole decodes the PN-Supervisor role.
Member profinet::dcp::TEST (DcpTest, DecodeDeviceRoleAllRoles)
Verify DecodeDeviceRole decodes all four supported role bits simultaneously.
Member profinet::dcp::TEST (DcpTest, GetBlockNameKnownOptionAndSuboption)
Verify GetBlockName resolves a known option and known suboption.
Member profinet::dcp::TEST (DcpTest, GetBlockNameKnownDeviceAndDhcpSuboptions)
Verify GetBlockName resolves known Device and DHCP suboptions.
Member profinet::dcp::TEST (DcpTest, GetBlockNameKnownControlAndDeviceInitiativeSuboptions)
Verify GetBlockName resolves the known Control and DeviceInitiative suboptions.
Member profinet::dcp::TEST (DcpTest, GetBlockNameKnownOptionUnknownSuboption)
Verify GetBlockName falls back to hexadecimal naming for an unknown suboption of a known option.
Member profinet::dcp::TEST (DcpTest, ResetQualifierCommunicationParameter)
Verify ResetQualifier::GetName resolves both communication-parameter reset values.
Member profinet::dcp::TEST (DcpTest, GetBlockNameVendorOption)
Verify GetBlockName formats vendor-specific options from 0x80 through 0xFE as Vendor-XX.
Member profinet::dcp::TEST (DcpTest, GetBlockNameUnknownOption)
Verify GetBlockName formats unknown non-vendor options using the Opt-XX fallback.
Member profinet::dcp::TEST (DcpTest, IpBlockInfoGetNameDefinedValues)
Verify IPBlockInfo::GetName resolves every defined IP status.
Member profinet::dcp::TEST (DcpTest, IpBlockInfoGetNameUnknown)
Verify IPBlockInfo::GetName uses the hexadecimal fallback for an unknown status.
Member profinet::dcp::TEST (DcpTest, IpBlockInfoHasConflict)
Verify IPBlockInfo::HasConflict distinguishes conflicting and non-conflicting status values.
Member profinet::dcp::TEST (DcpTest, IpBlockInfoIsDhcp)
Verify IPBlockInfo::IsDhcp distinguishes DHCP and non-DHCP status values.
Member profinet::dcp::TEST (DcpTest, BlockQualifierGetNameTemporary)
Verify BlockQualifier::GetName resolves the temporary qualifier.
Member profinet::dcp::TEST (DcpTest, BlockQualifierGetNamePermanent)
Verify BlockQualifier::GetName resolves the permanent qualifier.
Member profinet::dcp::TEST (DcpTest, BlockQualifierGetNameUnknown)
Verify BlockQualifier::GetName uses the hexadecimal fallback for an unknown qualifier.
Member profinet::dcp::TEST (DcpTest, ResetQualifierApplicationData)
Verify ResetQualifier::GetName resolves both application-data reset values.
Member profinet::dcp::TEST (DcpTest, ReadResponseIgnoresUnsuccessfulServiceType)
ReadResponse ignores DCP responses that are not successful.
Member profinet::dcp::TEST (DcpTest, ReadResponseIgnoresEmptyData)
ReadResponse ignores empty Ethernet data.
Member profinet::dcp::TEST (DcpTest, ReadResponseIgnoresShortEthernetFrame)
ReadResponse ignores Ethernet frames shorter than the minimum Ethernet header.
Member profinet::dcp::TEST (DcpTest, ReadResponseIgnoresMalformedEthernetFrame)
ReadResponse ignores frames for which EthernetHeader parsing fails.
Member profinet::dcp::TEST (DcpTest, ReadResponseIgnoresWrongDestination)
ReadResponse ignores frames addressed to a different destination MAC.
Member profinet::dcp::TEST (DcpTest, ReadResponseIgnoresShortVlanPayload)
ReadResponse ignores VLAN frames without a complete VLAN header.
Member profinet::dcp::TEST (DcpTest, ReadResponseIgnoresWrongVlanInnerEtherType)
ReadResponse ignores VLAN frames whose inner EtherType is not PROFINET.
Member profinet::dcp::TEST (DcpTest, ReadResponseIgnoresWrongEtherType)
ReadResponse ignores untagged Ethernet frames with a non-PROFINET EtherType.
Member profinet::dcp::TEST (DcpTest, ReadResponseIgnoresMalformedDcpHeader)
ReadResponse ignores frames for which DCP header parsing fails.
Member profinet::dcp::TEST (DcpTest, ReadResponseIgnoresUnexpectedXid)
ReadResponse ignores a valid response when its XID does not match.
Member profinet::dcp::TEST (DcpTest, ReadResponseParsesValidVlanResponse)
ReadResponse parses a VLAN-tagged PROFINET response.
Member profinet::dcp::TEST (DcpTest, ReadResponseUsesEmptyBlockRegionForShortDcpLength)
ReadResponse ignores the block list when the DCP length is six bytes or less.
Member profinet::dcp::TEST (DcpTest, ReadResponseLimitsBlockRegionToDcpLength)
ReadResponse uses only the number of bytes declared by DCP length.
Member profinet::dcp::TEST (DcpTest, ReadResponseProcessesMultipleResponsesWhenOnceIsFalse)
ReadResponse processes multiple responses when once is false.
Member profinet::dcp::TEST (DcpTest, ReadResponseStopsAfterFirstValidResponseWhenOnceIsTrue)
ReadResponse stops after the first valid response when once is true.
Member profinet::dcp::TEST (DcpTest, ReadResponseContinuesAfterIgnoredFrames)
ReadResponse ignores a DCP request frame and continues until a valid response arrives.
Member profinet::dcp::TEST (DcpTest, ReadResponseReturnsEmptyMapOnTimeout)
ReadResponse returns an empty map when the timeout expires without a valid response.
Member profinet::dcp::TEST (DcpTest, SendHelloBuildsCompleteHelloFrame)
SendHello sends a complete valid Hello frame with an even-length station name.
Member profinet::dcp::TEST (DcpTest, SetIpRejectsInvalidIpAddress)
SetIp rejects an invalid IPv4 address before sending a frame.
Member profinet::dcp::TEST (DcpTest, GetParamReturnsMatchingParameter)
GetParam returns the payload from the matching response block.
Member profinet::dcp::TEST (DcpTest, GetParamReturnsNulloptWhenParameterIsMissing)
GetParam returns no value when the response does not contain the requested block.
Member profinet::dcp::TEST (DcpTest, GetParamReturnsNulloptOnTimeout)
GetParam returns no value when ReadResponse receives no response.
Member profinet::dcp::TEST (DcpTest, SetParamReturnsTrueForSuccessfulResponse)
SetParam sends a valid SET request and returns true for a successful response.
Member profinet::dcp::TEST (DcpTest, SetParamThrowsForDeviceBlockError)
SetParam throws when the device reports a DCP block error.
Member profinet::dcp::TEST (DcpTest, SetParamReturnsFalseOnTimeout)
SetParam returns false when no SET response is received.
Member profinet::dcp::TEST (DcpTest, SetParamBuildsTemporaryRequest)
SetParam accepts temporary parameter storage.
Member profinet::dcp::TEST (DcpTest, SetIpReturnsFalseOnTimeout)
SetIp returns false when the device does not respond.
Member profinet::dcp::TEST (DcpTest, SendHelloAddsPaddingForOddLengthStationName)
SendHello adds padding after an odd-length station name.
Member profinet::dcp::TEST (DcpTest, SetIpEncodesPermanentQualifier)
SetIp encodes the permanent block qualifier into the IP parameter block.
Member profinet::dcp::TEST (DcpTest, SetIpEncodesTemporaryQualifier)
SetIp encodes the temporary block qualifier into the IP parameter block.
Member profinet::dcp::TEST (DcpTest, SendRequestBuildsIdentifyRequest)
SendRequest sends an Identify request to the DCP multicast address.
Member profinet::dcp::TEST (DcpTest, SetIpBuildsPermanentIpBlock)
SetIp encodes the permanent qualifier and complete IPv4 configuration.
Member profinet::dcp::TEST (DcpTest, ReadResponseSetsExpectedSocketTimeout)
ReadResponse sets the socket timeout before receiving responses.
Member profinet::dcp::TEST (DcpTest, ReadResponseReturnsValidResponse)
ReadResponse parses a valid response and returns its blocks indexed by source MAC.
Member profinet::dcp::TEST (DcpTest, ReadResponseAcceptsAnyXidWhenExpectedXidIsNotSpecified)
ReadResponse accepts a response without an expected XID filter.
Member profinet::dcp::TEST (DcpTest, SignalDeviceReturnsFalseOnTimeout)
SignalDevice returns false when the device does not respond before the timeout.
Member profinet::dcp::TEST (DcpTest, ReceiveHelloIgnoresMalformedDcpHeader)
ReceiveHello ignores frames whose DCP header cannot be parsed.
Member profinet::dcp::TEST (DcpTest, ReceiveHelloIgnoresNonHelloServiceId)
ReceiveHello ignores DCP messages that are not Hello messages.
Member profinet::dcp::TEST (DcpTest, ReceiveHelloIgnoresNonRequestServiceType)
ReceiveHello ignores Hello messages that are not requests.
Member profinet::dcp::TEST (DcpTest, ReceiveHelloContinuesAfterIgnoredFrame)
ReceiveHello continues receiving after an ignored frame.
Member profinet::dcp::TEST (DcpTest, ReceiveHelloReturnsMultipleDevices)
ReceiveHello returns all valid devices received before the timeout.
Member profinet::dcp::TEST (DcpTest, ReceiveHelloReturnsEmptyOnTimeout)
ReceiveHello returns no devices when the timeout expires.
Member profinet::dcp::TEST (DcpTest, SignalDeviceReturnsTrueForSuccessfulResponse)
SignalDevice sends a DCP signal request and returns true on a successful response.
Member profinet::dcp::TEST (DcpTest, SignalDeviceThrowsForBlockError)
SignalDevice throws DCPError when the device reports a signal error.
Member profinet::dcp::TEST (DcpTest, ReceiveHelloIgnoresShortPnioPayload)
ReceiveHello ignores frames whose PROFINET payload is too short for a DCP header.
Member profinet::dcp::TEST (DcpTest, SignalDeviceRejectsInvalidTargetMac)
SignalDevice propagates an invalid target MAC address without sending a frame.
Member profinet::dcp::TEST (DcpTest, ResetToFactoryReturnsTrueForSuccessfulResponse)
ResetToFactory sends a valid reset request and returns true on a successful response.
Member profinet::dcp::TEST (DcpTest, ResetToFactoryEncodesCombinedResetMode)
ResetToFactory correctly encodes a combined reset mode.
Member profinet::dcp::TEST (DcpTest, ResetToFactoryReturnsFalseOnTimeout)
ResetToFactory returns false when the device does not respond.
Member profinet::dcp::TEST (DcpTest, ResetToFactoryThrowsForBlockError)
ResetToFactory throws when the device reports a reset failure.
Member profinet::dcp::TEST (DcpTest, ResetToFactoryRejectsInvalidTargetMac)
ResetToFactory propagates an invalid target MAC address without sending.
Member profinet::dcp::TEST (DcpTest, GetParamSendsCorrectGetRequest)
GetParam sends a correctly encoded DCP GET request.
Member profinet::dcp::TEST (DcpTest, ReceiveHelloDoesNotInvokeEmptyCallback)
ReceiveHello does not invoke an empty callback.
Member profinet::dcp::TEST (DcpTest, SendHelloEncodesCombinedDeviceRole)
SendHello correctly encodes a combined device role bit mask.
Member profinet::dcp::TEST (DcpTest, SendHelloEncodesDeviceId)
SendHello encodes the device ID in network byte order.
Member profinet::dcp::TEST (DcpTest, SendHelloRejectsInvalidIpAddress)
SendHello propagates an invalid station IP address without sending a frame.
Member profinet::dcp::TEST (DcpTest, SendHelloRejectsInvalidNetmask)
SendHello propagates an invalid netmask without sending a frame.
Member profinet::dcp::TEST (DcpTest, SendHelloRejectsInvalidGateway)
SendHello propagates an invalid gateway without sending a frame.
Member profinet::dcp::TEST (DcpTest, ReceiveHelloSetsExpectedSocketTimeout)
ReceiveHello sets the socket timeout before receiving Hello frames.
Member profinet::dcp::TEST (DcpTest, ReceiveHelloReturnsValidDevice)
ReceiveHello parses a valid Hello request into a device description.
Member profinet::dcp::TEST (DcpTest, ReceiveHelloInvokesCallbackForValidDevice)
ReceiveHello invokes the callback for every valid Hello response.
Member profinet::dcp::TEST (DcpTest, ParseSetResponseRejectsMalformedEthernetHeader)
Verify ParseSetResponse reports malformed Ethernet headers.
Member profinet::dcp::TEST (DcpTest, ReceiveHelloParsesValidVlanHello)
ReceiveHello accepts a VLAN-tagged PROFINET Hello frame.
Member profinet::dcp::TEST (DcpTest, ReceiveHelloIgnoresEmptyData)
ReceiveHello ignores empty data.
Member profinet::dcp::TEST (DcpTest, ReceiveHelloIgnoresShortEthernetFrame)
ReceiveHello ignores Ethernet frames shorter than the minimum Ethernet header.
Member profinet::dcp::TEST (DcpTest, ReceiveHelloIgnoresMalformedEthernetFrame)
ReceiveHello ignores frames that cannot be parsed as Ethernet frames.
Member profinet::dcp::TEST (DcpTest, ReceiveHelloIgnoresShortVlanPayload)
ReceiveHello ignores VLAN frames with an incomplete VLAN header.
Member profinet::dcp::TEST (DcpTest, ReceiveHelloIgnoresWrongVlanInnerEtherType)
ReceiveHello ignores VLAN frames whose inner EtherType is not PROFINET.
Member profinet::dcp::TEST (DcpTest, ReceiveHelloIgnoresWrongEtherType)
ReceiveHello ignores untagged frames with a non-PROFINET EtherType.
Member profinet::dcp::TEST (DcpTest, RecvSetResponseTimesOut)
Verify RecvSetResponse throws DCPTimeoutError when no usable response is received before timeout.
Member profinet::dcp::TEST (DcpTest, RecvSetResponseIgnoresMalformedEthernetFrame)
Verify RecvSetResponse ignores frames with malformed Ethernet headers.
Member profinet::dcp::TEST (DcpTest, RecvSetResponseIgnoresWrongDestinationMac)
Verify RecvSetResponse ignores frames addressed to a different destination MAC.
Member profinet::dcp::TEST (DcpTest, RecvSetResponseIgnoresShortVlanPayload)
Verify RecvSetResponse ignores VLAN frames that do not contain a complete VLAN header.
Member profinet::dcp::TEST (DcpTest, RecvSetResponseIgnoresWrongVlanInnerEtherType)
Verify RecvSetResponse ignores VLAN frames with an unexpected inner EtherType.
Member profinet::dcp::TEST (DcpTest, RecvSetResponseIgnoresWrongEtherType)
Verify RecvSetResponse ignores frames with an unexpected Ethernet EtherType.
Member profinet::dcp::TEST (DcpTest, RecvSetResponseIgnoresUnexpectedServiceType)
Verify RecvSetResponse ignores valid DCP responses with an unexpected service type.
Member profinet::dcp::TEST (DcpTest, RecvSetResponsePropagatesDcpError)
Verify RecvSetResponse propagates DCP errors other than an unexpected service type.
Member profinet::dcp::TEST (DcpTest, RecvSetResponseReturnsBlockError)
Verify RecvSetResponse returns the block error from a valid SET response.
Member profinet::dcp::TEST (DcpTest, RecvSetResponseIgnoresShortFrame)
Verify RecvSetResponse ignores frames shorter than an Ethernet header.
Member profinet::dcp::TEST (DcpTest, DeviceRoleNameDefinedValues)
Verify DeviceRoleName returns the expected human-readable name for every supported role.
Member profinet::dcp::TEST (DcpTest, DeviceRoleNameUnknown)
Verify DeviceRoleName returns Unknown for an unsupported role value.
Member profinet::dcp::TEST (DcpTest, GetBlockNameUnknownSuboptionForAllTypedOptionGroups)
Verify GetBlockName falls back to hexadecimal names for unsupported suboptions of every option family.
Member profinet::dcp::TEST (DcpTest, GetBlockNameOptionsWithoutSuboptions)
Verify GetBlockName falls back correctly for DCP options without defined suboptions.
Member profinet::dcp::TEST (DcpTest, GetBlockNameUint16OptionOverload)
Verify the raw uint16_t option overload of GetBlockName supports vendor-specific options.
Member profinet::dcp::TEST (DcpTest, GetBlockNameDeviceInitiativeSuboption)
Verify GetBlockName resolves the Device Initiative suboption.
Member profinet::dcp::TEST (DcpTest, MakeBlockKeyRawOption)
Verify MakeBlockKey supports the raw uint16_t option overload.
Member profinet::dcp::TEST (DcpTest, ParseSetResponseWithoutResponseBlockReturnsSuccess)
Verify ParseSetResponse returns success when no Control/Response block is present.
Member profinet::dcp::TEST (DcpTest, ParseSetResponseRejectsTooShortFrame)
Verify ParseSetResponse rejects frames shorter than the minimum Ethernet/DCP response size.
Member profinet::dcp::TEST (DcpTest, ParseSetResponseRejectsShortVlanFrame)
Verify ParseSetResponse rejects VLAN frames without a complete VLAN header.
Member profinet::dcp::TEST (DcpTest, ParseSetResponseAcceptsVlanFrame)
Verify ParseSetResponse accepts a VLAN-tagged PROFINET response.
Member profinet::dcp::TEST (DcpTest, ParseSetResponseRejectsUnexpectedVlanInnerEtherType)
Verify ParseSetResponse rejects VLAN frames with an unexpected inner EtherType.
Member profinet::dcp::TEST (DcpTest, ParseSetResponseRejectsUnexpectedEtherType)
Verify ParseSetResponse rejects non-PROFINET Ethernet frames.
Member profinet::dcp::TEST (DcpTest, ParseSetResponseRejectsMalformedDcpHeader)
Verify ParseSetResponse reports malformed DCP headers.
Member profinet::dcp::TEST (DcpTest, ParseSetResponseRejectsUnsupportedService)
Verify ParseSetResponse rejects the DCP service-not-supported response.
Member profinet::dcp::TEST (DcpTest, ParseSetResponseRejectsUnexpectedService)
Verify ParseSetResponse rejects an unexpected DCP response service type.
Member profinet::dcp::TEST (DcpTest, ParamsContainsSupportedParameters)
Verify Params contains the supported name and IP parameter mappings.
Member profinet::dcp::TEST (DcpTest, ParseSetResponseExtractsThreeByteBlockError)
Verify ParseSetResponse extracts a block error from a Control/Response block with a three-byte payload.
Member profinet::dcp::TEST (DcpTest, ParseSetResponseExtractsShortBlockError)
Verify ParseSetResponse extracts a block error from a one-byte Control/Response payload.
Member profinet::dcp::TEST (DcpTest, ParseSetResponseEmptyResponseBlockReturnsSuccess)
Verify ParseSetResponse keeps success when a Control/Response block has an empty payload.
Member profinet::dcp::TEST (DcpTest, ParseSetResponseSkipsNonResponseBlocks)
Verify ParseSetResponse ignores blocks preceding the Control/Response block.
Member profinet::dcp::TEST (DcpTest, ParseSetResponseUsesFirstResponseBlock)
Verify ParseSetResponse uses only the first Control/Response block.
Member profinet::dcp::TEST (DcpTest, RecvSetResponseReturnsSuccessfulResponse)
Verify RecvSetResponse configures the socket timeout and returns a successful SET response.
Member profinet::dcp::TEST (DcpTest, RecvSetResponseIgnoresEmptyFrame)
Verify RecvSetResponse ignores empty received frames.
Member profinet::dcp::TEST (DcpTest, BuildSetParamRequestBuildsTemporaryOddLengthName)
Verify BuildSetParamRequest creates a temporary SET request for an odd-length station name and adds alignment padding.
Member profinet::dcp::TEST (DcpTest, DcpDhcpBlockParseEmptyFqdn)
Verify DCPDHCPBlock::Parse creates an empty FQDN when the FQDN payload is empty.
Member profinet::dcp::TEST (DCPDeviceDescriptionTest, ToStringIncludesAllPopulatedFields)
Verify ToString includes all populated device description fields and formats lists and DHCP blocks correctly.
Member profinet::dcp::TEST (DCPDeviceDescriptionTest, ToStringOmitsUnsetOptionalFields)
Verify ToString omits optional fields when they are empty or unset.
Member profinet::dcp::TEST (DCPDeviceDescriptionTest, ToStringFormatsDhcpBlockVariants)
Verify ToString formats multiple DHCP blocks and selects hostname, FQDN, UUID, and raw-data representations.
Member profinet::dcp::TEST (DCPDeviceDescriptionTest, ConstructorDecodesAllSupportedBlocks)
Verify DCPDeviceDescription decodes all supported DCP blocks into their corresponding fields.
Member profinet::dcp::TEST (DCPDeviceDescriptionTest, ConstructorIgnoresIncompleteOptionalBlocks)
Verify DCPDeviceDescription ignores incomplete optional blocks and preserves default values.
Member profinet::dcp::TEST (DCPDeviceDescriptionTest, ConstructorHandlesLegacyTwelveByteIpBlock)
Verify DCPDeviceDescription parses the legacy 12-byte IP block format.
Member profinet::dcp::TEST (DCPDeviceDescriptionTest, ConstructorUsesLegacyIpLayoutForThirteenByteBlock)
Verify DCPDeviceDescription uses the legacy IP layout for a 13-byte IP block.
Member profinet::dcp::TEST (DcpTest, MakeBlockKeyIpSuboption)
Verify MakeBlockKey supports DCP IP suboptions.
Member profinet::dcp::TEST (DcpTest, BuildSetParamRequestBuildsPermanentEvenLengthName)
Verify BuildSetParamRequest creates a permanent SET request for an even-length station name without extra padding.
Member profinet::dcp::TEST (DcpTest, BuildSetParamRequestRejectsIpParameter)
Verify BuildSetParamRequest rejects IP configuration through the string-valued SET interface.
Member profinet::dcp::TEST (DcpTest, BuildSetParamRequestRejectsUnknownParameter)
Verify BuildSetParamRequest rejects unknown parameter names.
Member profinet::dcp::TEST (DcpTest, BuildSetParamRequestRejectsOverlongStationName)
Verify BuildSetParamRequest rejects station names exceeding DCP_MAX_NAME_LENGTH.
Member profinet::dcp::TEST (DcpTest, BuildSetParamRequestAcceptsMaximumStationName)
Verify BuildSetParamRequest accepts a station name exactly at DCP_MAX_NAME_LENGTH.
Member profinet::dcp::TEST (DcpTest, BuildDcpSignalRequestBuildsCorrectWireFormat)
Verify BuildDcpSignalRequest creates a SET/Signal request with the expected control payload.
Member profinet::dcp::TEST (DcpTest, GetParamThrowsForUnknownParameter)
GetParam throws when the requested parameter does not exist.
Member profinet::dcp::TEST (DcpTest, DcpDhcpBlockParseUnknownEnumValue)
Verify DCPDHCPBlock::Parse formats the Unknown DHCP suboption and preserves its payload.
Member profinet::dcp::TEST (DcpTest, MakeBlockKeyGenericSuboption)
Verify MakeBlockKey supports the generic DcpOption/uint8_t overload.
Member profinet::dcp::TEST (DcpTest, MakeBlockKeyDeviceSuboption)
Verify MakeBlockKey supports DCP Device suboptions.
Member profinet::dcp::TEST (DcpTest, MakeBlockKeyControlSuboption)
Verify MakeBlockKey supports DCP Control suboptions.
Member profinet::dcp::TEST (DcpTest, MakeBlockKeyDhcpSuboption)
Verify MakeBlockKey supports DCP DHCP suboptions.
Member profinet::dcp::TEST (DcpTest, MakeBlockKeyDeviceInitiativeSuboption)
Verify MakeBlockKey supports DCP Device Initiative suboptions.
Member profinet::dcp::TEST (DcpTest, DeviceRoleBitwiseOr)
Verify DcpDeviceRole bitwise OR combines role flags correctly.
Member profinet::dcp::TEST (DcpTest, DeviceRoleBitwiseAndPresent)
Verify DcpDeviceRole bitwise AND detects a role flag that is present.
Member profinet::dcp::TEST (DcpTest, DeviceRoleBitwiseAndAbsent)
Verify DcpDeviceRole bitwise AND returns zero for a role flag that is absent.
Member profinet::dcp::TEST (DcpTest, ResetModeBitwiseOr)
Verify DcpResetMode bitwise OR combines reset mode flags correctly.
Member profinet::dcp::TEST (DcpTest, ResetModeBitwiseAndPresent)
Verify DcpResetMode bitwise AND detects a reset mode flag that is present.
Member profinet::dcp::TEST (DcpTest, ResetModeBitwiseAndAbsent)
Verify DcpResetMode bitwise AND returns zero for a reset mode flag that is absent.
Member profinet::dcp::TEST (DcpTest, IpBlockInfoBitHelpersHandleUnknownCombinations)
Verify IP block status bit helpers correctly handle combined status bits.
Member profinet::dcp::TEST (DcpTest, ResetQualifierUnknownEnumValue)
Verify GetResetQualifierName handles an unknown typed enum value.
Member profinet::dcp::TEST (DcpTest, ResetQualifierZeroIsUnknown)
Verify GetResetQualifierName handles the zero qualifier as unknown.
Member profinet::dcp::TEST (DcpTest, DcpDhcpBlockParseEmptyHostname)
Verify DCPDHCPBlock::Parse creates an empty hostname when the hostname payload is empty.
Member profinet::dcp::TEST_F (DcpWireFormatTest, OddLengthNameIsPaddedAndBlockLengthExcludesPadding)
Verify that an odd-length station name is padded on the wire.
Member profinet::dcp::TEST_F (DcpWireFormatTest, EvenLengthNameIsNotPadded)
Verify that an even-length station name is serialized without padding.
Member profinet::dcp::TEST_F (DcpWireFormatTest, DefaultQualifierIsTemporary)
Verify that the default DCP SET qualifier is temporary.
Member profinet::dcp::TEST_F (DcpWireFormatTest, PermanentQualifierIsSerialized)
Verify that a permanent DCP SET qualifier is serialized correctly.
Member profinet::dcp::TEST_F (DcpWireFormatTest, IpSetOperationIsRejected)
Verify that the legacy string-based IP SET operation is rejected.
Member profinet::dcp::TEST_F (DcpWireFormatTest, IpParameterMatchingIsCaseInsensitive)
Verify that IP parameter matching is case-insensitive.
Member profinet::dcp::TEST_F (DcpWireFormatTest, SignalUsesFlashOnceValue)
Verify that DCP Signal serializes the Flash-Once command.
Member profinet::device::TEST (DeviceMoveTests, MoveConstructionDisconnectsSource)
Verifies that move construction transfers the connected state to the destination and leaves the source disconnected.
Member profinet::device::TEST (StartCyclicOrderingTests, ApplicationReadyCanBeSkipped)
Verifies that ApplicationReady can be skipped.
Member profinet::device::TEST (StartCyclicOrderingTests, StartsRtAfterApplicationReadyWhenDisabled)
Verifies that cyclic RT starts after ApplicationReady when RT-before-PrmEnd mode is disabled.
Member profinet::device::TEST (StartCyclicArHandlingTests, ReleasesExistingArBeforeNewConnect)
Verifies that an existing AR is released before a new AR is connected.
Member profinet::device::TEST (DeviceMoveTests, MoveAssignmentReleasesDestinationFirst)
Verifies that move assignment closes the destination's existing alarm listener and RPC connection before taking ownership of the source's connection.
Member profinet::device::TEST (StartCyclicRollbackTests, ReleaseFailureDoesNotMaskOriginalError)
Verifies that a failure while releasing the AR does not hide the original startup exception.
Member profinet::device::TEST (StartCyclicRollbackTests, ApplicationReadyFailureStopsStartedRt)
Verifies that ApplicationReady failure stops cyclic RT that has already been started and releases the connection.
Member profinet::device::TEST (StartCyclicRollbackTests, MissingCyclicResultRollsBack)
Verifies that a Connect result without cyclic IO causes startup failure and closes the RPC connection.
Member profinet::device::TEST (StartCyclicRollbackTests, PrmEndFailureRollsBack)
Verifies that a PrmEnd failure stops already-started cyclic RT, closes the RPC connection, and clears connection state.
Member profinet::device::TEST (StartCyclicArHandlingTests, StopsAlarmListenerBeforeReplacingAr)
Verifies that an alarm listener belonging to an old AR is stopped before the new AR is established.
Member profinet::device::TEST (DeviceMoveTests, MovedFromDeviceCanBeDestroyedSafely)
Verifies that a moved-from device can be destroyed safely without attempting to access or close resources transferred to the destination.
Member profinet::device::TEST_F (ProfinetDeviceReadWriteTests, ReadReturnsRpcPayload)
Verifies that Read returns the payload returned by RPCCon.
Member profinet::device::TEST_F (ParseMacTests, IsMacAddressRejectsInvalidIdentifier)
Verifies that IsMacAddress rejects invalid identifiers.
Member profinet::device::TEST_F (DeviceInfoTests, SoftwareRevisionReturnsEmptyWhenIm0Missing)
Verifies that SoftwareRevision returns an empty string when IM0 is absent.
Member profinet::device::TEST_F (DeviceInfoTests, HardwareRevisionReturnsZeroWhenIm0Missing)
Verifies that HardwareRevision returns zero when IM0 is absent.
Member profinet::device::TEST_F (DeviceInfoTests, OrderIdReturnsEmptyWhenIm0Missing)
Verifies that OrderId returns an empty string when IM0 is absent.
Member profinet::device::TEST_F (DeviceInfoTests, SerialNumberReturnsEmptyWhenIm0Missing)
Verifies that SerialNumber returns an empty string when IM0 is absent.
Member profinet::device::TEST_F (ProfinetDeviceImTests, WriteIm1RejectsLocationLongerThan22Characters)
Verifies that WriteIm1 rejects a location longer than 22 characters.
Member profinet::device::TEST_F (ProfinetDeviceReadWriteTests, WriteDelegatesArguments)
Verifies that Write delegates slot, subslot, index, API and data.
Member profinet::device::TEST_F (ProfinetDeviceReadWriteTests, WriteMultipleMapsItems)
Verifies that WriteMultiple maps public WriteItem objects to RPC items.
Member profinet::device::TEST_F (ProfinetDeviceImTests, ReadIm0Delegates)
Verifies that ReadIm0 delegates to RPCCon.
Member profinet::device::TEST_F (ProfinetDeviceImTests, ReadIm1Delegates)
Verifies that ReadIm1 delegates to RPCCon.
Member profinet::device::TEST_F (ProfinetDeviceImTests, ReadIm2Delegates)
Verifies that ReadIm2 delegates to RPCCon.
Member profinet::device::TEST_F (ProfinetDeviceImTests, ReadIm3Delegates)
Verifies that ReadIm3 delegates to RPCCon.
Member profinet::device::TEST_F (ProfinetDeviceImTests, ReadIm4Delegates)
Verifies that ReadIm4 delegates to RPCCon.
Member profinet::device::TEST_F (ProfinetDeviceImTests, ReadIm5Delegates)
Verifies that ReadIm5 delegates to RPCCon.
Member profinet::device::TEST_F (ProfinetDeviceImTests, ReadAllImDelegates)
Verifies that ReadAllIm delegates to RPCCon.
Member profinet::device::TEST_F (ProfinetDeviceImTests, WriteIm1BuildsPaddedBlock)
Verifies that WriteIm1 creates the expected block header and fields.
Member profinet::device::TEST_F (ProfinetDeviceImTests, WriteIm1RejectsFunctionLongerThan32Characters)
Verifies that WriteIm1 rejects a function longer than 32 characters.
Member profinet::device::TEST_F (ProfinetDeviceImTests, WriteIm2BuildsPaddedBlock)
Verifies that WriteIm2 creates the expected block and padded date.
Member profinet::device::TEST_F (ProfinetScannerTest, ScanPreservesShortTimeout)
Verify that Scan preserves a short fractional timeout.
Member profinet::device::TEST_F (StartCyclicTests, ApplicationReadyFailurePropagates)
Verifies that ApplicationReady failure propagates to the caller.
Member profinet::device::TEST_F (StartCyclicTests, MissingCyclicResultFailsStartup)
Verifies that startup fails when the RPC connection does not establish cyclic IO.
Member profinet::device::TEST_F (StartCyclicTests, StartsRtAfterPrmEndAndApplicationReady)
Verifies that cyclic RT starts after PrmEnd and ApplicationReady.
Member profinet::device::TEST_F (StartCyclicTests, ConnectsWithAlarmCrAndIocrSetup)
Verifies that StartCyclic establishes an AlarmCR-enabled AR using the supplied IOCR configuration.
Member profinet::device::TEST_F (ProfinetScannerTest, ScanDictKeepsEmptyStationNames)
Verify that ScanDict keeps devices with empty station names.
Member profinet::device::TEST_F (ProfinetScannerTest, ScanDictKeepsDuplicateStationNames)
Verify that ScanDict keeps devices with duplicate station names.
Member profinet::device::TEST_F (ProfinetScannerTest, ScanCreatesDeviceForEveryResponse)
Verify that Scan creates one ProfinetDevice for every DCP response.
Member profinet::device::TEST_F (ProfinetScannerTest, ScanPreservesLongTimeout)
Verify that Scan preserves a long timeout.
Member profinet::device::TEST_F (ParseMacTests, IsMacAddressAcceptsValidMac)
Verifies that IsMacAddress identifies valid MAC addresses.
Member profinet::device::TEST_F (ProfinetScannerTest, ScanPreservesZeroTimeout)
Verify that Scan forwards a zero-second timeout unchanged.
Member profinet::device::TEST_F (StartCyclicTests, ApplicationReadyFailureDoesNotStartRt)
Verifies that cyclic RT is not started when ApplicationReady fails.
Member profinet::device::TEST_F (StartCyclicTests, CommitsConnectedDeviceState)
Verifies that the RPC and connected state are committed after successful cyclic startup.
Member profinet::device::TEST_F (StartCyclicTests, RequestsAlarmCrConnection)
Verifies that cyclic startup requests an AlarmCR connection.
Member profinet::device::TEST_F (ParseMacTests, ParsesColonSeparatedMac)
Verifies that a valid colon-separated MAC address is parsed.
Member profinet::device::TEST_F (ParseMacTests, ParsesDashSeparatedMac)
Verifies that a valid dash-separated MAC address is parsed.
Member profinet::device::TEST_F (ParseMacTests, ParsesDotSeparatedMac)
Verifies that a valid dot-separated MAC address is parsed.
Member profinet::device::TEST_F (ParseMacTests, RejectsInvalidMac)
Verifies that an invalid MAC address is rejected.
Member profinet::device::TEST_F (ProfinetDeviceInfoTests, IncludesTopologyWhenRequested)
Verifies that GetInfo includes topology when requested.
Member profinet::device::TEST_F (ProfinetDeviceAlarmListenerTests, RequiresConnection)
Verifies that starting the alarm listener requires a connection.
Member profinet::device::TEST_F (ProfinetDeviceAlarmListenerTests, RequiresAlarmCr)
Verifies that starting the alarm listener requires AlarmCR.
Member profinet::device::TEST_F (ProfinetDeviceAlarmListenerTests, StartAndRunningProperty)
Verifies that StartAlarmListener creates and starts the listener.
Member profinet::device::TEST_F (ProfinetDeviceAlarmListenerTests, StopRemovesListener)
Verifies that StopAlarmListener removes the alarm listener.
Member profinet::device::TEST_F (ProfinetDeviceAlarmListenerTests, RepeatedStartDoesNotDuplicateCallbackRegistration)
Repeated StartAlarmListener does not register callbacks twice.
Member profinet::device::TEST_F (ProfinetDeviceAlarmListenerTests, CallbackAddedBeforeStartIsRegisteredOnce)
A callback registered before Start is registered exactly once.
Member profinet::device::TEST_F (ProfinetDeviceAlarmListenerTests, CallbackAddedWhileRunningIsForwardedOnce)
A callback added while running is forwarded immediately.
Member profinet::device::TEST_F (ProfinetDeviceInfoTests, CollectsIm0)
Verifies that GetInfo collects IM0 information.
Member profinet::device::TEST_F (ProfinetDeviceInfoTests, Im0FailureIsTolerated)
Verifies that GetInfo tolerates an IM0 RPC failure.
Member profinet::device::TEST_F (ProfinetDeviceAlarmListenerTests, OnAlarmForwardsToRunningListener)
Verifies that OnAlarm forwards callbacks to an existing listener.
Member profinet::device::TEST_F (ProfinetDeviceInfoTests, DoesNotReadTopologyByDefault)
Verifies that GetInfo does not request topology by default.
Member profinet::device::TEST_F (ProfinetDeviceStringTests, ToStringShowsDisconnectedState)
Verifies that ToString identifies the device as disconnected initially.
Member profinet::device::TEST_F (DeviceTest, ParseMacAcceptsColonDashAndDotSeparators)
parse_mac accepts colon, dash, and dot separators
Member profinet::device::TEST_F (DeviceTest, ParseMacRejectsNonMacStrings)
parse_mac rejects non-MAC strings
Member profinet::device::TEST_F (DeviceTest, IsMacAddressMatchesParseMac)
is_mac_address matches parse_mac
Member profinet::device::TEST_F (DeviceTest, DeviceInfoHelpersReturnEmptyOrZeroWhenIm0Unset)
DeviceInfo helper methods return empty/zero when im0 is unset
Member profinet::device::TEST_F (DeviceTest, DeviceInfoHelpersExtractAndTrimIm0Fields)
DeviceInfo helper methods extract and trim im0 fields
Member profinet::device::TEST_F (DeviceTest, FromDcpInfoConstructsWithoutDiscovery)
ProfinetDevice::from_dcp_info constructs without discovery, starts disconnected
Member profinet::device::TEST_F (DeviceTest, DiscoverWithUnknownMacThrowsDcpDeviceNotFoundError)
ProfinetDevice::discover with a MAC identifier that never responds throws DCPDeviceNotFoundError
Member profinet::device::TEST_F (ProfinetDeviceConnectionLifecycleTests, ReleaseArClearsOnlyCurrentRpc)
Verifies that ReleaseAr only clears state when releasing the active RPC.
Member profinet::device::TEST_F (ProfinetDeviceImTests, WriteIm2RejectsDateLongerThan16Characters)
Verifies that WriteIm2 rejects a date longer than 16 characters.
Member profinet::device::TEST_F (ProfinetDeviceImTests, WriteIm3BuildsPaddedBlock)
Verifies that WriteIm3 creates the expected block and padded descriptor.
Member profinet::device::TEST_F (ProfinetDeviceImTests, WriteIm3RejectsDescriptorLongerThan54Characters)
Verifies that WriteIm3 rejects a descriptor longer than 54 characters.
Member profinet::device::TEST_F (ProfinetDeviceDiagnosisTests, ReadModuleDiffDelegates)
Verifies that ReadModuleDiff delegates to RPCCon.
Member profinet::device::TEST_F (ProfinetDeviceDiagnosisTests, ReadDiagnosisDelegatesArguments)
Verifies that ReadDiagnosis delegates slot, subslot and index.
Member profinet::device::TEST_F (ProfinetDeviceDiagnosisTests, ReadAllDiagnosisDelegates)
Verifies that ReadAllDiagnosis delegates to RPCCon.
Member profinet::device::TEST_F (ProfinetDeviceDiagnosisTests, DiscoverSlotsDelegates)
Verifies that DiscoverSlots delegates to RPCCon.
Member profinet::device::TEST_F (ProfinetDeviceDiagnosisTests, ReadTopologyDelegates)
Verifies that ReadTopology delegates to ReadPdRealData.
Member profinet::device::TEST_F (ProfinetDeviceAlarmTests, ReturnsNoneOnRpcError)
Verifies that ReadAlarm returns no value when the RPC operation fails.
Member profinet::device::TEST_F (ProfinetDeviceAlarmTests, ReturnsNoneOnShortPayload)
Verifies that ReadAlarm returns no value for a short payload.
Member profinet::device::TEST_F (ProfinetDeviceAlarmTests, ParsesAlarmPayload)
Verifies that ReadAlarm parses a valid alarm payload.
Member profinet::device::TEST_F (ProfinetDeviceConnectionLifecycleTests, ConnectSuccess)
Verifies that a successful Connect establishes the connection.
Member profinet::device::TEST_F (ProfinetDeviceConnectionLifecycleTests, ConnectFailureIsWrapped)
Verifies that an RPC connection error is converted to RPCConnectionError.
Member profinet::device::TEST_F (ProfinetDeviceConnectionLifecycleTests, ConnectIsNoOpWhenAlreadyConnected)
Verifies that Connect does nothing when already connected.
Member profinet::device::TEST_F (ProfinetDeviceConnectionLifecycleTests, DisconnectClearsConnectionState)
Verifies that Disconnect delegates to RPCCon and clears connection state.
Member profinet::device::TEST_F (ProfinetDeviceConnectionLifecycleTests, CloseClosesRpc)
Verifies that Close closes the RPC connection and clears ownership.
Member profinet::device::TEST_F (ProfinetDeviceConnectionLifecycleTests, DISABLED_CloseStopsAlarmListener)
Verifies that Close stops an active alarm listener.
Member profinet::device::TEST_F (ProfinetDeviceConnectionLifecycleTests, ReleaseArSuppressesDisconnectErrors)
Verifies that ReleaseAr suppresses disconnect exceptions.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, ParsesPhoenixGsdml)
Verify that the Phoenix Contact AXC-F-1252 GSDML can be parsed.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, ParsesAumaGsdml)
Verify that the AUMA SGx GSDML can be parsed successfully.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, FindsActuatorStatusModule)
Verify that the AUMA actuator status module is present.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, FindsDap)
Verify that the AUMA Device Access Point is parsed correctly.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, ParsesDeviceId)
Verify that the AUMA device ID is parsed correctly.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, ParsesVendorId)
Verify that the AUMA vendor ID is parsed correctly.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, ParsesStatusInputLength)
Verify that the AUMA status submodule contains 34 input bytes.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, AumaCommandBitsHaveCorrectByteAndBitOffsets)
Verify AUMA CMD BitDataItems map to the correct process-data byte and bit.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, AumaInputDataItemsMatchReportedLength)
Verify that every AUMA module's parsed input data-item lengths sum to the reported input length.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, AumaOutputDataItemsMatchReportedLength)
Verify that every AUMA module's parsed output data-item lengths sum to the reported output length.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, PhoenixInputDataItemsMatchReportedLength)
Verify that every Phoenix Contact global submodule's input data-item lengths sum to the parser's reported input length.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, PhoenixOutputDataItemsMatchReportedLength)
Verify that every Phoenix Contact global submodule's output data-item lengths sum to the parser's reported output length.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, AumaBuildIoSlotsContainsExpectedDeviceConfiguration)
Verify that the AUMA default GSDML configuration resolves its DAP and configured actuator input/output modules into IOSlots.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, AumaBuildIoSlotsDoesNotMutateParsedDevice)
Verify that AUMA BuildIoSlots does not change the parsed GSDML model.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, AumaCyclicIoLengthsMatchConfiguredModules)
Verify that the AUMA status and control modules expose the data lengths consumed by the cyclic IO configuration.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, AumaRepeatedParsingProducesSameMetadata)
Verify that the real AUMA GSDML can be parsed repeatedly without changing the resulting device metadata.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, BuildIoSlotsMatchesExpectedSlots)
Verify that BuildIoSlots produces the expected AUMA slot/subslot layout.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, BuildIoSlotsMatchesExpectedInputOutputLengths)
Verify that generated AUMA IOSlots expose the expected input/output lengths.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, BuildsAumaIoSignalCatalog)
Verify that the real AUMA GSDML produces a non-empty logical signal catalogue.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, BuildIoSlotsIsDeterministic)
Verify that resolving the same Phoenix GSDML more than once produces an identical IOSlot configuration.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, AumaLogByteCreatesEightBitSignals)
Verify that the AUMA LOG byte is expanded into eight logical sensor signals.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, ParsesAumaBitDataItems)
Verify that the AUMA GSDML parser preserves BitDataItem definitions.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, AumaSignalsMatchGeneratedIoSlots)
Verify the real AUMA signal catalogue agrees with BuildIoSlots().
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, PhoenixCatalogExcludesReservedSignals)
Verify Phoenix signals do not expose reserved process-data entries.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, BuildsPhoenixIoSignalCatalog)
Verify that the Phoenix real GSDML can also be converted to a signal catalogue.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, AumaCatalogSignalsHaveValueClassification)
Verify that every real AUMA signal has a supported connector value classification.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, AumaCatalogExcludesReservedSignals)
Verify reserved DataItems from the real AUMA GSDML are not exposed as signals.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, AumaSignalsStayWithinProcessDataLengths)
Verify that every real AUMA signal fits inside its parsed submodule process-data area.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, AumaActuatorSignalsUseControlSubmodule)
Verify AUMA actuator signals originate from the expected control process-data submodule.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, AumaSensorSignalsUseStatusSubmodule)
Verify AUMA input signals originate from the expected status process-data submodule.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, PhoenixDefaultSubmoduleResolvesToPnio512512)
Verify that the Phoenix Contact selected global submodule is PNIO512512 and therefore provides 512 input and output bytes.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, FindsActuatorControlModule)
Verify that the AUMA actuator control module is present.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, ParsesControlOutputLength)
Verify that the AUMA control submodule contains 16 output bytes.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, ParsesStatusSubmoduleIdent)
Verify the AUMA actuator status submodule ident number.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, ParsesControlSubmoduleIdent)
Verify the AUMA actuator control submodule ident number.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, BuildIoSlotsMatchesExpectedInputLengths)
Verify that generated AUMA IOSlots have the expected input lengths.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, BuildIoSlotsMatchesExpectedOutputLengths)
Verify that generated AUMA IOSlots have the expected output lengths.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, BuildIoSlotsProducesExpectedModuleIdents)
Verify that generated AUMA IOSlots contain the expected module idents.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, FindsPhoenixIoModule)
Verify that the Phoenix Contact PNSlot1 module is parsed.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, FindsPhoenixDap)
Verify that the Phoenix GSDML exposes the DAP module correctly.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, BuildsPhoenixDefaultIoSlotConfiguration)
Verify that the Phoenix Contact default GSDML configuration resolves the selected module and all DAP/PDEV submodules into IOSlots.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, PhoenixFixedModuleResolvesToSlotOne)
Verify that the Phoenix Contact fixed/used module resolves to slot 1.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, PhoenixModuleReferenceContainsUsedSubslot)
Verify that the Phoenix Contact module references contain an explicit UsedInSubslots selection for the default PNSlot1 configuration.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, PhoenixApplicationRelationsExposeTimingProperties)
Verify that the Phoenix Contact ApplicationRelations timing properties are parsed and available to the controller configuration.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, PhoenixDapVirtualSubmoduleBuildsSlotZero)
Verify that the Phoenix Contact DAP virtual submodule is resolved into the standard slot-zero/subslot-one representation used by BuildIoSlots.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, PhoenixInterfaceSubmoduleBuildsAtPdevSubslot)
Verify that the Phoenix Contact system-defined PDEV interface submodule is retained in the resolved IOSlot configuration.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, PhoenixPortSubmoduleBuildsAtPdevSubslot)
Verify that the Phoenix Contact PDEV port submodule is retained in the resolved IOSlot configuration.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, PhoenixExplicitPluggedConfigurationOverridesDefault)
Verify that an explicit Phoenix Contact module/submodule selection overrides the GSDML's default UsedInSubslots selection.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, ExplicitModuleAssignmentRejectsDisallowedPhoenixSlot)
Verify that a module cannot be explicitly assigned to a slot outside its AllowedInSlots declaration.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, ExplicitConfigurationRejectsUnknownModule)
Verify that an unknown module identifier is rejected while resolving an explicit GSDML configuration.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, ExplicitConfigurationRejectsUnknownSubmodule)
Verify that an unknown submodule identifier is rejected while resolving an explicit GSDML configuration.
Member profinet::gsdml::TEST_F (GsdmlRealDeviceTest, ExplicitConfigurationRejectsDisallowedSubslot)
Verify that an explicitly selected Phoenix submodule must be allowed in the requested subslot.
Member profinet::io::TEST (IoSignalCatalogTests, ConvertsBitOffsetToByteAndBitOffset)
Verify BitDataItem offsets are converted into process-data byte and bit offsets.
Member profinet::io::TEST (IoSignalCatalogTests, BitSignalsAreBooleanAndDoubleCompatible)
Verify BitDataItems are exposed as boolean double-compatible signals.
Member profinet::io::TEST (IoSignalCatalogTests, CombinesAndNormalizesPossibleInlineSubmoduleSlots)
Verify inline submodule placement metadata combines all known subslot references.
Member profinet::io::TEST (IoSignalCatalogTests, IncludesAllModulesWhenNoModuleReferencesExist)
Verify a module with no DAP reference is still catalogued when no module reference list exists.
Member profinet::io::TEST (IoSignalCatalogTests, UsesOnlyReferencedModulesWhenReferencesExist)
Verify that a non-empty module reference list limits catalogue construction to referenced modules.
Member profinet::io::TEST (IoSignalCatalogTests, MergesDuplicateModuleReferences)
Verify duplicate module references are merged into one module catalogue entry.
Member profinet::io::TEST (IoSignalCatalogTests, ResolvesGlobalSubmoduleReference)
Verify globally defined submodules referenced by a module are resolved and catalogued.
Member profinet::io::TEST (IoSignalTypeTests, ClassifiesAllDoubleCompatibleScalarTypes)
Verify all integer and floating-point DataTypes intended for the connector are classified.
Member profinet::io::TEST (IoSignalCatalogTests, BitSignalsRetainParentDataItemOffset)
Verify bit signals retain the byte offset of their parent DataItem.
Member profinet::io::TEST (IoSignalCatalogTests, BitDataItemDoesNotCreateParentSignal)
Verify a bit-defined DataItem is represented by its logical bits, not by an additional byte-valued signal.
Member profinet::io::TEST (IoSignalTypeTests, ClassifiesUnsupportedAndUnknownTypes)
Verify data types without an explicitly supported numeric connector representation are rejected.
Member profinet::io::TEST (IoSignalCatalogTests, ExpandsBitDataItemsIntoIndividualSignals)
Verify that BitDataItems become individual logical boolean signals.
Member profinet::io::TEST (IoSignalCatalogTests, MaintainsDeterministicCatalogueOrder)
Verify signal insertion order follows deterministic module/submodule and DataItem order.
Member profinet::io::TEST (IoSignalCatalogTests, RetainsDuplicateSignalNamesAcrossSubmodules)
Verify duplicated signal names are retained because the name alone is not a unique device key.
Member profinet::io::TEST (IoSignalCatalogTests, IncludesDapVirtualSubmoduleSignals)
Verify DAP virtual submodules are exposed at the slot/subslot locations used by BuildIoSlots().
Member profinet::io::TEST (IoSignalCatalogTests, UnknownSubmoduleReferenceThrows)
Verify an unresolved global submodule reference is reported instead of silently losing signals.
Member profinet::io::TEST (IoSignalCatalogTests, MergesDuplicateSubmoduleReferences)
Verify duplicate global submodule references are merged into one catalogue entry.
Member profinet::io::TEST (IoSignalCatalogTests, UnknownModuleReferenceThrows)
Verify an unresolved module reference is reported instead of silently losing signals.
Member profinet::io::TEST (IoSignalCatalogTests, PrefersInlineSubmoduleOverDuplicateGlobalReference)
Verify inline submodules take precedence over duplicate global definitions.
Member profinet::io::TEST (IoSignalCatalogTests, CalculatesIndependentInputAndOutputOffsets)
Verify DataItem offsets accumulate independently for input and output process data.
Member profinet::io::TEST (IoSignalTests, DirectionAccessorsReportCorrectDirection)
Verify sensor and actuator accessors expose the direction correctly.
Member profinet::io::TEST (IoSignalReservedTests, DoesNotMisclassifyNormalSignals)
Verify normal application names containing no reserved marker are retained.
Member profinet::io::TEST (IoSignalReservedTests, DetectsReservedTextIdsCaseInsensitively)
Verify reserved detection handles the vendor naming style used in GSDML TextIds.
Member profinet::io::TEST (IoSignalCatalogTests, CombinesAndNormalizesPossibleModuleSlots)
Verify module placement metadata combines allowed, fixed and used slots without duplicates.
Member profinet::io::TEST (IoSignalTests, DoubleCompatibilityAccessorMirrorsFlag)
Verify the connector compatibility accessor mirrors the stored compatibility flag.
Member profinet::io::TEST (IoSignalCatalogTests, EmptyDeviceProducesEmptyCatalogue)
Verify a completely empty GSDML device produces an empty catalogue.
Member profinet::io::TEST (IoSignalCatalogTests, SeparatesInputAndOutputSignals)
Verify input and output DataItems become sensors and actuators respectively.
Member profinet::io::TEST (IoSignalCatalogTests, ZeroLengthDataItemDoesNotAdvanceOffset)
Verify a zero-length DataItem does not advance the following item's offset.
Member profinet::io::TEST (IoSignalCatalogTests, NegativeDataItemLengthThrows)
Verify negative DataItem lengths are rejected instead of being converted to a huge unsigned size.
Member profinet::io::TEST (IoSignalCatalogTests, EmptyTextIdUsesFallbackName)
Verify an empty TextId gets a deterministic non-empty fallback display name.
Member profinet::io::TEST (IoSignalCatalogTests, FiltersReservedItems)
Verify reserved process-data items are omitted while other items remain.
Member profinet::io::TEST (IoSignalCatalogTests, ReservedItemStillAdvancesOffset)
Verify a reserved DataItem still occupies its wire bytes when calculating later offsets.
Member profinet::io::TEST (IoSignalCatalogTests, KeepsUnsupportedSignalsWithCompatibilityFalse)
Verify unsupported DataItems remain visible but are marked non-double-compatible.
Member profinet::io::TEST (IoSignalCatalogTests, SupportedScalarSignalsAreDoubleCompatible)
Verify all supported scalar DataTypes are exposed as double-compatible signals.
Member profinet::io::TEST (IoSignalCatalogTests, PreservesModuleAndSubmoduleMetadata)
Verify module and submodule metadata is copied to every signal.
Member profinet::rpc::TEST_F (RpcTests, ReadAllImIgnoresRpcErrorForOptionalRecord)
Ignores RPC errors for optional I&M records.
Member profinet::rpc::TEST_F (RpcTests, ReadAllImIgnoresStandardExceptionForOptionalRecord)
Ignores non-RPC exceptions for optional I&M records.
Member profinet::rpc::TEST_F (RpcTests, ReadDiagnosisFallsBackToSimpleParser)
Falls back to the simple diagnosis parser when the full parser is empty.
Member profinet::rpc::TEST_F (RpcTests, ReadAllImPropagatesIm0Failure)
Propagates failure when mandatory I&M0 cannot be read.
Member profinet::rpc::TEST_F (RpcTests, WriteMultipleReturnsEmptyForNoWrites)
Returns immediately without sending anything for an empty write list.
Member profinet::rpc::TEST_F (RpcTests, WriteMultipleSendsMultipleWrites)
Builds and sends a multiple-write request successfully.
Member profinet::rpc::TEST_F (RpcTests, WriteMultipleThrowsPnioErrorForDeviceError)
Throws PNIOError when the overall multiple-write operation fails.
Member profinet::rpc::TEST_F (RpcTests, ReadModuleDiffReturnsParsedModuleDifference)
Reads and parses the ModuleDiffBlock.
Member profinet::rpc::TEST_F (RpcTests, ReadDiagnosisUsesFullDiagnosisParser)
Returns parsed diagnosis data when the full diagnosis parser finds entries.
Member profinet::rpc::TEST_F (RpcTests, DisconnectSendsReleaseRequestAndClearsLive)
Sends a RELEASE request and marks the connection as disconnected.
Member profinet::rpc::TEST_F (RpcTests, ConnectRejectsMissingSourceMacDuringReconnect)
Throws when a live connection has no source MAC available.
Member profinet::rpc::TEST_F (RpcTests, CheckTimeoutDoesNotReconnectBeforeTimeout)
Does not reconnect while the live connection is still within its timeout.
Member profinet::rpc::TEST_F (RpcTests, CheckTimeoutReconnectsAfterTimeout)
Reconnects when the connection has exceeded the connection timeout.
Member profinet::rpc::TEST_F (RpcTests, ConnectRequiresSourceMacForInitialConnection)
Requires a source MAC when establishing the first connection.
Member profinet::rpc::TEST_F (RpcTests, ConnectEstablishesBasicApplicationRelation)
Establishes a basic AR without cyclic IO or AlarmCR.
Member profinet::rpc::TEST_F (RpcTests, ConnectRequestsAlarmCr)
Requests an AlarmCR when withAlarmCr is enabled.
Member profinet::rpc::TEST_F (RpcTests, ConnectLeavesAlarmCrDisabledWhenResponseHasNoAlarmCr)
Leaves AlarmCR disabled when the response contains no AlarmCR block.
Member profinet::rpc::TEST_F (RpcTests, ConnectConvertsDevicePnioError)
Converts a device-reported CONNECT error into RPCConnectionError.
Member profinet::rpc::TEST_F (RpcTests, ConnectConvertsRpcError)
Converts an RPC error during CONNECT into RPCConnectionError.
Member profinet::rpc::TEST_F (RpcTests, ConnectReusesSourceMacDuringReconnect)
Reuses the existing source MAC when reconnecting without a new MAC.
Member profinet::rpc::TEST_F (RpcTests, ConnectReplacesSourceMacDuringReconnect)
Uses the replacement source MAC when reconnecting with a new MAC.
Member profinet::rpc::TEST_F (RpcTests, ReadAllImReturnsAllSuccessfulRecords)
Reads I&M0 and all optional I&M records successfully.
Member profinet::rpc::TEST_F (RpcTests, ConnectReturnsConnectResultForIocrSetup)
Establishes cyclic IO when an IOCR setup is supplied.
Member profinet::rpc::TEST_F (RpcTests, ReadReturnsParsedIodResponse)
Reads and parses an IOD record successfully.
Member profinet::rpc::TEST_F (RpcTests, ReadThrowsPnioErrorForDeviceError)
Throws PNIOError when the device reports an error during Read().
Member profinet::rpc::TEST_F (RpcTests, ReadImplicitReturnsParsedIodResponse)
Reads a record successfully without an established AR.
Member profinet::rpc::TEST_F (RpcTests, ReadImplicitThrowsPnioErrorForDeviceError)
Throws PNIOError when the device rejects an implicit read.
Member profinet::rpc::TEST_F (RpcTests, WriteCompletesSuccessfully)
Writes a record successfully.
Member profinet::rpc::TEST_F (RpcTests, WriteThrowsPnioErrorForDeviceError)
Throws PNIOError when the device rejects a write.
Member profinet::rpc::TEST_F (RpcTests, ReadRawReturnsPayload)
Returns only the record payload through the ReadRaw() convenience wrapper.
Member profinet::rpc::TEST_F (RpcTests, ReadImWrappersReadAllIndividualIndices)
Reads every I&M wrapper and verifies that each uses its own index.
Member profinet::rpc::TEST_F (RpcTests, EpmLookupReturnsEmptyForShortBody)
Returns no endpoints when the response body contains fewer than twelve bytes of EPM lookup metadata.
Member profinet::rpc::TEST_F (RpcTests, GetStationInfoThrowsWhenDiscoveryFindsNoMatchingDevice)
Throws DCPDeviceNotFoundError when discovery produces responses but none has the requested station name.
Member profinet::rpc::TEST_F (RpcTests, GetStationInfoDiscoverySkipsNonMatchingDevice)
Skips a discovered device with a different station name and returns a later matching device.
Member profinet::rpc::TEST_F (RpcTests, GetStationInfoDiscoveryMatchesStationNameCaseInsensitive)
Matches a discovered station name case-insensitively.
Member profinet::rpc::TEST_F (RpcTests, GetStationInfoFallsBackToDiscovery)
Falls back to DCP discovery when the initial station-name request produces no response.
Member profinet::rpc::TEST_F (RpcTests, GetStationInfoSendsStationNameRequest)
Verifies that GetStationInfo sends a DCP station-name request using the requested station name.
Member profinet::rpc::TEST_F (RpcTests, GetStationInfoReturnsFirstDirectResponse)
Returns the first device immediately when the initial station-name request produces a DCP response.
Member profinet::rpc::TEST_F (RpcTests, EpmLookupIgnoresEntryWithInvalidTower)
Does not add an EPM result when the tower contains no interface UUID.
Member profinet::rpc::TEST_F (RpcTests, EpmLookupTrimsTrailingAnnotationZeros)
Removes trailing zero bytes from an EPM annotation.
Member profinet::rpc::TEST_F (RpcTests, EpmLookupHandlesZeroLengthAnnotation)
Skips annotation parsing when the annotation has zero length and continues with the tower.
Member profinet::rpc::TEST_F (RpcTests, EpmLookupStopsOnTruncatedAnnotationLength)
Stops safely when the annotation length field is truncated.
Member profinet::rpc::TEST_F (RpcTests, EpmLookupStopsOnTruncatedTowerPointer)
Stops safely when an EPM entry contains no complete tower pointer.
Member profinet::rpc::TEST_F (RpcTests, EpmLookupStopsOnTruncatedEntryUuid)
Stops safely when an EPM entry does not contain its complete object UUID.
Member profinet::rpc::TEST_F (RpcTests, EpmLookupClampsBodyLengthToReceivedData)
Clamps an advertised response body length when fewer bytes were actually received.
Member profinet::rpc::TEST_F (RpcTests, GetStationInfoNotFoundExceptionContainsStationName)
Verifies the diagnostic text of DCPDeviceNotFoundError when the requested station name cannot be discovered.
Member profinet::rpc::TEST_F (RpcTests, EpmLookupReturnsEmptyForUnexpectedResponseType)
Returns no endpoints when the RPC response packet type is neither RESPONSE nor FAULT.
Member profinet::rpc::TEST_F (RpcTests, EpmLookupReturnsEmptyForFaultResponse)
Returns no endpoints for an RPC FAULT response.
Member profinet::rpc::TEST_F (RpcTests, EpmLookupReturnsEmptyForShortResponse)
Returns no endpoints when the RPC response is shorter than the fixed DCE/RPC header.
Member profinet::rpc::TEST_F (RpcTests, EpmLookupBuildsInterfaceFilteredRequest)
Builds an interface-filtered EPM lookup request and verifies that the requested interface UUID is encoded into the request body.
Member profinet::rpc::TEST_F (RpcTests, EpmLookupReturnsParsedEndpoint)
Performs a complete EPM lookup and verifies endpoint fields, annotation, object UUID and request construction.
Member profinet::rpc::TEST_F (RpcTests, ParseEpmTowerIgnoresUnknownProtocol)
Ignores an unknown EPM tower protocol while preserving a parsed interface UUID.
Member profinet::rpc::TEST_F (RpcTests, ParseEpmTowerIgnoresInterfaceDataFromLaterFloor)
Ignores a valid interface floor when it occurs after the first floor.
Member profinet::rpc::TEST_F (RpcTests, ParseEpmTowerOnlyUsesFirstInterfaceFloorForInterfaceData)
Processes later floors without replacing the interface UUID parsed from the first floor.
Member profinet::rpc::TEST_F (RpcTests, ParseEpmTowerParsesCompleteEndpoint)
Parses interface, UDP, port and IP floors together.
Member profinet::rpc::TEST_F (RpcTests, ParseEpmTowerIgnoresShortIpRhs)
Ignores an EPM IP floor with fewer than four RHS bytes.
Member profinet::rpc::TEST_F (RpcTests, ParseEpmTowerParsesIpv4Address)
Parses an IPv4 address from the EPM IP floor.
Member profinet::rpc::TEST_F (RpcTests, ParseEpmTowerIgnoresShortPortRhs)
Ignores an EPM port floor with an insufficient RHS.
Member profinet::rpc::TEST_F (RpcTests, ParseEpmTowerParsesBigEndianPort)
Parses a big-endian EPM UDP port.
Member profinet::rpc::TEST_F (RpcTests, ParseAlarmCrResponseReturnsLocalAlarmReference)
Parses a valid AlarmCR response and returns its local alarm reference.
Member profinet::rpc::TEST_F (RpcTests, ParseIocrResponseReturnsZeroForEmptyData)
Returns zero for empty IOCR response data.
Member profinet::rpc::TEST_F (RpcTests, HasAlarmCrReturnsFalseInitially)
Reports that no AlarmCR is enabled initially.
Member profinet::rpc::TEST_F (RpcTests, DeviceAlarmRefReturnsZeroInitially)
Returns the device alarm reference before an AlarmCR is established.
Member profinet::rpc::TEST_F (RpcTests, LocalAlarmRefReturnsConfiguredValue)
Returns the controller's local alarm reference.
Member profinet::rpc::TEST_F (RpcTests, SessionKeyReturnsInitialValue)
Returns the current session key of the RPC connection.
Member profinet::rpc::TEST_F (RpcTests, ArUuidReturnsConnectionArUuid)
Returns the AR UUID assigned to the RPC connection.
Member profinet::rpc::TEST_F (RpcTests, InfoReturnsDeviceDescription)
Returns the DCP device information supplied to the RPC connection.
Member profinet::rpc::TEST_F (RpcTests, IsConnectedReturnsFalseInitially)
Reports that a newly created RPC connection is not connected.
Member profinet::rpc::TEST_F (RpcTests, ParseAlarmCrResponseReturnsMinusOneAfterUnrelatedBlocks)
Scans across multiple unrelated blocks before returning -1 when no AlarmCR response exists.
Member profinet::rpc::TEST_F (RpcTests, ParseAlarmCrResponseContinuesAfterMalformedBlock)
Continues scanning after a malformed AlarmCR block and successfully parses a later valid AlarmCR response.
Member profinet::rpc::TEST_F (RpcTests, ParseAlarmCrResponseIgnoresTruncatedAlarmBlock)
Ignores an AlarmCR block whose declared body is larger than the available response data.
Member profinet::rpc::TEST_F (RpcTests, ParseAlarmCrResponseContinuesAfterMalformedAlarmBlock)
Continues scanning when an AlarmCR response block fails to parse.
Member profinet::rpc::TEST_F (RpcTests, ParseAlarmCrResponseContinuesAfterUnrelatedBlock)
Skips an unrelated block and parses a valid AlarmCR response appearing later in the response data.
Member profinet::rpc::TEST_F (RpcTests, ParseEpmTowerParsesUdpProtocol)
Parses the UDP protocol identifier.
Member profinet::rpc::TEST_F (RpcTests, ParseAlarmCrResponseIgnoresUnrelatedBlock)
Skips an unrelated block and returns -1 when no AlarmCR response block follows.
Member profinet::rpc::TEST_F (RpcTests, ParseAlarmCrResponseReturnsMinusOneForShortData)
Returns -1 when response data is shorter than an AlarmCR block header.
Member profinet::rpc::TEST_F (RpcTests, ParseAlarmCrResponseReturnsMinusOneForEmptyData)
Returns -1 when no AlarmCR response data is supplied.
Member profinet::rpc::TEST_F (RpcTests, BuildAlarmCrBlockCreatesExpectedBlockHeader)
Verifies the AlarmCR request block header fields generated by BuildAlarmCrBlock.
Member profinet::rpc::TEST_F (RpcTests, BuildAlarmCrBlockCombinesTransportAndPriority)
Encodes both transport and priority into AlarmCR properties.
Member profinet::rpc::TEST_F (RpcTests, BuildAlarmCrBlockEncodesPriority)
Encodes the requested alarm priority into AlarmCR properties.
Member profinet::rpc::TEST_F (RpcTests, BuildAlarmCrBlockUsesIpEtherTypeForNonZeroTransport)
Builds an AlarmCR block using IP transport when the transport value is non-zero.
Member profinet::rpc::TEST_F (RpcTests, BuildAlarmCrBlockUsesProfinetEtherTypeForTransportZero)
Builds an AlarmCR block for Ethernet transport with normal priority.
Member profinet::rpc::TEST_F (RpcTests, CreateNrdRoundTripsThroughSerialization)
Verifies that an NRD wrapper can be serialized and parsed without changing its contents.
Member profinet::rpc::TEST_F (RpcTests, CreateNrdHandlesEmptyPayload)
Creates an NRD wrapper correctly for an empty payload.
Member profinet::rpc::TEST_F (RpcTests, CreateNrdBuildsExpectedWrapper)
Creates an NRD wrapper containing the supplied payload and expected status, length, count and offset fields.
Member profinet::rpc::TEST_F (RpcTests, GetStationInfoDoesNotFilterNonEmptyDirectResponse)
Verifies that a non-empty direct response is returned without applying a station-name comparison.
Member profinet::rpc::TEST_F (RpcTests, GetStationInfoThrowsWhenDiscoveryReturnsNoResponses)
Throws DCPDeviceNotFoundError when both the direct request and the subsequent discovery produce no devices.
Member profinet::rpc::TEST_F (RpcTests, StringToUuidBytesRejectsMalformedInput)
Rejects malformed UUID strings that do not contain a valid UUID representation.
Member profinet::rpc::TEST_F (RpcTests, GenerateDifferentArUuids)
Exercises RandomUuidBytes multiple times through separate RPCCon instances and verifies that independent UUIDs are generated.
Member profinet::rpc::TEST_F (RpcTests, GenerateNonZeroArUuid)
Exercises RandomUuidBytes through RPCCon construction and verifies that a valid 16-byte non-zero UUID is generated.
Member profinet::rpc::TEST_F (RpcTests, BuildIocrBlockUsesConfiguredSlots)
Builds an output IOCR block from the configured I/O slots with the expected IOCR type, data length, and API object count.
Member profinet::rpc::TEST_F (RpcTests, PNRPCHeaderInterfaceUuidBytes)
PNRPCHeader interface UUID bytes match the literal PROFINET-assigned UUID
Member profinet::rpc::TEST_F (RpcTests, CreateRpcBuildsExpectedHeader)
Creates an RPC connection object with the expected initial DCE/RPC header fields.
Member profinet::rpc::TEST_F (RpcTests, IOCRSetupValidateNormalConfiguration)
IOCRSetup::Validate accepts a normal IOCR configuration.
Member profinet::rpc::TEST_F (RpcTests, IOCRSetupValidateLowWatchdog)
IOCRSetup::Validate reports a warning for a low watchdog factor.
Member profinet::rpc::TEST_F (RpcTests, IOCRSetupValidateEmptySlots)
IOCRSetup::Validate reports an error for an empty slot configuration.
Member profinet::rpc::TEST_F (RpcTests, IOCRSetupValidateFlagsEmptySlotsAndLowWatchdog)
IOCRSetup::validate flags empty slots and low watchdog
Member profinet::rpc::TEST_F (RpcTests, IOCRSetupCycleTimeCalculation)
IOCRSetup cycle time calculation matches PROFINET timing formula
Member profinet::rpc::TEST_F (RpcTests, EPMEndpointInterfaceNameIsCaseInsensitive)
Matches EPM interface UUIDs case-insensitively when resolving their well-known interface names.
Member profinet::rpc::TEST_F (RpcTests, EPMEndpointUnknownUuidIncludesUuid)
Formats an unknown EPM interface UUID as an unknown interface name containing its UUID value.
Member profinet::rpc::TEST_F (RpcTests, EPMEndpointResolvesWellKnownProfinetInterfaceNames)
Returns the expected names for the well-known PROFINET EPM interface UUIDs.
Member profinet::rpc::TEST_F (RpcTests, GenerateIndependentArAndActivityUuids)
Exercises RandomUuidBytes for both AR and activity UUID generation and verifies that both generated UUIDs are populated.
Member profinet::rpc::TEST_F (RpcTests, UuidBytesToStringStringToUuidBytesRoundtrip)
Converts UUID bytes to a canonical UUID string and back without changing the underlying byte representation.
Member profinet::rpc::TEST_F (RpcTests, ParseIocrResponseReturnsZeroForShortData)
Returns zero when the IOCR response contains fewer than one block header.
Member profinet::rpc::TEST_F (RpcTests, ParseIocrResponseIgnoresUnrelatedBlock)
Ignores unrelated blocks while scanning the response.
Member profinet::rpc::TEST_F (RpcTests, ParseIocrResponseIgnoresDifferentIocrType)
Ignores an IOCR response with a different IOCR type.
Member profinet::rpc::TEST_F (RpcTests, ParseIocrResponseReturnsMatchingFrameId)
Returns the frame ID for a matching IOCR response.
Member profinet::rpc::TEST_F (RpcTests, ParseIocrResponseIgnoresMalformedIocrBlock)
Continues after a malformed IOCR block whose parser throws.
Member profinet::rpc::TEST_F (RpcTests, ParseIocrResponseFindsMatchingBlockAfterUnrelatedBlock)
Finds a matching IOCR after an unrelated block.
Member profinet::rpc::TEST_F (RpcTests, SendReceiveReturnsResponseAndMarksConnectionLive)
Returns a parsed RPC response and marks the connection live.
Member profinet::rpc::TEST_F (RpcTests, SendReceiveRetriesAfterRequestPacket)
Retries after a REQUEST packet and returns the following RESPONSE.
Member profinet::rpc::TEST_F (RpcTests, SendReceiveThrowsForShortResponse)
Throws RPCError when the transport returns too little data.
Member profinet::rpc::TEST_F (RpcTests, SendReceiveThrowsRpcFaultError)
Converts an RPC FAULT response into RPCFaultError.
Member profinet::rpc::TEST_F (RpcTests, SendReceiveThrowsForRejectedResponse)
Converts an RPC REJECT response into RPCError.
Member profinet::rpc::TEST_F (RpcTests, SendReceiveThrowsForUnexpectedPacketType)
Rejects any unsupported RPC packet type.
Member profinet::rpc::TEST_F (RpcTests, EPMEndpointInterfaceNameIsCaseInsensitiveForAllKnownInterfaces)
Performs case-insensitive matching of well-known interface UUIDs.
Member profinet::rpc::TEST_F (RpcTests, ParseEpmTowerRejectsShortInterfaceFloor)
Ignores an interface protocol floor shorter than the required UUID and version payload.
Member profinet::rpc::TEST_F (RpcTests, ParseEpmTowerInterfaceFloorWithoutMinorVersion)
Parses an interface floor when its RHS contains fewer than two bytes and therefore leaves the minor version unchanged.
Member profinet::rpc::TEST_F (RpcTests, ParseEpmTowerParsesInterfaceUuidAndVersions)
Parses a PNIO interface floor with a minor version present.
Member profinet::rpc::TEST_F (RpcTests, MakeEpmTowerEncodesEmptyThenInterfaceFloor)
Verifies the serialized representation of an empty floor followed by an interface floor.
Member profinet::rpc::TEST_F (RpcTests, ParseEpmTowerSkipsEmptyFloor)
Verifies that an empty EPM floor is skipped without preventing subsequent parsing.
Member profinet::rpc::TEST_F (RpcTests, ParseEpmTowerParsesInterfaceFloor)
Verifies that a valid interface floor is parsed independently of preceding floors.
Member profinet::rpc::TEST_F (RpcTests, MakeInterfaceTowerLhsCreatesValidInterfaceBlock)
Verifies that the interface tower helper creates the exact 19-byte LHS structure expected by ParseEpmTower.
Member profinet::rpc::TEST_F (RpcTests, ParseEpmTowerSkipsEmptyLhs)
Skips a zero-length LHS on a subsequent floor while preserving the endpoint parsed from the first floor.
Member profinet::rpc::TEST_F (RpcTests, ParseEpmTowerStopsOnTruncatedRhs)
Stops parsing when the RHS data is shorter than its declared length.
Member profinet::rpc::TEST_F (RpcTests, ParseEpmTowerStopsOnTruncatedRhsLength)
Stops parsing when the RHS length field is truncated.
Member profinet::rpc::TEST_F (RpcTests, ParseEpmTowerStopsOnTruncatedLhs)
Stops parsing when the LHS length exceeds the remaining tower data.
Member profinet::rpc::TEST_F (RpcTests, ParseEpmTowerStopsOnTruncatedFloorHeader)
Stops parsing when a floor header is truncated.
Member profinet::rpc::TEST_F (RpcTests, ParseEpmTowerRejectsTooShortTower)
Rejects an EPM tower shorter than the minimum floor-count/header size.
Member profinet::rpc::TEST_F (RpcTests, CheckTimeoutDoesNothingWhenNotConnected)
Does nothing when the AR is not currently live.
Member profinet::rpc::TEST_F (RpcTests, EPMEndpointInterfaceNameUnknown)
Returns an Unknown interface name for an unrecognized UUID.
Member profinet::rpc::TEST_F (RpcTests, EPMEndpointInterfaceNameEpm)
Resolves the EPM v4 interface UUID.
Member profinet::rpc::TEST_F (RpcTests, EPMEndpointInterfaceNamePnioParameterServer)
Resolves the PNIO parameter-server interface UUID.
Member profinet::rpc::TEST_F (RpcTests, EPMEndpointInterfaceNamePnioSupervisor)
Resolves the PNIO supervisor interface UUID.
Member profinet::rpc::TEST_F (RpcTests, EPMEndpointInterfaceNamePnioController)
Resolves the PNIO controller interface UUID.
Member profinet::rpc::TEST_F (RpcTests, EPMEndpointInterfaceNamePnioDevice)
Resolves the PNIO device interface UUID.
Member profinet::rpc::TEST_F (RpcTests, RemoteObjectUuidHasExpectedLength)
Verifies that constructing RPCCon also executes the complete BuildObjectUuid path used for the remote object UUID.
Member profinet::rpc::TEST_F (RpcTests, BuildObjectUuidUsesFixedProfinetPrefixAndSuffix)
Verifies that the fixed portion of BuildObjectUuid is identical for different device and vendor identifiers.
Member profinet::rpc::TEST_F (RpcTests, BuildObjectUuidPreservesDeviceAndVendorBytes)
Verifies that BuildObjectUuid preserves every supplied node byte in the remote object UUID.
Member profinet::rpc::TEST_F (RpcTests, BuildsExpectedRemoteObjectUuid)
Verifies that BuildObjectUuid creates the PROFINET fixed prefix,/// shared UUID suffix, and supplied six-byte node identifier.
Member profinet::rpc::TEST_F (RpcTests, GeneratedSessionKeysAreAlwaysNonZero)
Exercises RandomNonzeroU16 repeatedly and verifies that every generated session key satisfies the non-zero invariant.
Member profinet::rpc::TEST_F (RpcTests, GenerateNonZeroSessionKey)
Exercises RandomNonzeroU16 through RPCCon construction and verifies that the generated session key is never zero.
Member profinet::rpc::TEST_F (RpcTests, ReadDiagnosisReturnsEmptyForShortDiagnosisPayload)
Returns empty diagnosis data for payloads six bytes or shorter.
Member profinet::rpc::TEST_F (RpcTests, ParseRawRpcHeaderExtractsPayloadAfterFixedHeader)
Extracts payload starting immediately after the fixed RPC header.
Member profinet::rpc::TEST_F (RpcTests, ApplicationReadyThrowsWhenNotConnected)
Rejects ApplicationReady when the RPC connection is not live.
Member profinet::rpc::TEST_F (RpcTests, ApplicationReadySkipsInvalidRawRpcPacket)
Skips an invalid raw RPC packet and processes the next request.
Member profinet::rpc::TEST_F (RpcTests, ApplicationReadySkipsNonRequestPacket)
Skips a non-request RPC packet and processes the next request.
Member profinet::rpc::TEST_F (RpcTests, ApplicationReadySkipsNonControlOperation)
Skips an RPC request whose operation is not CONTROL.
Member profinet::rpc::TEST_F (RpcTests, ApplicationReadySkipsShortNrdPayload)
Skips a CONTROL request whose NRD payload is shorter than its fixed header.
Member profinet::rpc::TEST_F (RpcTests, ApplicationReadySkipsShortNrdBody)
Skips a CONTROL request whose NRD body is shorter than an IOD control block.
Member profinet::rpc::TEST_F (RpcTests, ApplicationReadySkipsWrongControlBlockType)
Skips a CONTROL request containing a non-Application-Ready block.
Member profinet::rpc::TEST_F (RpcTests, ApplicationReadyProcessesBigEndianRequest)
Processes a big-endian Application Ready request and sends a response.
Member profinet::rpc::TEST_F (RpcTests, ReadDiagnosisReturnsEmptyForRpcError)
Converts an RPC read failure into empty diagnosis data.
Member profinet::rpc::TEST_F (RpcTests, CloseClosesBothTransportsWhenNotLive)
Closes both RPC transports without sending RELEASE when already disconnected.
Member profinet::rpc::TEST_F (RpcTests, CloseDisconnectsAndClosesBothTransports)
Disconnects the active connection and closes both RPC transports.
Member profinet::rpc::TEST_F (RpcTests, DisconnectAlwaysClearsLive)
Always clears the live state after disconnect processing.
Member profinet::rpc::TEST_F (RpcTests, DisconnectSwallowsSendExceptionAndClearsLive)
Swallows a RELEASE transmission failure and still clears the connection state.
Member profinet::rpc::TEST_F (RpcTests, DisconnectDoesNothingWhenNotLive)
Does nothing when the connection is already disconnected.
Member profinet::rpc::TEST_F (RpcTests, DisconnectBuildsCorrectReleaseBlock)
Verifies the nested RELEASE block fields.
Member profinet::rpc::TEST_F (RpcTests, ApplicationReadyPropagatesReceiveException)
Propagates an exception thrown while receiving an Application Ready request.
Member profinet::rpc::TEST_F (RpcTests, ApplicationReadyAcceptsUnexpectedControlCommand)
Accepts an Application Ready block even when its control command differs.
Member profinet::rpc::TEST_F (RpcTests, ApplicationReadyProcessesLittleEndianRequest)
Processes a little-endian Application Ready request and sends a response.
Member profinet::rpc::TEST_F (RpcTests, ParseRawRpcHeaderParsesLittleEndian)
Parses a little-endian raw RPC header using the DREP byte order.
Member profinet::rpc::TEST_F (RpcTests, SendControlRejectsDisconnectedConnection)
Rejects CONTROL operations when the AR is not connected.
Member profinet::rpc::TEST_F (RpcTests, EnumerateIndicesReportsAllProbeOutcomes)
Enumerates custom indices and reports readable, empty, PNIO-error. RPC-error and duplicate entries correctly.
Member profinet::rpc::TEST_F (RpcTests, DiscoverTopologyReturnsBothTopologyRecords)
Reads both PDRealData and RealIdentificationData.
Member profinet::rpc::TEST_F (RpcTests, DiscoverSlotsReturnsRealIdentificationSlots)
Returns the slots obtained from RealIdentificationData.
Member profinet::rpc::TEST_F (RpcTests, ReadRealIdentificationDataReturnsParsedData)
Reads and parses RealIdentificationData successfully.
Member profinet::rpc::TEST_F (RpcTests, ReadPdRealDataReturnsParsedData)
Reads and parses PDRealData successfully.
Member profinet::rpc::TEST_F (RpcTests, ReadAllDiagnosisContinuesAfterRpcError)
Continues diagnosis probing when one probe produces an RPC error.
Member profinet::rpc::TEST_F (RpcTests, ReadAllDiagnosisReturnsNonEmptyDiagnosisResults)
Probes all standard diagnosis indices and returns only successful entries.
Member profinet::rpc::TEST_F (RpcTests, ParseRawRpcHeaderPreservesSerialHigh)
Preserves the high byte of the RPC serial number.
Member profinet::rpc::TEST_F (RpcTests, SendControlReturnsResponsePayload)
Waits for and returns the NRD payload of a CONTROL response.
Member profinet::rpc::TEST_F (RpcTests, SendControlThrowsPnioErrorForDeviceError)
Throws PNIOError when a CONTROL response reports a device error.
Member profinet::rpc::TEST_F (RpcTests, PrmBeginSendsExpectedControlCommand)
PrmBegin sends the PrmBegin control command.
Member profinet::rpc::TEST_F (RpcTests, PrmEndSendsExpectedControlCommand)
PrmEnd sends the PrmEnd control command.
Member profinet::rpc::TEST_F (RpcTests, ReadyForRtClass3SendsExpectedControlCommand)
ReadyForRtClass3 sends the RT Class 3 readiness command.
Member profinet::rpc::TEST_F (RpcTests, ParseRawRpcHeaderRejectsShortData)
Rejects raw RPC data shorter than the fixed RPC header.
Member profinet::rpc::TEST_F (RpcTests, ParseRawRpcHeaderParsesBigEndian)
Parses a big-endian raw RPC header and preserves its payload.
Member profinet::rpc::TEST_F (RpcTests, SendControlSendsWithoutWaiting)
Sends a CONTROL request without waiting for a response.
Member profinet::rt::TEST_F (RtFrameTest, DISABLED_TaggedEthernetFrameRoundTrips)
Verify that a priority-tagged RT Ethernet frame round-trips.
Member profinet::rt::TEST_F (RtFrameTest, NonProfinetEtherTypeIsRejected)
Verify that an Ethernet frame with a non-PROFINET EtherType is rejected.
Member profinet::rt::TEST_F (RtFrameTest, UntaggedEthernetFrameParses)
Verify that untagged RT Ethernet frames remain supported.
Member profinet::sim::TEST (VirtualPhoenixPlcTests, LocalInputBytesRoundTrip)
Verify local Phoenix input bytes can be injected and retrieved through GSDML signal metadata.
Member profinet::sim::TEST (VirtualPhoenixPlcTests, LocalTypedValuesRoundTrip)
Verify signed and floating-point Phoenix process-image values round-trip through the double API.
Member profinet::sim::TEST (VirtualPhoenixPlcTests, BitSignalsPreserveSiblingBits)
Verify Phoenix bit signals preserve the other bits in their containing byte.
Member profinet::sim::TEST (VirtualPhoenixPlcTests, TypedValueValidationRejectsInvalidValues)
Verify finite/integer/range validation rejects values that cannot be represented by the GSDML type.
Member profinet::sim::TEST (VirtualPhoenixPlcTests, ConnectedControllerDrivesVirtualAuma)
Verify a connected PLC sends an AUMA command through the production CyclicController.
Member profinet::sim::TEST (VirtualPhoenixPlcTests, BadIopsWithholdsInputData)
Verify BAD IOPS withholds the sensor value while statistics continue to advance.
Member profinet::sim::TEST (VirtualPhoenixPlcTests, NoInputTriggersControllerWatchdog)
Verify a NoInput scenario drives the production controller watchdog into FAULT.
Member profinet::sim::TEST (VirtualPhoenixPlcTests, DisconnectAllowsReconnect)
Verify disconnect stops the production controller and permits reconnecting the same valve.
Member profinet::sim::TEST (VirtualPhoenixPlcTests, DuplicateConnectionIsRejected)
Verify a duplicate connection name is rejected without creating a second controller.
Member profinet::sim::TEST (VirtualProfinetLabTests, RunsMultipleIndependentValvePlcPairs)
Verify N virtual valves and N Phoenix PLCs can share one bus without cross-talk.
Member profinet::sim::TEST (VirtualProfinetLabTests, DuplicateNamesAreRejected)
Verify simulator names are globally unique inside their respective labs.
Member profinet::sim::TEST (VirtualProfinetLabTests, DuplicateMacAddressesAreRejectedAcrossNodeTypes)
Verify node MAC addresses are unique across valve and PLC namespaces.
Member profinet::sim::TEST (VirtualProfinetLabTests, ScenarioChangeUpdatesDashboard)
Verify changing a scenario through the lab is visible in both simulator and dashboard state.
Member profinet::sim::TEST (InMemoryEthernetRoutingTests, UnicastReachesOnlyMatchingEndpoint)
Verify unicast traffic reaches only the endpoint with the destination MAC.
Member profinet::sim::TEST (InMemoryEthernetRoutingTests, BroadcastIsFloodedWithoutLoopback)
Verify broadcast frames are flooded to every other endpoint but not reflected to the sender.
Member profinet::sim::TEST (VirtualAumaScenarioTests, JammedKeepsIopsGood)
Verify Jammed is an application fault while cyclic provider data remains valid.
Member profinet::sim::TEST (InMemoryEthernetRoutingTests, MulticastIsFlooded)
Verify multicast destinations are flooded like broadcast traffic.
Member profinet::sim::TEST (InMemoryEthernetRoutingTests, SameMacSocketsDoNotLoopBackTraffic)
Verify separate TX and RX sockets sharing a MAC do not receive each other's frames.
Member profinet::sim::TEST (InMemoryEthernetSocketTests, ReceiveTimeoutReturnsEmptyFrame)
Verify a positive receive timeout returns an empty frame without throwing.
Member profinet::sim::TEST (InMemoryEthernetSocketTests, NegativeTimeoutThrows)
Verify negative receive timeouts are rejected.
Member profinet::sim::TEST (InMemoryEthernetRoutingTests, ShortFrameThrows)
Verify invalid Ethernet frames are rejected before routing.
Member profinet::sim::TEST (InMemoryEthernetBusTests, ClearQueuesRemovesPendingFrames)
Verify ClearQueues removes pending traffic from all connected endpoints.
Member profinet::sim::TEST (InMemoryEthernetBusTests, EndpointDestructionDetachesSocket)
Verify destroying an endpoint detaches it from the virtual switch.
Member profinet::sim::TEST (VirtualAumaValveTests, StartsFromConfiguredGsdmlPosition)
Verify the virtual AUMA model starts at its configured position and exposes real signals.
Member profinet::sim::TEST (VirtualAumaValveTests, OpenCommandMovesValveToEndStop)
Verify Normal scenario movement follows the OPEN command and reaches the end stop.
Member profinet::sim::TEST (VirtualAumaValveTests, RejectsFramesFromSecondController)
Verify a virtual AUMA valve does not switch to a second controller MAC while connected.
Member profinet::sim::TEST (VirtualAumaValveTests, SlowValveMovesButAtReducedSpeed)
Verify SlowValve changes travel speed while keeping process data alive.
Member profinet::sim::TEST (VirtualAumaValveTests, JammedPreventsMovement)
Verify Jammed prevents movement and exposes the fault state.
Member profinet::sim::TEST (VirtualPhoenixPlcTests, BuildsGsdmlDerivedProcessImage)
Verify the Phoenix GSDML creates a usable controller signal catalogue and image.
Member profinet::sim::TEST (VirtualAumaScenarioTests, BadIopsStillEmitsCyclicFramesWithBadIops)
Verify BadIops keeps cyclic frames flowing while marking the provider BAD.
Member profinet::sim::TEST (VirtualAumaAlarmTests, RequestedScenariosExposeBothAlarmPaths)
Verify every requested AUMA scenario emits both RTA error and AlarmNotification traffic.
Member profinet::sim::TEST (VirtualAumaAlarmTests, ThrowingAlarmCallbackDoesNotKillSimulator)
Verify a throwing alarm callback cannot terminate the virtual device worker.
Member profinet::sim::TEST (VirtualAumaScenarioTests, NoInputSuppressesDeviceInputTraffic)
Verify NoInput suppresses input frames while the simulator remains able to receive output frames.
Member profinet::sim::TEST (VirtualAumaScenarioTests, InvalidInputClearsDataValidity)
Verify InvalidInput still emits an Ethernet frame but clears DATA_STATUS_VALID.
Member profinet::sim::TEST (VirtualAumaScenarioTests, DuplicateInputProducesDuplicateCycleCounters)
Verify DuplicateInput repeats a cycle counter so the production controller counts duplicates.
Member profinet::sim::TEST (VirtualAumaScenarioTests, OutOfOrderInputProducesOutOfOrderCycles)
Verify OutOfOrderInput increments the production controller's out-of-order counter.
Member profinet::sim::TEST (VirtualAumaScenarioTests, EveryScenarioHasStableName)
Verify every supported scenario has a stable, non-empty spelling.
Member profinet::sim::TEST (VirtualAumaValveTests, RejectsInvalidMotionConfiguration)
Verify an AUMA simulator rejects an impossible travel configuration.
Member profinet::sim::TEST (VirtualRealGsdmlIntegrationTests, ParsesRealAumaGsdmlAndBuildsSignalCatalog)
Verify the real AUMA GSDML produces the expected vendor/device identity and process-data signals.
Member profinet::sim::TEST (VirtualRealGsdmlIntegrationTests, ParsesRealPhoenixGsdmlAndBuildsSignalCatalog)
Verify the real Phoenix GSDML produces a non-empty process-data catalogue.
Member profinet::sim::TEST (VirtualRealGsdmlIntegrationTests, RunsRealAumaAndPhoenixThroughCyclicController)
Verify the real AUMA and Phoenix GSDMLs can be used together in the complete in-memory cyclic path.
Member profinet::TEST (RtaErrorsTests, UndefinedReasonIsUnknown)
An undefined RTA ErrorCode2 value is classified as unknown.
Member profinet::TEST (UtilTest, ByteSwapU32)
ByteSwap reverses the byte order of a 32-bit value.
Member profinet::TEST (UtilTest, ByteSwapU64)
ByteSwap reverses the byte order of a 64-bit value.
Member profinet::TEST (UtilTest, ByteSwapU8)
ByteSwap leaves an 8-bit value unchanged.
Member profinet::TEST (UtilTest, ByteAtU8)
ByteAt returns the only byte of an 8-bit value.
Member profinet::TEST (UtilTest, ByteAtU16)
ByteAt extracts each byte of a 16-bit value, starting at the least significant byte.
Member profinet::TEST (UtilTest, ByteAtU32)
ByteAt extracts each byte of a 32-bit value, starting at the least significant byte.
Member profinet::TEST (UtilTest, ByteAtU64)
ByteAt extracts each byte of a 64-bit value, starting at the least significant byte.
Member profinet::TEST (PNIOErrorTests, CreateFromCodesPnioPrmServer)
CreateFromCodes decodes a PNIO Parameter Server error.
Member profinet::TEST (UtilTest, ByteSwapU16)
ByteSwap reverses the byte order of a 16-bit value.
Member profinet::TEST (AlarmFrameIdTests, LowPriorityAlarmFrameId)
Verifies that the low-priority alarm frame ID is 0xFE01.
Member profinet::TEST (AlarmFrameIdTests, HighPriorityAlarmFrameId)
Verifies that the high-priority alarm frame ID is 0xFC01.
Member profinet::TEST (AlarmEndpointTests, AllFieldsCanBeConfigured)
Verifies that all AlarmEndpoint fields can be explicitly configured.
Member profinet::TEST (AlarmEndpointTests, DefaultTransportIsLayer2)
Verifies that the default alarm transport is Layer 2.
Member profinet::TEST (PNIOErrorTests, CreateFromCodesPnioRmpm)
CreateFromCodes decodes a PNIO RMPM error.
Member profinet::TEST (PNIOErrorTests, CreateFromCodesPnioCmUnknownErrorCode1)
CreateFromCodes uses the PNIO-CM default branch for an unsupported ErrorCode1.
Member profinet::TEST (PNIOErrorTests, CreateFromCodesPnioCmFaultyBlock)
CreateFromCodes decodes a PNIO-CM faulty block error.
Member profinet::TEST (PNIOErrorTests, CreateFromCodesPnioCmDevice)
CreateFromCodes decodes a PNIO-CM device error.
Member profinet::TEST (UdpSocketTests, MoveConstructionTransfersSocketOwnership)
Verifies that UdpSocket move construction transfers socket ownership.
Member profinet::TEST (PNIOErrorTests, CreateFromCodesPnioRwAccess)
CreateFromCodes decodes a PNIORW Access error.
Member profinet::TEST (PNIOErrorTests, CreateFromCodesPnioRwResource)
CreateFromCodes decodes a PNIORW Resource error.
Member profinet::TEST (PNIOErrorTests, CreateFromCodesPnioRwWriteLength)
CreateFromCodes decodes a PNIORW WriteLength error.
Member profinet::TEST (PNIOErrorTests, CreateFromCodesPnioRwInvalidIndex)
CreateFromCodes decodes a PNIORW InvalidIndex error.
Member profinet::TEST (PNIOErrorTests, CreateFromCodesPnioUnknownErrorCode1)
CreateFromCodes uses the PNIO default branch for an unsupported ErrorCode1.
Member profinet::TEST (UdpSocketTests, RecvFromReturnsPayloadAndSourceEndpoint)
Verifies that a bound UdpSocket receives the sender endpoint together with the received payload.
Member profinet::TEST (UdpSocketTests, SendToSendsToSuppliedEndpoint)
Verifies that SendTo() sends a datagram to the supplied endpoint and that a connected UDP peer can receive it.
Member profinet::TEST (UdpSocketTests, RecvFromReturnsEmptyDatagramOnTimeout)
Verifies that a UDP receive timeout returns an empty datagram.
Member profinet::TEST (PNIOErrorTests, CreateFromCodesPnioCmExpectedSubmodule)
CreateFromCodes decodes a PNIO-CM ExpectedSubmodule error.
Member profinet::TEST (UdpSocketTests, MoveAssignmentTransfersSocketOwnership)
Verifies that UdpSocket move assignment transfers socket ownership.
Member profinet::TEST (UtilTest, Mac2SS2MacRoundtrip)
mac2s / s2mac roundtrip
Member profinet::TEST (UtilTest, S2MacRejectsMalformedInput)
s2mac rejects malformed input
Member profinet::TEST (UtilTest, Ip2SS2IpRoundtrip)
ip2s / s2ip roundtrip
Member profinet::TEST (UtilTest, Ip2SRejectsMalformedInput)
ip2s rejects malformed input
Member profinet::TEST (UtilTest, ToHexEncodesBytes)
to_hex encodes bytes
Member profinet::TEST (UtilTest, DecodeBytesStripsTrailingNuls)
decode_bytes strips trailing NULs
Member profinet::TEST (UtilTest, MaxTimeoutReportsElapsed)
MaxTimeout reports elapsed correctly
Member profinet::TEST (ExceptionHierarchyTests, InvalidMacInheritsValidationError)
Verify InvalidMACError inherits from ValidationError.
Member profinet::TEST (ExceptionCatchingTests, CatchDcpVariants)
Verify catching DCP error variants with base DCPError class.
Member profinet::TEST (ExceptionCatchingTests, CatchAllProfinetErrors)
Verify catching all PROFINET errors with base ProfinetError class.
Member profinet::TEST (RPCFaultErrorTests, Message)
Verify fault error message retrieved via what().
Member profinet::TEST (RPCFaultErrorTests, FaultCodeCustom)
Verify custom fault code initialization.
Member profinet::TEST (RPCFaultErrorTests, FaultCodeDefault)
Verify default fault code is 0.
Member profinet::TEST (ExceptionHierarchyTests, PermissionDeniedInheritsSocketError)
Verify PermissionDeniedError inherits from SocketError.
Member profinet::TEST (ExceptionHierarchyTests, SocketErrorInheritsProfinetError)
Verify SocketError inherits from ProfinetError.
Member profinet::TEST (ExceptionHierarchyTests, InvalidIpInheritsValidationError)
Verify InvalidIPError inherits from ValidationError.
Member profinet::TEST (ExceptionCatchingTests, CatchRpcVariants)
Verify catching RPC error variants with base RPCError class.
Member profinet::TEST (ExceptionHierarchyTests, ValidationErrorInheritsProfinetError)
Verify ValidationError inherits from ProfinetError.
Member profinet::TEST (ExceptionHierarchyTests, RpcConnectionInheritsRpcError)
Verify RPCConnectionError inherits from RPCError.
Member profinet::TEST (ExceptionHierarchyTests, RpcFaultInheritsRpcError)
Verify RPCFaultError inherits from RPCError.
Member profinet::TEST (ExceptionHierarchyTests, RpcTimeoutInheritsRpcError)
Verify RPCTimeoutError inherits from RPCError.
Member profinet::TEST (ExceptionHierarchyTests, RpcErrorInheritsProfinetError)
Verify RPCError inherits from ProfinetError.
Member profinet::TEST (ExceptionHierarchyTests, DcpDeviceNotFoundInheritsDcpError)
Verify DCPDeviceNotFoundError inherits from DCPError.
Member profinet::TEST (ExceptionHierarchyTests, DcpTimeoutInheritsDcpError)
Verify DCPTimeoutError inherits from DCPError.
Member profinet::TEST (ExceptionHierarchyTests, DcpErrorInheritsProfinetError)
Verify DCPError inherits from ProfinetError.
Member profinet::TEST (PNIOErrorTests, FromArgsStatusUnknownError)
Verify creating PNIOError from unknown ArgsStatus value.
Member profinet::TEST (PNIOErrorTests, CreateFromCodesPnioCmAlarmCrResponse)
CreateFromCodes decodes a PNIO-CM AlarmCR response error.
Member profinet::TEST (PNIOErrorTests, CreateFromCodesPnioCmAlarmCr)
CreateFromCodes decodes a PNIO-CM AlarmCR error.
Member profinet::TEST (PNIOErrorTests, CreateFromCodesPnioCmIocrResponse)
CreateFromCodes decodes a PNIO-CM IOCR response error.
Member profinet::TEST (PNIOErrorTests, CreateFromCodesPnioCmIocr)
CreateFromCodes decodes a PNIO-CM IOCR error.
Member profinet::TEST (PNIOErrorTests, CreateFromCodesPnioCmArResponse)
CreateFromCodes decodes a PNIO-CM AR response error.
Member profinet::TEST (PNIOErrorTests, CreateFromCodesPnioCmAr)
CreateFromCodes decodes a PNIO-CM AR error.
Member profinet::TEST (PNIOErrorTests, ErrorConstants)
Verify error code constants are defined properly.
Member profinet::TEST (PNIOErrorTests, StrFormat)
Verify string representation contains the human-readable message.
Member profinet::TEST (PNIOErrorTests, IsCmErrorReturnsFalseForPnioRw)
IsCmError returns false for a PNIORW error.
Member profinet::TEST (PNIOErrorTests, FromArgsStatusRmpmError)
Verify creating PNIOError for RMPM connect error (unknown blocks).
Member profinet::TEST (PNIOErrorTests, FromArgsStatusInvalidApi)
Verify creating PNIOError from ArgsStatus for invalid API.
Member profinet::TEST (PNIOErrorTests, FromArgsStatusInvalidIndex)
Verify creating PNIOError from ArgsStatus for invalid index.
Member profinet::TEST (PNIOErrorTests, FromArgsStatusInvalidSubslot)
Verify creating PNIOError from ArgsStatus for invalid subslot.
Member profinet::TEST (PNIOErrorTests, FromArgsStatusInvalidSlot)
Verify creating PNIOError from ArgsStatus for invalid slot.
Member profinet::TEST (PNIOErrorTests, CustomValues)
Verify custom error code values set upon construction.
Member profinet::TEST (PNIOErrorTests, DefaultValues)
Verify default error code values when constructed directly.
Member profinet::TEST (PNIOErrorTests, PnioErrorInheritsRpcError)
Verify PNIOError inherits from RPCError.
Member profinet::TEST (PNIOErrorTests, CreateFromCodesPnioRwUnknownErrorCode1)
CreateFromCodes uses the PNIORW default branch for an unsupported ErrorCode1.
Member profinet::TEST (PNIOErrorTests, IsCmErrorReturnsTrueForPnioCm)
IsCmError returns true for a PNIO-CM error.
Member profinet::TEST (PNIOErrorTests, IsCmErrorReturnsFalseForPnio)
IsCmError returns false for a general PNIO error.
Member profinet::TEST (PNIOErrorTests, IsCmErrorReturnsFalseForUnknownDecode)
IsCmError returns false for an unknown ErrorDecode value.
Member profinet::TEST (PNIOErrorTests, BlockNameReturnsArBlock)
BlockName returns the PNIO-CM block name for an AR error.
Member profinet::TEST (PNIOErrorTests, BlockNameReturnsIocrBlock)
BlockName returns the PNIO-CM block name for an IOCR error.
Member profinet::TEST (PNIOErrorTests, BlockNameReturnsArResponseBlock)
BlockName returns the PNIO-CM response block name.
Member profinet::TEST (PNIOErrorTests, BlockNameReturnsUnknownForUnknownCmErrorCode1)
BlockName returns an unknown name for an unsupported PNIO-CM ErrorCode1.
Member profinet::TEST (PNIOErrorTests, BlockNameReturnsEmptyForPnioRwError)
BlockName returns an empty string for a non-PNIO-CM error.
Member profinet::TEST (PNIOErrorTests, BlockNameReturnsEmptyForPnioError)
BlockName returns an empty string for a general PNIO error.
Member profinet::TEST (PNIOErrorTests, BlockNameReturnsEmptyForUnknownDecode)
BlockName returns an empty string for an unknown error decode.
Member profinet::TEST (PNIOErrorTests, DirectConstructionPreservesMessageAndCodes)
PNIOError direct construction preserves the supplied message and raw codes.
Member profinet::TEST (PNIOErrorTests, DirectConstructionIsCmError)
PNIOError direct construction reports PNIO-CM status through IsCmError.
Member profinet::TEST (PNIOErrorTests, DirectConstructionIsNotCmError)
PNIOError direct construction reports a non-PNIO-CM status through IsCmError.
Member profinet::TEST (PNIOErrorTests, CreateFromCodesPnioRwApplication)
CreateFromCodes decodes a PNIORW Application error.
Member profinet::TEST (PNIOErrorTests, FromArgsStatusDecodesPnioCmError)
FromArgsStatus preserves a meaningful PNIO-CM error after byte swapping.
Member profinet::TEST (PNIOErrorTests, FromArgsStatusReversesByteOrder)
FromArgsStatus reverses the little-endian ArgsStatus representation into PNIO error bytes.
Member profinet::TEST (PNIOErrorTests, FromBytesUsesExpectedByteOrder)
FromBytes interprets the four bytes in ErrorCode/ErrorDecode/ErrorCode1/ErrorCode2 order.
Member profinet::TEST (PNIOErrorTests, FromBytesPreservesAllRawErrorBytes)
FromBytes preserves all four raw PNIO error bytes.
Member profinet::TEST (PNIOErrorTests, CreateFromCodesUnknownErrorDecode)
CreateFromCodes uses the default branch for an unknown ErrorDecode.
Member profinet::TEST_F (AlarmListenerTests, ControllerMacDefaultsToZero)
Verifies that the default controller MAC address consists of zeros.
Member profinet::TEST_F (AlarmListenerRtaTest, InvalidAlarmPayloadIsNotAcknowledged)
Verify that an invalid AlarmNotification does not generate an acknowledgement.
Member profinet::TEST_F (AlarmListenerRtaIntegrationTest, TwoAlarmNotificationsAreDispatched)
Verify that two independently received alarms are both dispatched.
Member profinet::TEST_F (AlarmListenerCallbackTest, CallbackExceptionDoesNotPreventOtherCallbacks)
Verify that an exception in one callback does not prevent later callbacks.
Member profinet::TEST_F (AlarmListenerRtaTest, WrongRtaVersionIsIgnored)
Verify that an RTA frame with the wrong version is rejected.
Member profinet::TEST_F (AlarmListenerCallbackTest, EmptyCallbackIsIgnored)
Verify that an empty callback is ignored safely.
Member profinet::TEST_F (AlarmListenerCallbackTest, MultipleCallbacksAreInvoked)
Verify that multiple registered callbacks are all invoked.
Member profinet::TEST_F (AlarmListenerCallbackTest, ReceivedAlarmInvokesCallback)
Verify that every received valid alarm is dispatched to callbacks.
Member profinet::TEST_F (AlarmListenerRtaTest, AlarmAckEchoesReceivedSequenceNumber)
Verify that the AlarmAck echoes the received sequence number.
Member profinet::TEST_F (AlarmListenerRtaTest, AlarmAckUsesDeviceEndpointAsDestination)
Verify that the AlarmAck uses the device alarm endpoint as destination.
Member profinet::TEST_F (AlarmListenerRtaTest, AlarmAckUsesDataPdu)
Verify that the transmitted AlarmAck contains a DATA PDU.
Member profinet::TEST_F (AlarmListenerRtaTest, AlarmAckIsPriorityVlanTagged)
Verify that the transmitted AlarmAck is priority VLAN tagged.
Member profinet::TEST_F (AlarmListenerRtaTest, ShortEthernetFrameIsIgnored)
Verify that a short Ethernet frame is ignored.
Member profinet::TEST_F (AlarmListenerRtaTest, WrongDestinationReferenceIsIgnored)
Verify that an alarm for another controller endpoint is ignored.
Member profinet::TEST_F (AlarmListenerRtaTest, WrongSourceMacIsIgnored)
Verify that an alarm from an unexpected device is ignored.
Member profinet::TEST_F (AlarmListenerRtaTest, NonProfinetEtherTypeIsIgnored)
Verify that a non-PROFINET EtherType is ignored.
Member profinet::TEST_F (AlarmListenerRtaTest, HighPriorityAlarmUsesHighFrameId)
Verify that high-priority alarms use FrameID 0xFC01.
Member profinet::TEST_F (AlarmListenerRtaTest, VlanTaggedAlarmFrameIsProcessed)
Verify that a VLAN-tagged alarm frame is processed.
Member profinet::TEST_F (AlarmListenerRtaTest, UntaggedAlarmFrameIsProcessed)
Verify that an untagged alarm frame is parsed and acknowledged.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioCmArErrorNoMemory)
GetPnioCmErrorMessage decodes the no-memory error.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioCmArErrorNoAlarmResources)
GetPnioCmErrorMessage decodes the no-alarm-resources error.
Member profinet::TEST_F (AlarmListenerTests, AcceptsCustomControllerMac)
Verifies that a custom controller MAC address is accepted.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioCmArErrorArUuidConflict)
GetPnioCmErrorMessage decodes the AR-UUID-conflict error.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioCmArErrorInvalidSessionKey)
GetPnioCmErrorMessage decodes the invalid-session-key error.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioRwErrorResource)
DecodePnioRWError decodes a Resource error.
Member profinet::TEST_F (AlarmNotificationTest, ReservedBit15IsNotArDiagnosis)
Verify that reserved bit 15 does not indicate AR diagnosis.
Member profinet::TEST_F (AlarmNotificationTest, ArDiagnosisIsBit14)
Verify that AlarmSpecifier bit 14 represents AR diagnosis state.
Member profinet::TEST_F (AlarmNotificationTest, EthernetPaddingIsNotParsedAsItems)
Verify that Ethernet padding is not parsed as alarm items.
Member profinet::TEST_F (AlarmNotificationTest, ChannelDiagnosisItemIsDecoded)
Verify that a channel diagnosis alarm item is decoded correctly.
Member profinet::TEST_F (AlarmNotificationTest, ItemLessAlarmIsAccepted)
Verify that an item-less AlarmNotification has a 20-byte body.
Member profinet::TEST_F (AlarmListenerUdpTest, StopBeforeStartIsSafe)
Verifies that Stop() can be called before Start().
Member profinet::TEST_F (AlarmListenerUdpTest, StartWhileRunningDoesNothing)
Verifies that Start() is idempotent while the listener is already running.
Member profinet::TEST_F (AlarmListenerUdpTest, IgnoresTooShortUdpPayload)
Verifies that a UDP packet shorter than the minimum AlarmNotification size is ignored.
Member profinet::TEST_F (AlarmListenerUdpTest, ReceivesAlarmAndSendsAckToSource)
Verifies that a UDP AlarmNotification is received and acknowledged to the exact datagram source endpoint.
Member profinet::TEST_F (AlarmListenerRtaTest, DataWithoutTackIsIgnored)
Verify that DATA without TACK is not processed as a notification.
Member profinet::TEST_F (RtaErrorTests, NonRtaStatusIsNotProtocolError)
Verify that a non-RTA PNIO status is not classified as an RTA protocol error.
Member profinet::TEST_F (RtaErrorTests, SequenceErrorIsNotAbort)
Verify that a sequence-number RTA protocol error is not classified as an abort.
Member profinet::TEST_F (RtaErrorTests, RejectsTruncatedStatus)
Verify that a truncated four-byte PNIO status is rejected.
Member profinet::TEST_F (RtaErrorTests, RejectsWrongVariablePartLength)
Verify that an RTA ERR-PDU with the wrong variable length is rejected.
Member profinet::TEST_F (RtaErrorTests, RejectsNonErrRtaPdu)
Verify that a non-ERR RTA PDU is rejected.
Member profinet::TEST_F (RtaErrorTests, IgnoresEthernetPaddingAfterStatus)
Verify that Ethernet padding after the four-byte status is ignored.
Member profinet::TEST_F (RtaErrorTests, ParsesAumaReleaseIndReceivedError)
Verify that the AUMA CF81FD0F RTA error is decoded correctly.
Member profinet::TEST_F (AlarmListenerRtaTest, FirstAlarmAckUsesInitialSequenceNumber)
Verify that the first output sequence number starts at 0xFFFF.
Member profinet::TEST_F (AlarmListenerRtaTest, DISABLED_OutOfSequenceNotificationIsRejected)
Verify that an out-of-sequence DATA notification is not delivered.
Member profinet::TEST_F (AlarmListenerRtaIntegrationTest, DISABLED_DuplicateNotificationIsNotDispatchedTwice)
Verify that a duplicate DATA notification is not delivered twice.
Member profinet::TEST_F (PNIOErrorDirectTests, DirectCreateFromCodesPnioCmAlarmCr)
Direct call to CreateFromCodes decodes a PNIO-CM AlarmCR error.
Member profinet::TEST_F (PNIOErrorDirectTests, DirectCreateFromCodesPnioRwResource)
Direct call to CreateFromCodes decodes a PNIORW Resource error.
Member profinet::TEST_F (PNIOErrorDirectTests, DirectCreateFromCodesPnioRwWriteLength)
Direct call to CreateFromCodes decodes a PNIORW WriteLength error.
Member profinet::TEST_F (PNIOErrorDirectTests, DirectCreateFromCodesPnioRwInvalidIndex)
Direct call to CreateFromCodes decodes a PNIORW InvalidIndex error.
Member profinet::TEST_F (PNIOErrorDirectTests, DirectCreateFromCodesPnioUnknownErrorCode1)
Direct call to CreateFromCodes uses the PNIO fallback for an unknown ErrorCode1.
Member profinet::TEST_F (PNIOErrorDirectTests, DirectCreateFromCodesPnioPrmServer)
Direct call to CreateFromCodes decodes a PNIO Parameter Server error.
Member profinet::TEST_F (PNIOErrorDirectTests, DirectCreateFromCodesPnioRmpm)
Direct call to CreateFromCodes decodes a PNIO RMPM error.
Member profinet::TEST_F (PNIOErrorDirectTests, DirectCreateFromCodesPnioCmUnknownErrorCode1)
Direct call to CreateFromCodes uses the PNIO-CM fallback for an unknown ErrorCode1.
Member profinet::TEST_F (PNIOErrorDirectTests, DirectCreateFromCodesPnioCmFaultyBlock)
Direct call to CreateFromCodes decodes a PNIO-CM faulty block error.
Member profinet::TEST_F (PNIOErrorDirectTests, DirectCreateFromCodesPnioCmDevice)
Direct call to CreateFromCodes decodes a PNIO-CM device error.
Member profinet::TEST_F (PNIOErrorDirectTests, DirectCreateFromCodesPnioCmExpectedSubmodule)
Direct call to CreateFromCodes decodes a PNIO-CM ExpectedSubmodule error.
Member profinet::TEST_F (PNIOErrorDirectTests, DirectCreateFromCodesPnioCmAlarmCrResponse)
Direct call to CreateFromCodes decodes a PNIO-CM AlarmCR response error.
Member profinet::TEST_F (PNIOErrorDirectTests, DirectCreateFromCodesPnioRwAccess)
Direct call to CreateFromCodes decodes a PNIORW Access error.
Member profinet::TEST_F (PNIOErrorDirectTests, DirectCreateFromCodesPnioCmIocrResponse)
Direct call to CreateFromCodes decodes a PNIO-CM IOCR response error.
Member profinet::TEST_F (PNIOErrorDirectTests, DirectCreateFromCodesPnioCmIocr)
Direct call to CreateFromCodes decodes a PNIO-CM IOCR error.
Member profinet::TEST_F (PNIOErrorDirectTests, DirectCreateFromCodesPnioCmArResponse)
Direct call to CreateFromCodes decodes a PNIO-CM AR response error.
Member profinet::TEST_F (PNIOErrorDirectTests, DirectCreateFromCodesPnioCmAr)
Direct call to CreateFromCodes decodes a PNIO-CM AR error.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioRwErrorApplication)
DecodePnioRWError decodes an Application error.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioRwErrorUnknownCode1)
DecodePnioRWError returns an unknown message for an unsupported PNIO RW error code.
Member profinet::TEST_F (SkipVlanTagsTest, ShortFrameReturnsEthernetHeaderLength)
Verify that a truncated Ethernet frame returns the safe offset.
Member profinet::TEST_F (SkipVlanTagsTest, DoubleTaggedQinQFrameReturnsOffset20)
Verify that a QinQ frame with two VLAN tags returns offset 20.
Member profinet::TEST_F (SkipVlanTagsTest, Single8021QTagReturnsOffset16)
Verify that one 802.1Q VLAN tag increases the EtherType offset to 16.
Member profinet::TEST_F (SkipVlanTagsTest, UntaggedFrameReturnsOffset12)
Verify that an untagged Ethernet frame has an EtherType offset of 12.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioCmArErrorNoProviderResources)
GetPnioCmErrorMessage decodes the no-provider-resources error.
Member profinet::TEST_F (AlarmListenerTests, IsRunningInitiallyFalse)
Tests the initial running state of AlarmListener.
Member profinet::TEST_F (AlarmListenerTests, RemoveEmptyCallbackDoesNothing)
Tests removal of an empty callback.
Member profinet::TEST_F (AlarmListenerTests, RemoveNonexistentCallbackDoesNotThrow)
Tests removal of a callback that was never registered.
Member profinet::TEST_F (AlarmListenerTests, RemoveCallback)
Tests removal of a previously registered callback.
Member profinet::TEST_F (AlarmListenerTests, AddEmptyCallbackDoesNothing)
Tests that an empty callback is ignored by AddCallback.
Member profinet::TEST_F (AlarmListenerTests, AddCallbackRegistersCallback)
Verifies that a callback can be registered.
Member profinet::TEST_F (AlarmListenerTests, AddLambaCallbackRegistersCallback)
Verifies that a callback can be registered.
Member profinet::TEST_F (AlarmListenerTests, InitializesWithoutCallbacks)
Verifies that a newly constructed AlarmListener has no registered callbacks.
Member profinet::TEST_F (AlarmListenerTests, InitializesWithEndpoint)
Verifies that AlarmListener initializes with the supplied endpoint and is not running.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioCmArErrorNoConsumerResources)
GetPnioCmErrorMessage decodes the no-consumer-resources error.
Member profinet::TEST_F (AlarmListenerTests, IsRunningReflectsState)
Verifies that the listener reports a running state after Start().
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioCmArErrorNoArResources)
GetPnioCmErrorMessage decodes the no-AR-resources error.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioCmErrorArActiveResponse)
DecodePnioCmError decodes an AR active response error.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioCmErrorArActive)
DecodePnioCmError decodes an AR active error.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioCmErrorArResponse)
DecodePnioCmError decodes an AR response error.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioCmErrorAr)
DecodePnioCmError decodes an AR error.
Member profinet::TEST_F (PNIOErrorDirectTests, DirectCreateFromCodesPnioPreservesRawCodes)
Direct call to CreateFromCodes preserves all raw error-code fields for PNIO.
Member profinet::TEST_F (PNIOErrorDirectTests, DirectCreateFromCodesPnioRwPreservesRawCodes)
Direct call to CreateFromCodes preserves all raw error-code fields for PNIORW.
Member profinet::TEST_F (PNIOErrorDirectTests, DirectCreateFromCodesPnioCmPreservesRawCodes)
Direct call to CreateFromCodes preserves all raw error-code fields for PNIO-CM.
Member profinet::TEST_F (PNIOErrorDirectTests, DirectCreateFromCodesPnioRwUnknownErrorCode1)
Direct call to CreateFromCodes uses the PNIORW fallback for an unknown ErrorCode1.
Member profinet::TEST_F (PNIOErrorDirectTests, DirectCreateFromCodesPnioRwApplication)
Direct call to CreateFromCodes decodes a PNIORW Application error.
Member profinet::TEST_F (IndicesTest, CriticalIndicesReturnsExpectedEntries)
CriticalIndices contains all critical indices in the expected order.
Member profinet::TEST_F (IndicesTest, GetModuleStateNameFallsBackForUnknownState)
GetModuleStateName returns a formatted fallback for an unsupported state.
Member profinet::TEST_F (IndicesTest, GetSubmoduleStateNameResolvesEveryKnownState)
GetSubmoduleStateName resolves every supported submodule state.
Member profinet::TEST_F (IndicesTest, GetSubmoduleStateNameFallsBackForUnknownState)
GetSubmoduleStateName returns a formatted fallback for an unsupported state.
Member profinet::TEST_F (IndicesTest, GetPeModeNameResolvesFixedModes)
GetPeModeName resolves the fixed PROFIenergy modes.
Member profinet::TEST_F (IndicesTest, GetPeModeNameResolvesEnergySavingRange)
GetPeModeName resolves the complete PROFIenergy energy-saving mode range.
Member profinet::TEST_F (IndicesTest, GetPeModeNameReturnsReservedForValueBetweenEnergySavingAndOperate)
GetPeModeName returns the reserved fallback for values between the energy-saving range and operate mode.
Member profinet::TEST_F (IndicesTest, GetPeModeNameReturnsReservedForValueBetweenOperateAndSleepMode)
GetPeModeName returns the reserved fallback for values between operate and sleep mode.
Member profinet::TEST_F (IndicesTest, GetPeModeNameReturnsReservedForValueBetweenSleepModeAndReadyToOperate)
GetPeModeName returns the reserved fallback for values between sleep mode and ready-to-operate.
Member profinet::TEST_F (IndicesTest, DiagnosisIndicesReturnsSubslotTable)
DiagnosisIndices returns the expected subslot diagnosis table.
Member profinet::TEST_F (IndicesTest, DiagnosisIndicesReturnsSlotTable)
DiagnosisIndices returns the expected slot diagnosis table.
Member profinet::TEST_F (IndicesTest, DiagnosisIndicesReturnsArTable)
DiagnosisIndices returns the expected application-relation diagnosis table.
Member profinet::TEST_F (IndicesTest, DiagnosisIndicesReturnsApiTable)
DiagnosisIndices returns the expected API diagnosis table.
Member profinet::TEST_F (IndicesTest, DiagnosisIndicesReturnsDeviceTable)
DiagnosisIndices returns the expected device diagnosis table.
Member profinet::TEST_F (IndicesTest, DiagnosisIndicesReturnsEmptyTableForUnknownScopes)
DiagnosisIndices returns an empty table for every unsupported scope.
Member profinet::TEST_F (IndicesTest, GetModuleStateNameResolvesEveryKnownState)
GetModuleStateName resolves every supported module state.
Member profinet::TEST_F (IndicesTest, ImIndicesReturnsAllImEntries)
ImIndices contains all I&M indices from I&M0 through I&M15.
Member profinet::TEST_F (IndicesTest, PortIndicesReturnsExpectedEntries)
PortIndices contains all currently defined port indices.
Member profinet::TEST_F (IndicesTest, InterfaceIndicesReturnsExpectedEntries)
InterfaceIndices contains all currently defined interface indices.
Member profinet::TEST_F (IndicesTest, DeviceIndicesReturnsExpectedEntries)
DeviceIndices contains all currently defined device indices.
Member profinet::TEST_F (IndicesTest, AllStandardIndicesContainsAllStandardCategories)
AllStandardIndices contains entries from every standard index category.
Member profinet::TEST_F (IndicesTest, GetIndexNameClassifiesUserSpecificIndices)
GetIndexName classifies user-specific indices.
Member profinet::TEST_F (IndicesTest, GetIndexNameClassifiesUnregisteredImIndices)
GetIndexName classifies I&M indices that are not explicitly registered.
Member profinet::TEST_F (IndicesTest, GetIndexNameClassifiesUnregisteredSubslotIndices)
GetIndexName classifies unregistered subslot indices.
Member profinet::TEST_F (IndicesTest, GetIndexNameClassifiesUnregisteredSlotIndices)
GetIndexName classifies unregistered slot indices.
Member profinet::TEST_F (IndicesTest, GetIndexNameClassifiesUnregisteredArIndices)
GetIndexName classifies unregistered application-relation indices.
Member profinet::TEST_F (IndicesTest, GetIndexNameClassifiesUnregisteredApiIndices)
GetIndexName classifies unregistered API indices.
Member profinet::TEST_F (IndicesTest, GetIndexNameClassifiesUnregisteredDeviceIndices)
GetIndexName classifies unregistered device indices.
Member profinet::TEST_F (IndicesTest, GetIndexNameReturnsUnknownForUnclassifiedIndices)
GetIndexName returns the unknown fallback for indices outside all defined ranges.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioCmErrorIocr)
DecodePnioCmError decodes an IOCR error.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioRwErrorAccess)
DecodePnioRWError decodes an Access error.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioRwErrorWriteLength)
DecodePnioRWError decodes a Write Length error.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioRwErrorInvalidIndex)
DecodePnioRWError decodes an Invalid Index error.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioErrorUnknownCode1)
DecodePnioError returns an unknown message for an unsupported PNIO error code.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioErrorPrmServer)
DecodePnioError decodes a Parameter Server error.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioErrorRmpm)
DecodePnioError decodes an RMPM error.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioCmErrorUnknownCode1)
DecodePnioCmError returns an unknown message for an unsupported CM error code.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioCmErrorFaultyBlock)
DecodePnioCmError decodes a faulty block error.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioCmErrorDevice)
DecodePnioCmError decodes a CM device error.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioCmErrorExpectedSubmodule)
DecodePnioCmError decodes an Expected Submodule error.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioCmErrorAlarmCrResponse)
DecodePnioCmError decodes an Alarm CR response error.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioCmErrorAlarmCr)
DecodePnioCmError decodes an Alarm CR error.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioCmErrorIocrResponse)
DecodePnioCmError decodes an IOCR response error.
Member profinet::TEST_F (IndicesTest, GetIndexNameResolvesAllStandardCategories)
GetIndexName resolves every explicitly registered standard index category.
Member profinet::TEST_F (PNIOErrorDirectTests, DecodePnioCmArErrorUnknownCode2)
GetPnioCmErrorMessage returns an unknown message for an unsupported AR error code.
Member profinet::TEST_F (IndicesTest, GetBlockTypeNameResolvesEveryKnownBlockType)
GetBlockTypeName resolves every explicitly supported block type.
Member profinet::TEST_F (IndicesTest, GetBlockTypeNameFallsBackForUnknownTypes)
GetBlockTypeName returns the formatted fallback for an unknown block type.
Member profinet::TEST_F (IndicesTest, GetAlarmTypeNameResolvesEveryKnownAlarmType)
GetAlarmTypeName resolves every explicitly supported alarm type.
Member profinet::TEST_F (IndicesTest, GetAlarmTypeNameFallsBackForUnknownType)
GetAlarmTypeName returns Unknown for an unsupported alarm type.
Member profinet::TEST_F (IndicesTest, GetIocrTypeNameResolvesEveryKnownType)
GetIocrTypeName resolves every explicitly supported IOCR type.
Member profinet::TEST_F (IndicesTest, GetIocrTypeNameFallsBackForUnknownType)
GetIocrTypeName returns a formatted fallback for an unsupported IOCR type.
Member profinet::TEST_F (IndicesTest, GetIocrRtClassNameResolvesUdp)
GetIocrRtClassName resolves the supported UDP RT class.
Member profinet::TEST_F (IndicesTest, GetIocrRtClassNameFallsBackForUnknownType)
GetIocrRtClassName returns a formatted fallback for an unsupported RT class.
Member profinet::TEST_F (IndicesTest, GetUsiNameResolvesEveryKnownUsi)
GetUsiName resolves every explicitly supported USI.
Member profinet::TEST_F (IndicesTest, GetUsiNameClassifiesManufacturerSpecificValues)
GetUsiName classifies manufacturer-specific values in the low range.
Member profinet::TEST_F (IndicesTest, GetUsiNameClassifiesProfileSpecificValues)
GetUsiName classifies profile-specific values in the profile range.
Member profinet::TEST_F (IndicesTest, GetUsiNameClassifiesReservedValues)
GetUsiName classifies values outside manufacturer and profile ranges as reserved.
Member profinet::TEST_F (IndicesTest, GetScopeReturnsUnknownForUnclassifiedRanges)
GetScope returns unknown for ranges not assigned to a supported scope.
Member profinet::TEST_F (IndicesTest, GetScopeClassifiesAllSupportedScopes)
GetScope classifies every supported addressing scope.
Member profinet::TEST_P (RtaErrorsTests, EveryDefinedReasonIsDecoded)
Verify that every defined RTA ErrorCode2 decodes correctly.
Member profinet::wire::TEST (WireWriterTest, PutBigEndianU32)
Verifies that PutBigEndian serializes a 32-bit value most-significant byte first.
Member profinet::wire::TEST (WireReaderTest, ReaderFixedArray)
Reader returns a fixed-size byte array and advances its position.
Member profinet::wire::TEST (WireWriterTest, PutBigEndianU64)
Verifies that PutBigEndian serializes a 64-bit value most-significant byte first.
Member profinet::wire::TEST (WireWriterTest, PutBigEndianZero)
Verifies that PutBigEndian serializes zero as all zero bytes.
Member profinet::wire::TEST (WireWriterTest, PutBigEndianMaximumU32)
Verifies that PutBigEndian serializes the maximum 32-bit value.
Member profinet::wire::TEST (WireWriterTest, PutBigEndianAppends)
Verifies that PutBigEndian appends to existing data without modifying the prefix.
Member profinet::wire::TEST (WireWriterTest, PutLittleEndianU8)
Verifies that PutLittleEndian appends an 8-bit value unchanged.
Member profinet::wire::TEST (WireWriterTest, PutLittleEndianU16)
Verifies that PutLittleEndian serializes a 16-bit value least-significant byte first.
Member profinet::wire::TEST (WireWriterTest, PutLittleEndianU32)
Verifies that PutLittleEndian serializes a 32-bit value least-significant byte first.
Member profinet::wire::TEST (WireWriterTest, PutLittleEndianU64)
Verifies that PutLittleEndian serializes a 64-bit value least-significant byte first.
Member profinet::wire::TEST (WireWriterTest, PutLittleEndianZero)
Verifies that PutLittleEndian serializes zero as all zero bytes.
Member profinet::wire::TEST (WireWriterTest, PutLittleEndianMaximumU32)
Verifies that PutLittleEndian serializes the maximum 32-bit value.
Member profinet::wire::TEST (WireWriterTest, PutLittleEndianAppends)
Verifies that PutLittleEndian appends to existing data without modifying the prefix.
Member profinet::wire::TEST (WireWriterTest, PutLittleEndianPointerU16)
Verifies that the pointer overload of PutLittleEndian writes a 16-bit value into an existing buffer.
Member profinet::wire::TEST (WireWriterTest, PutLittleEndianPointerU32)
Verifies that the pointer overload of PutLittleEndian writes a 32-bit value without modifying bytes outside the destination range.
Member profinet::wire::TEST (WireReaderTest, ReaderReadBytesZeroLength)
Reader supports a zero-length ReadBytes call without moving the cursor.
Member profinet::wire::TEST (WireReaderTest, ReaderRejectsReadBytesPastEnd)
Reader rejects a byte-range read when the requested range exceeds the remaining data.
Member profinet::wire::TEST (WireReaderTest, ReadLittleEndianZero)
Verifies direct little-endian decoding of zero.
Member profinet::wire::TEST (WireReaderTest, ReaderReadsConsecutiveLittleEndianValues)
Reader supports consecutive little-endian reads without requiring explicit repositioning.
Member profinet::wire::TEST (WireReaderTest, ReadLittleEndianMaximumU32)
Verifies direct little-endian decoding of the maximum 32-bit value.
Member profinet::wire::TEST (WireReaderTest, ReaderReadsU8)
Reader reads a single byte and advances its position.
Member profinet::wire::TEST (WireReaderTest, ReaderEmptyVector)
Reader constructed from an empty vector starts with no remaining bytes.
Member profinet::wire::TEST (WireReaderTest, ReaderRejectsU8PastEnd)
Reader rejects an 8-bit read when no bytes remain.
Member profinet::wire::TEST (WireReaderTest, ReaderReadsBigEndianU16)
Reader decodes a 16-bit value in big-endian order and advances exactly two bytes.
Member profinet::wire::TEST (WireReaderTest, ReaderReadsBigEndianU32)
Reader decodes a 32-bit value in big-endian order and advances exactly four bytes.
Member profinet::wire::TEST (WireReaderTest, ReaderReadsLittleEndianU16)
Reader decodes a 16-bit value in little-endian order and advances exactly two bytes.
Member profinet::wire::TEST (WireReaderTest, ReaderReadsLittleEndianU32)
Reader decodes a 32-bit value in little-endian order and advances exactly four bytes.
Member profinet::wire::TEST (WireWriterTest, PutBigEndianU16)
Verifies that PutBigEndian serializes a 16-bit value most-significant byte first.
Member profinet::wire::TEST (WireReaderTest, ReaderMixesEndianReads)
Reader supports mixing big-endian and little-endian reads while maintaining one cursor.
Member profinet::wire::TEST (WireReaderTest, ReaderRejectsLittleEndianU16PastEnd)
Reader rejects a 16-bit little-endian read when fewer than two bytes remain and leaves its position unchanged.
Member profinet::wire::TEST (WireReaderTest, ReaderRejectsLittleEndianU32PastEnd)
Reader rejects a 32-bit little-endian read when fewer than four bytes remain and leaves its position unchanged.
Member profinet::wire::TEST (WireReaderTest, ReaderRejectsU16PastEnd)
Reader rejects a 16-bit big-endian read when fewer than two bytes remain and leaves its position unchanged.
Member profinet::wire::TEST (WireReaderTest, ReaderRejectsU32PastEnd)
Reader rejects a 32-bit big-endian read when fewer than four bytes remain and leaves its position unchanged.
Member profinet::wire::TEST (WireReaderTest, ReaderReadBytes)
Reader returns the requested number of bytes and advances its position.
Member profinet::wire::TEST (WireWriterTest, PutBigEndianU8)
Verifies that PutBigEndian appends an 8-bit value unchanged.
Member profinet::wire::TEST (WireWriterTest, PutFixedVector)
Verifies that PutFixed copies a non-empty byte vector.
Member profinet::wire::TEST (WireReaderTest, ReadBigEndianZero)
Verifies direct big-endian decoding of zero.
Member profinet::wire::TEST (WireReaderTest, ReadBigEndianU64)
Verifies direct big-endian decoding of a 64-bit value.
Member profinet::wire::TEST (WireReaderTest, ReadBigEndianU32)
Verifies direct big-endian decoding of a 32-bit value.
Member profinet::wire::TEST (WireReaderTest, ReadBigEndianU16)
Verifies direct big-endian decoding of a 16-bit value.
Member profinet::wire::TEST (WireReaderTest, ReadBigEndianU8)
Verifies direct big-endian decoding of an 8-bit value.
Member profinet::wire::TEST (WireWriterTest, PutFixedEmptyString)
Verifies that PutFixed supports an empty string without adding data.
Member profinet::wire::TEST (WireWriterTest, PutFixedString)
Verifies that PutFixed copies string bytes without adding a terminating null byte.
Member profinet::wire::TEST (WireWriterTest, PutFixedEmptyVector)
Verifies that PutFixed supports an empty byte vector.
Member profinet::wire::TEST (WireReaderTest, ReadBigEndianMaximumU32)
Verifies direct big-endian decoding of the maximum 32-bit value.
Member profinet::wire::TEST (WireWriterTest, PutFixedEmptyArray)
Verifies that PutFixed supports an empty fixed-size array.
Member profinet::wire::TEST (WireReaderTest, ReadLittleEndianU64)
Verifies direct little-endian decoding of a 64-bit value.
Member profinet::wire::TEST (WireWriterTest, PutFixedArray)
Verifies that PutFixed copies a non-empty fixed-size array.
Member profinet::wire::TEST (WireWriterTest, PutBytesZeroLength)
Verifies that PutBytes with a zero length leaves the destination unchanged.
Member profinet::wire::TEST (WireWriterTest, PutBytes)
Verifies that PutBytes appends an arbitrary byte range.
Member profinet::wire::TEST (WireWriterTest, PutU32)
Verifies that PutU32 is equivalent to big-endian 32-bit serialization.
Member profinet::wire::TEST (WireWriterTest, PutU16)
Verifies that PutU16 is equivalent to big-endian 16-bit serialization.
Member profinet::wire::TEST (WireWriterTest, PutU8)
Verifies that PutU8 appends exactly one byte.
Member profinet::wire::TEST (WireReaderTest, ReaderNeedExactRemaining)
Reader Need succeeds when exactly the requested number of bytes remain.
Member profinet::wire::TEST (WireReaderTest, ReaderRejectsFixedArrayPastEnd)
Reader rejects a fixed-size extraction when fewer bytes remain and leaves its position unchanged.
Member profinet::wire::TEST (WireReaderTest, ReaderSkip)
Reader skips a prefix so parsing can start at a specific byte index.
Member profinet::wire::TEST (WireReaderTest, ReaderSkipZero)
Reader supports a zero-distance Skip without moving the cursor.
Member profinet::wire::TEST (WireReaderTest, ReaderRejectsSkipPastEnd)
Reader rejects a skip operation when the requested distance exceeds the remaining data.
Member profinet::wire::TEST (WireReaderTest, ReaderSkipTo)
Reader moves to an absolute byte offset before reading.
Member profinet::wire::TEST (WireReaderTest, ReaderSkipToMovesBackwards)
Reader can move backwards with SkipTo because the offset is absolute.
Member profinet::wire::TEST (WireReaderTest, ReaderRejectsSkipToPastEnd)
Reader rejects an absolute offset beyond the end of the buffer.
Member profinet::wire::TEST (WireReaderTest, ReaderAllowsSkipToEnd)
Reader allows moving exactly to the end of the buffer.
Member profinet::wire::TEST (WireReaderTest, ReaderFixedEmptyArray)
Reader supports a zero-length Fixed extraction without moving the cursor.
Member profinet::wire::TEST (WireReaderTest, ReaderNeedZero)
Reader Need succeeds for a zero-byte requirement.
Member profinet::wire::TEST (WireReaderTest, ReaderCursorPointsToCurrentPosition)
Reader exposes the current unread byte through Cursor.
Member profinet::wire::TEST (WireReaderTest, ReaderRemainingTracksPosition)
Reader reports the correct remaining byte count after mixed cursor operations.
Member profinet::wire::TEST (WireReaderTest, ReaderRawPointerConstructor)
Reader constructed from a raw pointer and length reads the supplied byte range.
Member profinet::wire::TEST (WireReaderTest, ReaderSpanConstructor)
Reader constructed from a span reads the supplied bytes.
Member profinet::wire::TEST (WireReaderTest, ReadLittleEndianU32)
Verifies direct little-endian decoding of a 32-bit value.
Member profinet::wire::TEST (WireReaderTest, ReadLittleEndianU16)
Verifies direct little-endian decoding of a 16-bit value.
Member profinet::wire::TEST (WireReaderTest, ReadLittleEndianU8)
Verifies direct little-endian decoding of an 8-bit value.
Member TEST (EthernetVLANHeaderTests, RejectsTruncatedHeader)
Rejects every truncated 802.1Q VLAN header before parsing fields.
Member TEST (SanitizerConcurrencyTest, DestructionAfterWorkerActivityIsClean)
Controller destruction after worker activity does not leave live threads.
Member TEST (SanitizerConcurrencyTest, RepeatedStartStopJoinsWorkers)
Repeated start and stop cycles cleanly join all worker threads.
Member TEST (SanitizerConcurrencyTest, ConcurrentOutputDataWritersAreRaceFree)
Concurrent output-data writers do not race with each other.
Member TEST (SanitizerConcurrencyTest, ConcurrentStatisticsSnapshotIsRaceFree)
Concurrent statistics snapshots remain race-free while workers update statistics.
Member TEST (PlatformTests, GetInterfaceMacRejectsEmptyInterface)
Verifies that an empty interface name is rejected.
Member TEST (PlatformTests, GetInterfaceMacRejectsUnknownInterface)
Verifies that an unknown interface name is rejected.
Member TEST (PlatformTests, GetInterfaceMacReturnsSixByteAddress)
Verifies that the configured interface exposes a six-byte MAC address.
Member TEST (PlatformTests, MacAddressProviderUsesPortableInterfaceLookup)
Verifies that MacAddressProvider delegates to GetInterfaceMac().
Member TEST (PlatformTests, GetExecutableDirectoryIsStable)
Verifies that repeated executable-directory lookups remain stable.
Member TEST (PlatformTests, GetExecutableDirectoryReturnsExistingAbsoluteDirectory)
Verifies that the executable directory is absolute and exists.
Member TEST (EthernetVLANHeaderTests, AcceptsCompleteHeader)
Accepts the complete minimum-sized VLAN header.
Member TEST_F (UtilMoreTests, MaxTimeoutHandlesPastDeadline)
Verify MaxTimeout reports a near-zero timeout as elapsed when started in the past.
Member TEST_F (BlocksMoreTests, ParseRealIdentificationDataAcceptsRecognizedHeader)
Verify ParseRealIdentificationData accepts a recognized v1.1 header.
Member TEST_F (UtilMoreTests, MaxTimeoutRemainingIsZeroAfterExpiry)
Verify MaxTimeout::Remaining returns zero after expiration.
Member TEST_F (UtilMoreTests, MaxTimeoutRemainingIsPositiveBeforeExpiry)
Verify MaxTimeout::Remaining is positive before expiration.
Member TEST_F (UtilMoreTests, SkipVlanTagsHandlesTripleTaggedFrame)
Verify SkipVlanTags can walk several stacked VLAN tags.
Member TEST_F (UtilMoreTests, SkipVlanTagsLeavesOrdinaryEtherTypeUntouched)
Verify SkipVlanTags does not skip unrelated EtherTypes.
Member TEST_F (UtilMoreTests, SkipVlanTagsHandlesTruncatedTag)
Verify SkipVlanTags stops safely on truncated VLAN tags.
Member TEST_F (UtilMoreTests, Ip2StringRejectsExtraComponents)
Verify Ip2String rejects extra IPv4 components.
Member TEST_F (UtilMoreTests, String2IpRejectsInvalidLength)
Verify String2Ip rejects lengths other than four bytes.
Member TEST_F (UtilMoreTests, IpConversionHandlesBoundaryAddresses)
Verify IPv4 conversion accepts zero and broadcast addresses.
Member TEST_F (UtilMoreTests, String2MacRejectsMalformedVariants)
Verify MAC parsing rejects malformed component counts and lengths.
Member TEST_F (UtilMoreTests, String2MacAcceptsCanonicalHexDigits)
Verify MAC parsing accepts uppercase and mixed separators consistently.
Member TEST_F (UtilMoreTests, DecodeBytesPreservesEmbeddedNul)
Verify DecodeBytes decodes an embedded NUL but removes trailing NUL padding.
Member TEST_F (UtilMoreTests, ToHexHandlesRawPointerAndEmptyInput)
Verify ToHex handles a raw pointer as well as an empty buffer.
Member TEST_F (UtilMoreTests, ToVecConvertsStringBytes)
Verify ToVec converts every input character to one byte.
Member TEST_F (UtilMoreTests, HexFormattersHandleBoundaries)
Verify hexadecimal formatters preserve leading zeroes and case.
Member TEST_F (VendorsTest, KnownVendorIdResolvesToName)
known vendor id resolves to a name
Member TEST_F (UtilMoreTests, DecodeBytesPreservesNonPaddedData)
Verify DecodeBytes preserves data when no trailing NUL exists.
Member TEST_F (UtilMoreTests, DecodeBytesHandlesAllNuls)
Verify DecodeBytes reduces an all-zero buffer to an empty string.
Member TEST_F (UtilMoreTests, String2IpHandlesExactAndExtendedInput)
Verify String2Ip accepts exactly four bytes and ignores additional bytes.
Member TEST_F (UtilMoreTests, Mac2StringRejectsInvalidLength)
Verify Mac2String rejects buffers that are not exactly six bytes.
Member TEST_F (UtilMoreTests, String2MacRejectsWhitespace)
Verify String2Mac rejects whitespace and other non-hex characters.
Member TEST_F (UtilMoreTests, String2MacRejectsWrongDelimiterPosition)
Verify String2Mac rejects a valid-length address containing a misplaced delimiter.
Member TEST_F (UtilMoreTests, String2MacHandlesBoundaryValues)
Verify String2Mac accepts all-zero and all-FF MAC addresses.
Member TEST_F (UtilMoreTests, SkipVlanTagsHandlesIncompleteVlanHeader)
Verify SkipVlanTags handles a frame ending exactly at the minimum VLAN header.
Member TEST_F (UtilMoreTests, GetExecutableDirectoryReturnsExistingDirectory)
Verify GetExecutableDirectory returns an existing absolute directory.
Member TEST_F (RtMoreTests, CyclicDataBuilderSwapWithoutChangesPreservesData)
Verify CyclicDataBuilder Swap leaves an already clean buffer unchanged.
Member TEST_F (VendorsTest, UnknownVendorIdReturnsNulloptOrFallbackString)
unknown vendor id returns nullopt / fallback string
Member TEST_F (UtilMoreTests, SkipVlanTagsHandlesShortFrame)
Verify SkipVlanTags returns the Ethernet EtherType offset for an empty frame.
Member TEST_F (UtilMoreTests, SkipVlanTagsStopsAfterSupportedTag)
Verify SkipVlanTags stops after a complete VLAN tag followed by a normal EtherType.
Member TEST_F (UtilMoreTests, SkipVlanTagsRecognizesSupportedTpids)
Verify SkipVlanTags recognizes each supported VLAN TPID.
Member TEST_F (UtilMoreTests, GetMacReadsLoopbackInterface)
Verify GetMac returns six bytes for the loopback interface.
Member TEST_F (UtilMoreTests, GetMacRejectsUnknownInterface)
Verify GetMac rejects an interface that does not exist.
Member TEST_F (RtMoreTests, CyclicDataBuilderSetDataRejectsUnknownSlotSubslot)
Verify CyclicDataBuilder SetData rejects an unknown slot/subslot.
Member TEST_F (BlocksMoreTests, WriteMultipleResultSuccessReflectsStatus)
Verify WriteMultipleResult::Success distinguishes zero and non-zero status.
Member TEST_F (BlocksMoreTests, ExpectedSubmoduleBlockReqCoversAllSubmoduleTypes)
Verify ExpectedSubmoduleBlockReq creates the correct data description for every submodule type.
Member TEST_F (BlocksMoreTests, ExpectedSubmoduleBlockReqReusesExistingApiAndSlot)
Verify AddSubmodule reuses an existing API and existing slot.
Member TEST_F (BlocksMoreTests, ParseModuleDiffBlockHandlesHeaderWithoutBody)
Verify ParseModuleDiffBlock returns an empty block when no API count is present.
Member TEST_F (BlocksMoreTests, ParseModuleDiffBlockStopsOnTruncatedApi)
Verify ParseModuleDiffBlock stops safely when an API header is truncated.
Member TEST_F (BlocksMoreTests, ParseModuleDiffBlockStopsOnTruncatedModule)
Verify ParseModuleDiffBlock stops safely when a module header is truncated.
Member TEST_F (RtMoreTests, CyclicDataBuilderConfigReturnsConfiguration)
Verify CyclicDataBuilder exposes its configured IOCR.
Member TEST_F (RtMoreTests, CyclicDataBuilderSwapPromotesDirtyBuffer)
Verify CyclicDataBuilder Swap promotes a dirty write buffer.
Member TEST_F (BlocksMoreTests, ExpectedSubmoduleBlockReqBuildsOutputOnlySubmodule)
Verify ExpectedSubmoduleBlockReq writes the distinct descriptions for output-only data.
Member TEST_F (RtMoreTests, BuildIocrConfigsUsesCalculatedSizeWhenLarger)
Verify BuildIocrConfigs preserves a calculated size larger than cSduLength.
Member TEST_F (RtMoreTests, BuildIocrConfigsUsesMinimumCSduLength)
Verify BuildIocrConfigs uses cSduLength when it exceeds the calculated input/output size.
Member TEST_F (RtMoreTests, BuildIocrConfigsCoversInputAndOutputBranches)
Verify BuildIocrConfigs covers data, IOCS-only, and bidirectional submodule paths for both input and output IOCRs.
Member TEST_F (RtMoreTests, BuildIocrConfigsHandlesEmptySlotList)
Verify BuildIocrConfigs handles the empty-slot case using the CSdu minimum.
Member TEST_F (RtMoreTests, IOCRTypePredicatesCoverBothDirections)
Verify IOCR type predicates cover input and output configurations.
Member TEST_F (RtMoreTests, IOCRTimingHelpersCalculateCycleAndWatchdog)
Verify IOCR timing helpers use the configured reduction and send-clock factors.
Member TEST_F (AlarmItemTest, ParseChannelDiagnosis)
parse_alarm_item: ChannelDiagnosis (USI 0x8000)
Member TEST_F (BlocksMoreTests, ParseRealIdentificationDataFallsBackToRawBody)
Verify ParseRealIdentificationData falls back to raw v1.0 bodies.
Member TEST_F (BlocksMoreTests, ExpectedSubmoduleBlockReqCreatesSeparateApis)
Verify ExpectedSubmoduleBlockReq creates separate APIs when API values differ.
Member TEST_F (BlocksMoreTests, ExpectedSubmoduleAPISerializes)
Verify ExpectedSubmoduleAPI serializes a slot list.
Member TEST_F (BlocksMoreTests, ExpectedSubmoduleSlotSerializes)
Verify ExpectedSubmoduleSlot serializes a slot containing a submodule.
Member TEST_F (BlocksMoreTests, ExpectedSubmoduleSerializes)
Verify ExpectedSubmodule serializes its header and descriptions.
Member TEST_F (BlocksMoreTests, ExpectedSubmoduleSubmoduleTypeMasksLowBits)
Verify ExpectedSubmodule::SubmoduleType masks properties correctly.
Member TEST_F (BlocksMoreTests, ExpectedSubmoduleDataDescriptionSerializes)
Verify ExpectedSubmoduleDataDescription serializes its six wire bytes.
Member TEST_F (BlocksMoreTests, ParseWriteMultipleResponseHandlesMinimalResponse)
Verify ParseWriteMultipleResponse ignores an empty 64-byte response.
Member TEST_F (BlocksMoreTests, ParseWriteMultipleResponseRejectsShortInput)
Verify ParseWriteMultipleResponse safely rejects undersized input.
Member TEST_F (BlocksMoreTests, IODWriteMultipleBuilderStoresApiAndMultipleWrites)
Verify AddWrite accepts a custom API and multiple records.
Member TEST_F (BlocksMoreTests, IODWriteMultipleBuilderBuildsEmptyPacket)
Verify IODWriteMultipleBuilder can build an empty write list.
Member TEST_F (BlocksMoreTests, ModuleDiffBlockReportsAllMismatches)
Verify ModuleDiffBlock reports every improper module and submodule.
Member TEST_F (BlocksMoreTests, ModuleDiffModuleEvaluatesState)
Verify ModuleDiffModule evaluates proper and improper module states.
Member TEST_F (BlocksMoreTests, ModuleDiffSubmoduleStateNameCoversValues)
Verify ModuleDiffSubmodule state decoding covers representative and unknown values.
Member TEST_F (BlocksMoreTests, ParsePortStatisticsSupportsOffset)
Verify ParsePortStatistics honors a non-zero offset.
Member TEST_F (BlocksMoreTests, ParseRealIdentificationDataHandlesTruncatedEntry)
Verify ParseRealIdentificationData rejects an incomplete slot entry safely.
Member TEST_F (BlocksTest, ExpectedSubmoduleBlockReqBuildsInputBlock)
ExpectedSubmoduleBlockReq builds well-formed INPUT block
Member TEST_F (BlocksTest, Align4)
align4 rounds up correctly
Member TEST_F (BlocksTest, ParseModuleDiffBlockAllOk)
parse_module_diff_block: all OK
Member TEST_F (BlocksTest, ParseModuleDiffBlockWrongSubmodule)
parse_module_diff_block: wrong submodule reports mismatch
Member TEST_F (BlocksTest, ParseModuleDiffBlockRejectsWrongBlockType)
parse_module_diff_block: wrong block type throws
Member TEST_F (BlocksTest, ParseModuleDiffBlockTooShortReturnsEmpty)
parse_module_diff_block: too-short data returns empty block
Member TEST_F (BlocksTest, ParseRealIdentificationDataV10)
parse_real_identification_data v1.0 parses slot/subslot structure
Member TEST_F (BlocksTest, ParseRealIdentificationDataTooShortReturnsEmpty)
parse_real_identification_data returns empty on too-short data
Member TEST_F (BlocksTest, IODWriteMultipleBuilderBuildsValidPacket)
IODWriteMultipleBuilder builds a valid multi-write packet
Member TEST_F (BlocksTest, ParseBlockHeaderRejectsTooShortData)
parse_block_header rejects too-short data
Member TEST_F (BlocksTest, ExpectedSubmoduleBlockReqInputOutputIncludesTwoDataDescriptions)
ExpectedSubmoduleBlockReq INPUT_OUTPUT includes two DataDescriptions
Member TEST_F (BlocksTest, ExpectedSubmoduleBlockReqNoIoProducesOneDataDescription)
ExpectedSubmoduleBlockReq NO_IO produces exactly one DataDescription
Member TEST_F (BlocksTest, ParsePortStatistics)
parse_port_statistics parses a 26-byte body
Member TEST_F (BlocksTest, ParsePortStatisticsTooShortReturnsNullopt)
parse_port_statistics returns nullopt on too-short data
Member TEST_F (BlocksTest, ParsePdPortDataRealParsesSlotAndSubslot)
ParsePdPortDataReal parses the slot and subslot from the payload.
Member TEST_F (BlocksTest, ParsePdPortDataRealDecodesAsciiPortId)
ParsePdPortDataReal decodes an ASCII port ID.
Member TEST_F (BlocksTest, ParsePdPortDataRealDecodesExtendedLatin1PortId)
ParsePdPortDataReal converts extended Latin-1 port ID bytes to UTF-8.
Member TEST_F (BlocksTest, ParsePdPortDataRealParsesPeer)
ParsePdPortDataReal parses a peer port, chassis ID and MAC address.
Member TEST_F (AsioEthernetSocketTests, RecvReturnsEmptyFrameOnTimeout)
Verifies that Recv returns an empty frame when its configured receive timeout expires.
Member TEST_F (AlarmItemTest, ParseExtChannelDiagnosis)
parse_alarm_item: ExtChannelDiagnosis (USI 0x8002) includes ext fields
Member TEST_F (AlarmItemTest, ParsePEAlarmItem)
parse_alarm_item: PE_AlarmItem (USI 0x8310)
Member TEST_F (AlarmItemTest, ParseUnknownUSI)
parse_alarm_item: unknown USI falls back to generic AlarmItem
Member TEST_F (AlarmItemTest, RejectsTruncatedData)
parse_alarm_item rejects truncated data
Member TEST_F (AsioEthernetSocketTests, ConstructorRejectsUnknownInterface)
Verifies that an unknown network interface is rejected.
Member TEST_F (AsioEthernetSocketTests, ConstructorAcceptsEthernetInterface)
Verifies that a configured Ethernet interface can be opened.
Member TEST_F (AsioEthernetSocketTests, ConstructorAcceptsSpecificEtherType)
Verifies that a specific EtherType can be configured.
Member TEST_F (AsioEthernetSocketTests, SetTimeoutAcceptsFiniteDuration)
Verifies that SetTimeout configures a finite receive timeout without performing socket I/O immediately.
Member TEST_F (BlocksTest, ParsePdPortDataRealDecodesExtendedLatin1PeerIds)
ParsePdPortDataReal converts extended Latin-1 peer IDs to UTF-8.
Member TEST_F (AsioEthernetSocketTests, RecvUsesExternallyDrivenIoContext)
Verifies that Recv uses an externally driven Asio execution context rather than running the context itself.
Member TEST_F (AsioEthernetSocketTests, InjectedEthernetFrameCanBeCapturedByPeer)
Verifies that an injected Ethernet frame can be captured by a peer.
Member TEST_F (AsioEthernetSocketTests, EtherTypeFilterAcceptsVlanTaggedFrame)
Verifies that an EtherType filter is applied after VLAN tags.
Member TEST_F (AsioEthernetSocketTests, UnicastFrameCanBeReceivedByPeer)
Verifies that a complete unicast Ethernet frame sent through one AF_PACKET socket can be received by another socket on the test interface.// Kan weg?
Member TEST_F (AsioEthernetSocketTests, ConcurrentUnicastFrameCanBeReceivedByPeer)
Verifies that a frame can be received concurrently while another thread sends through a second AF_PACKET socket.//kan weg?
Member TEST_F (AsioEthernetSocketTests, PeerCanReceiveAndRespondToController)
Verifies that a controller can send a frame to a peer and receive the peer's response through the Ethernet transport.
Member TEST_F (BlocksTest, ParseBlockHeader)
parse_block_header parses a 6-byte header
Member TEST_F (BlocksMoreTests, ParsePdPortDataRealHandlesMissingPortLength)
Verify ParsePdPortDataReal handles a payload ending after slot/subslot.
Member TEST_F (BlocksMoreTests, ParseMultipleBlockHeaderParsesAllFields)
Verify ParseMultipleBlockHeader decodes padding, API, slot and subslot.
Member TEST_F (BlocksMoreTests, ParseMultipleBlockHeaderRejectsTruncatedInput)
Verify ParseMultipleBlockHeader rejects truncated input.
Member TEST_F (BlocksMoreTests, ParsePdInterfaceDataRealParsesCompleteData)
Verify ParsePdInterfaceDataReal decodes chassis, MAC and IP configuration.
Member TEST_F (BlocksMoreTests, ParsePdInterfaceDataRealRejectsMissingChassisLength)
Verify ParsePdInterfaceDataReal rejects a missing chassis-length byte.
Member TEST_F (BlocksMoreTests, ParsePdInterfaceDataRealRejectsTruncatedChassis)
Verify ParsePdInterfaceDataReal rejects a truncated chassis identifier.
Member TEST_F (BlocksMoreTests, ParsePdInterfaceDataRealRejectsTruncatedMac)
Verify ParsePdInterfaceDataReal rejects a truncated MAC address.
Member TEST_F (BlocksMoreTests, ParsePdInterfaceDataRealRejectsTruncatedIpConfiguration)
Verify ParsePdInterfaceDataReal rejects truncated IP configuration.
Member TEST_F (BlocksMoreTests, ParsePdPortDataRealKeepsSuppliedLocationForEmptyInput)
Verify ParsePdPortDataReal handles a payload containing no fields.
Member TEST_F (BlocksMoreTests, ParseBlockHeaderRejectsTruncatedOffset)
Verify ParseBlockHeader rejects a truncated header at a non-zero offset.
Member TEST_F (BlocksMoreTests, ParsePdPortDataRealHandlesMissingPeerCount)
Verify ParsePdPortDataReal handles a port ID without peer-count data.
Member TEST_F (BlocksMoreTests, ParsePdPortDataRealHandlesMissingPeerMac)
Verify ParsePdPortDataReal handles a peer record without a MAC address.
Member TEST_F (BlocksMoreTests, ParsePdPortDataRealHandlesMissingMau)
Verify ParsePdPortDataReal returns defaults when MAU data is absent.
Member TEST_F (BlocksMoreTests, ParsePdPortDataRealHandlesIncompleteBoundaries)
Verify ParsePdPortDataReal handles an incomplete boundary section.
Member TEST_F (BlocksMoreTests, ParsePdPortDataRealHandlesIncompleteLinkState)
Verify ParsePdPortDataReal handles an incomplete link-state section.
Member TEST_F (BlocksMoreTests, ParsePdPortDataRealHandlesIncompleteMediaType)
Verify ParsePdPortDataReal handles an incomplete media-type section.
Member TEST_F (BlocksMoreTests, ParsePdRealDataCollectsMultipleHeaderContent)
Verify ParsePdRealData collects nested blocks and raw block data.
Member TEST_F (BlocksMoreTests, ParsePdRealDataSkipsNonMultipleBlock)
Verify ParsePdRealData ignores a non-multiple top-level block safely.
Member TEST_F (BlocksMoreTests, BlockHeaderBodyLengthHandlesLengthsBelowTwo)
Verify BlockHeader::BodyLength never underflows for zero or one.
Member TEST_F (BlocksTest, ParsePdPortDataRealParsesMauType)
ParsePdPortDataReal parses the MAU type.
Member TEST_F (BlocksTest, ParsePdPortDataRealParsesPortProperties)
ParsePdPortDataReal parses boundaries, link state and media type.
Member TEST_F (BlocksTest, ParsePdPortDataRealParsesCompletePortData)
ParsePdPortDataReal parses a complete PD port data structure.
Member TEST_F (BlocksTest, ParsePdPortDataRealHandlesEmptyData)
ParsePdPortDataReal returns the supplied slot and subslot for empty data.
Member TEST_F (BlocksTest, ParsePdPortDataRealHandlesMissingPortIdLength)
ParsePdPortDataReal handles data ending after slot and subslot.
Member TEST_F (BlocksTest, ParsePdPortDataRealHandlesTruncatedPortId)
ParsePdPortDataReal handles a port ID whose declared length exceeds the data.
Member TEST_F (BlocksTest, ParsePdPortDataRealHandlesMissingPeerCount)
ParsePdPortDataReal handles data ending immediately after the port ID.
Member TEST_F (BlocksTest, DISABLED_ParsePdPortDataRealHandlesTruncatedPeerPortId)
ParsePdPortDataReal stops when a peer port ID is truncated.
Member TEST_F (BlocksMoreTests, ParsePdRealDataIgnoresMalformedMultipleHeader)
Verify ParsePdRealData survives a truncated multiple-header body.
Member TEST_F (BlocksMoreTests, BlockHeaderTypeNameHandlesUnknownType)
Verify an unknown block type falls back to its generic name.
Member TEST_F (BlocksMoreTests, SlotInfoToStringFormatsSubslot)
Verify SlotInfo::ToString uses the documented hexadecimal subslot format.
Member TEST_F (BlocksMoreTests, PeerInfoMacStrFormatsAddress)
Verify PeerInfo::MacStr delegates to the canonical MAC formatter.
Member TEST_F (BlocksMoreTests, PortInfoMauTypeNameCoversKnownAndUnknownValues)
Verify every documented MAU-name mapping and the unknown fallback.
Member TEST_F (BlocksMoreTests, PortInfoLinkStateCoversAllBranches)
Verify every link-state switch branch, including the fallback.
Member TEST_F (BlocksMoreTests, InterfaceInfoFormattingHelpers)
Verify InterfaceInfo formatting helpers expose all stored addresses.
Member TEST_F (BlocksMoreTests, ParseBlockHeaderSupportsOffset)
Verify ParseBlockHeader accepts a non-zero starting offset.
Member TEST_F (DiagnosisMoreTests, ParseDiagnosisBlockStoresQualifiedDiagnosis)
Verify ParseDiagnosisBlock stores qualified diagnosis details.
Member TEST_F (DiagnosisMoreTests, ChannelPropertiesFromUint16RetainsRawValue)
Verify ChannelProperties::FromUint16 retains raw input and decodes defaults.
Member TEST_F (DiagnosisMoreTests, AnyChannelDiagnosisUsiClassification)
Verify standard and qualified diagnosis entries are distinguished by USI.
Member TEST_F (DiagnosisMoreTests, DiagnosisDataMaintenanceFlagsAreFalseWhenClear)
Verify DiagnosisData reports no maintenance flags when entries are clear.
Member TEST_F (DiagnosisMoreTests, DiagnosisDataDetectsMaintenanceDemanded)
Verify DiagnosisData detects a maintenance-demanded flag.
Member TEST_F (DiagnosisMoreTests, DecodeChannelErrorTypeCoversAdditionalRanges)
Verify DecodeChannelErrorType covers additional well-known and fallback ranges.
Member TEST_F (DiagnosisMoreTests, DecodeExtChannelErrorTypeHandlesUnknownValues)
Verify DecodeExtChannelErrorType falls back for an unknown extended value.
Member TEST_F (DiagnosisMoreTests, ParseDiagnosisBlockAcceptsUsiZero)
Verify ParseDiagnosisBlock parses a standard entry with USI zero.
Member TEST_F (DiagnosisMoreTests, ParseDiagnosisBlockStoresExtendedDiagnosis)
Verify ParseDiagnosisBlock stores extended diagnosis details.
Member TEST_F (DiagnosisMoreTests, DirectionNamesCoverAllValues)
Verify ChannelProperties names cover all legal channel directions.
Member TEST_F (DiagnosisMoreTests, ParseDiagnosisBlockStopsOnTruncatedEntry)
Verify ParseDiagnosisBlock rejects a truncated standard diagnosis entry.
Member TEST_F (DiagnosisMoreTests, ParseDiagnosisBlockStopsOnZeroEntry)
Verify ParseDiagnosisBlock ignores a zero-filled entry.
Member TEST_F (DiagnosisMoreTests, ParseDiagnosisBlockAcceptsAlternativeBlockTypes)
Verify ParseDiagnosisBlock accepts all documented diagnosis block types.
Member TEST_F (DiagnosisMoreTests, ParseDiagnosisBlockAcceptsRawEntry)
Verify ParseDiagnosisBlock handles raw diagnosis data without a block header.
Member TEST_F (DiagnosisMoreTests, ParseDiagnosisSimpleStopsOnIncompleteEntry)
Verify ParseDiagnosisSimple handles an incomplete trailing record.
Member TEST_F (DiagnosisMoreTests, ParseDiagnosisSimplePreservesLocation)
Verify ParseDiagnosisSimple handles an all-zero sentinel after valid data.
Member TEST_F (DiagnosisMoreTests, ChannelPropertiesFromUint16CoversAllValidFields)
Verify ChannelProperties::FromUint16 decodes every valid field encoding.
Member TEST_F (DiagnosisMoreTests, ChannelPropertiesFromUint16UsesFallbacks)
Verify invalid ChannelProperties encodings fall back to their documented defaults.
Member TEST_F (DiagnosisTest, ParseDiagnosisBlockParsesExtChannelDiagnosisEntry)
parse_diagnosis_block parses ExtChannelDiagnosis entry
Member TEST_F (DcpAsioIntegrationTests, ReadResponseParsesAsioEthernetFrame)
Verifies that DCP ReadResponse parses a response received through the real Asio raw Ethernet transport.
Member TEST_F (DcpAsioIntegrationTests, ReadResponseParsesVlanTaggedAsioEthernetFrame)
Verifies that DCP ReadResponse accepts a priority-tagged VLAN response received through the real Asio raw Ethernet transport.
Member TEST_F (DcpAsioIntegrationTests, GetParamPerformsAsioRoundTrip)
Verifies that GetParam performs a complete DCP GET request and response exchange using two real Asio raw Ethernet transports.
Member TEST_F (DiagnosisTest, ChannelPropertiesFromUint16DecodesAllBitFields)
ChannelProperties::from_uint16 decodes all bit fields
Member TEST_F (DiagnosisTest, ChannelPropertiesFromUint16HandlesZeroValue)
ChannelProperties::from_uint16 handles zero value
Member TEST_F (DiagnosisTest, DecodeChannelErrorTypeResolvesKnownAndRangeBasedFallbacks)
decode_channel_error_type resolves known and range-based fallbacks
Member TEST_F (DiagnosisTest, DecodeExtChannelErrorTypeUsesContextSpecificTables)
decode_ext_channel_error_type uses context-specific tables
Member TEST_F (DiagnosisTest, ParseDiagnosisBlockParsesSingleChannelDiagnosisEntry)
parse_diagnosis_block parses a single ChannelDiagnosis entry with block header
Member TEST_F (DiagnosisMoreTests, ChannelDiagnosisDetectsSubmoduleLevel)
Verify ChannelDiagnosis detects submodule-level channel number 0x8000.
Member TEST_F (DiagnosisTest, ParseDiagnosisBlockLocationHeaderUpdatesLocation)
parse_diagnosis_block with API/Slot/Subslot location header updates location
Member TEST_F (DiagnosisTest, ParseDiagnosisBlockReturnsEmptyForTooShortData)
parse_diagnosis_block returns empty result for too-short data
Member TEST_F (DiagnosisTest, ParseDiagnosisSimpleStopsOnZeroFilledSentinelEntry)
parse_diagnosis_simple stops on zero-filled sentinel entry
Member TEST_F (DiagnosisTest, DiagnosisDataMaintenanceFlagsReflectEntryFlags)
DiagnosisData::has_maintenance_required / demanded reflect entry flags
Member TEST_F (DiagnosisTest, DiagnosisDataGetByChannelFiltersEntries)
DiagnosisData::get_by_channel filters entries
Member TEST_F (DiagnosisMoreTests, ChannelTypeNamesCoverAllValues)
Verify ChannelProperties names cover all legal channel types.
Member TEST_F (DiagnosisMoreTests, SpecifierNamesCoverAllValues)
Verify ChannelProperties names cover all legal specifiers.
Member TEST_F (EthernetPacketBackendTestFixture, LinuxPacketReadinessReceivesFrame)
Verifies that the Linux packet-readiness path receives an injected frame.
Member TEST_F (EthernetPacketBackendTestFixture, EtherTypeFilterAcceptsSingleVlanTaggedFrame)
Verifies that one 802.1Q tag is skipped before EtherType matching.
Member TEST_F (EthernetPacketBackendTestFixture, EtherTypeFilterAcceptsQinQFrame)
Verifies that two stacked VLAN tags are skipped before EtherType matching.
Member TEST_F (EthernetPacketBackendTestFixture, EtherTypeFilterAcceptsLegacyDoubleTaggedFrame)
Verifies that legacy 0x9100 VLAN tagging is skipped before EtherType matching.
Member TEST_F (EthernetPacketBackendTestFixture, EtherTypeFilterRejectsFrameShorterThanHeader)
Verifies that a frame shorter than an Ethernet header cannot match a filter.
Member TEST_F (EthernetPacketBackendTestFixture, EtherTypeFilterRejectsTruncatedVlanFrame)
Verifies that a frame containing only an incomplete VLAN tag is rejected.
Member TEST_F (EthernetPacketBackendTestFixture, ZeroEtherTypeAcceptsCompleteFrame)
Verifies that an EtherType value of zero accepts a complete frame.
Member TEST_F (EthernetPacketBackendTestFixture, RecvReturnsEmptyFrameOnTimeout)
Verifies that Recv returns an empty frame when the configured timeout expires.
Member TEST_F (EthernetPacketBackendTestFixture, RecvSkipsNonMatchingTraffic)
Verifies that non-matching captured traffic is ignored until a matching frame arrives.
Member TEST_F (EthernetPacketBackendTestFixture, EtherTypeFilterRejectsNonMatchingUntaggedFrame)
Verifies that a non-matching untagged EtherType is rejected.
Member TEST_F (EthernetPacketBackendTestFixture, LinuxPacketReadinessTimesOut)
Verifies that the Linux packet-readiness path completes a finite receive timeout.
Member TEST_F (EthernetPacketBackendTestFixture, WindowsPacketReadinessReceivesFrame)
Verifies that the Windows packet-readiness path receives an injected frame.
Member TEST_F (EthernetPacketBackendTestFixture, WindowsPacketReadinessTimesOut)
Verifies that the Windows packet-readiness path completes a finite receive timeout.
Member TEST_F (ProtocolTest, PNDCPHeaderRoundTrips)
PNDCPHeader round-trips
Member TEST_F (ProtocolTest, PNDCPBlockParsesStatusAndPayload)
PNDCPBlock parses status+payload with -2 offset convention
Member TEST_F (ProtocolTest, EthernetHeaderRoundTrips)
EthernetHeader round-trips
Member TEST_F (ProtocolTest, PacketStructFixedSizesMatchExpectedSizes)
packet struct fixed sizes
Member TEST_F (ProtocolTest, PNRPCHeaderInterfaceUUIDMatchesExpectedPrefix)
PNRPCHeader interface UUIDs match expected PROFINET prefix
Member TEST_F (DiagnosisMoreTests, ParseDiagnosisBlockRejectsTooShortInput)
Verify ParseDiagnosisBlock returns empty data for a buffer shorter than a block header.
Member TEST_F (DiagnosisMoreTests, DiagnosisDataGetByChannelFiltersAllMatchingEntries)
Verify DiagnosisData::GetByChannel returns every matching entry and none for misses.
Member TEST_F (DiagnosisMoreTests, DiagnosisDataHasErrorsReflectsEntries)
Verify DiagnosisData::HasErrors distinguishes empty and populated diagnosis data.
Member TEST_F (DiagnosisMoreTests, DecodeChannelErrorTypeCoversAllFallbackRanges)
Verify DecodeChannelErrorType covers every fallback range.
Member TEST_F (DiagnosisMoreTests, DecodeExtChannelErrorTypeCoversFallbackRanges)
Verify DecodeExtChannelErrorType covers general and fallback ranges.
Member TEST_F (DiagnosisMoreTests, ParseDiagnosisBlockConsumesLocationHeader)
Verify ParseDiagnosisBlock consumes and applies an API/slot/subslot location header.
Member TEST_F (DiagnosisMoreTests, ParseDiagnosisBlockHandlesUnknownUsi)
Verify ParseDiagnosisBlock treats an unknown USI as a minimal channel diagnosis.
Member TEST_F (DiagnosisMoreTests, ParseDiagnosisBlockStopsOnTruncatedExtendedDiagnosis)
Verify ParseDiagnosisBlock stops when an extended diagnosis payload is truncated.
Member TEST_F (DiagnosisMoreTests, ParseDiagnosisBlockStopsOnTruncatedQualifiedDiagnosis)
Verify ParseDiagnosisBlock stops when a qualified diagnosis payload is truncated.
Member TEST_F (DcpAsioIntegrationTests, SendDiscoverTransmitsIdentifyRequest)
Verifies that DCP SendDiscover transmits a valid Identify request through the real Asio raw Ethernet transport.
Member TEST_F (DiagnosisMoreTests, ParseDiagnosisSimpleRejectsTooShortInput)
Verify ParseDiagnosisSimple returns empty data when no six-byte header is available.
Member TEST_F (EthernetPacketBackendTestFixture, ConstructorRejectsEmptyInterface)
Verifies that an empty interface name is rejected before packet access.
Member TEST_F (EthernetPacketBackendTestFixture, ConstructorRejectsUnknownInterface)
Verifies that an unknown interface name is rejected.
Member TEST_F (EthernetPacketBackendTestFixture, ConstructorAcceptsConfiguredInterface)
Verifies that the configured Ethernet interface can be opened.
Member TEST_F (EthernetPacketBackendTestFixture, SendAcceptsMinimumEthernetFrame)
Verifies that a complete minimum-size Ethernet frame can be sent.
Member TEST_F (EthernetPacketBackendTestFixture, SendRejectsShortEthernetFrame)
Verifies that frames shorter than the Ethernet header are rejected.
Member TEST_F (EthernetPacketBackendTestFixture, EtherTypeFilterAcceptsMatchingUntaggedFrame)
Verifies that an untagged frame with the configured EtherType matches.
Member TEST_F (RTTest, RTFrameRejectsTooShortData)
RTFrame::from_bytes rejects too-short data
Member TEST_F (BlocksMoreTests, ParsePortStatisticsRejectsTruncatedOffset)
Verify ParsePortStatistics returns nullopt for a truncated payload at an offset.
Member TEST_F (BlocksMoreTests, ParseRealIdentificationDataParsesV11ApiGroupedLayout)
Verify ParseRealIdentificationData parses the API-grouped v1.1 layout.
Member TEST_F (BlocksMoreTests, ParseWriteMultipleResponseParsesSuccessfulResult)
Verify ParseWriteMultipleResponse decodes a successful result block.
Member TEST_F (RTTest, DISABLED_BuildIocrConfigsComputesExpectedFrameOffsets)
build_iocr_configs computes frame offsets matching RPCCon's IOCR block builder
Member TEST_F (RTTest, CyclicDataBuilderRejectsUnknownSlotSubslot)
CyclicDataBuilder rejects unknown slot/subslot
Member TEST_F (RTTest, CyclicDataBuilderSetGetDataRoundTripsThroughSwap)
CyclicDataBuilder set/get data round-trips through swap
Member TEST_F (RTTest, ParseEthernetFrameRejectsNonProfinetEthertype)
parse_ethernet_frame rejects non-PROFINET ethertype
Member TEST_F (RTTest, BuildAndParseEthernetFrameRoundTrips)
build_ethernet_frame / parse_ethernet_frame round-trip
Member TEST_F (RtMoreTests, RTFrameStatusAccessorsCoverAllBits)
Verify RTFrame accessors independently evaluate every status bit.
Member TEST_F (RTTest, RTFrameRoundTrips)
RTFrame round-trips through to_bytes/from_bytes
Member TEST_F (RpcTransportTests, ReceiveUsesExternallyDrivenIoContext)
Verifies that RpcTransport::Receive() relies on an externally driven Asio execution context and does not run the context itself.
Member TEST_F (RpcTransportTests, IsOpenReturnsFalseForClosedTransport)
IsOpen reports false after the UDP socket has been closed.
Member TEST_F (RpcTransportTests, IsOpenReturnsTrueForOpenTransport)
IsOpen reports true after the UDP socket has been successfully opened.
Member TEST_F (RpcTransportTests, CloseOnClosedTransportDoesNothing)
Close is safe to call on an already closed transport.
Member TEST_F (RpcTransportTests, CloseIsIdempotent)
Close is safe to call repeatedly.
Member TEST_F (RpcTransportTests, CloseClosesSocket)
Close closes an open UDP socket.
Member TEST_F (RpcTransportTests, SendFailsWhenTransportIsClosed)
Send rejects calls when the transport has not been opened.
Member TEST_F (RtMoreTests, CyclicDataBuilderSetIocsUpdatesIocsOnlyObject)
Verify CyclicDataBuilder SetIocs updates IOCS-only objects.
Member TEST_F (RtMoreTests, CyclicDataBuilderGetDataRejectsUnknownSlotSubslot)
Verify CyclicDataBuilder GetData rejects an unknown slot/subslot.
Member TEST_F (RtMoreTests, CyclicDataBuilderLoadTruncatesLongPayload)
Verify CyclicDataBuilder Load truncates a payload larger than the configured buffer.
Member TEST_F (RtMoreTests, CyclicDataBuilderLoadCopiesAndClearsRemainder)
Verify CyclicDataBuilder Load copies a shorter payload and clears the remainder.
Member TEST_F (RtMoreTests, CyclicDataBuilderClearResetsBuffers)
Verify CyclicDataBuilder Clear resets the cyclic buffers to zero.
Member TEST_F (RtMoreTests, CyclicDataBuilderSetAllIocsUpdatesAllIocs)
Verify CyclicDataBuilder SetAllIocs updates every configured IOCS position.
Member TEST_F (RtMoreTests, CyclicDataBuilderSetAllIopsUpdatesAllDataObjects)
Verify CyclicDataBuilder SetAllIops updates every data-bearing object.
Member TEST_F (RtMoreTests, CyclicDataBuilderSetIocsUpdatesDataObject)
Verify CyclicDataBuilder SetIocs updates ordinary data objects as well.
Member TEST_F (RtMoreTests, CyclicDataBuilderSetIopsIgnoresIocsOnlyObject)
Verify CyclicDataBuilder SetIops ignores an IOCS-only object without an IOPS byte.
Member TEST_F (RpcTransportTests, SendTransmitsDatagramWithoutWaiting)
Send transmits a UDP datagram without waiting for a response.
Member TEST_F (RtMoreTests, CyclicDataBuilderSetIopsUpdatesDataObject)
Verify CyclicDataBuilder SetIops updates IOPS for data-bearing objects.
Member TEST_F (RtMoreTests, ParseEthernetFrameRejectsVlanNonProfinet)
Verify ParseEthernetFrame rejects a VLAN-tagged frame with a non-PROFINET EtherType.
Member TEST_F (RtMoreTests, ParseEthernetFrameAcceptsPriorityVlan)
Verify ParseEthernetFrame accepts a single priority VLAN tag.
Member TEST_F (RtMoreTests, ParseEthernetFrameRejectsShortFrames)
Verify ParseEthernetFrame rejects packets shorter than an Ethernet header.
Member TEST_F (RtMoreTests, RTFrameToStringIsNonEmpty)
Verify RTFrame::ToString provides a stable non-empty diagnostic string.
Member TEST_F (RtMoreTests, RTFrameFromBytesRejectsShortBuffers)
Verify RTFrame parsing rejects every length below the fixed header size.
Member TEST_F (RtMoreTests, RTFrameSerializationPreservesAllFields)
Verify RTFrame serialization retains transfer status as well as payload.
Member TEST_F (RpcConIntegrationTest, ApplicationReadyIgnoresNonControlRequest)
ApplicationReadyIgnoresNonControlRequest
Member TEST_F (RtMoreTests, CyclicDataBuilderSetDataTruncatesOversizedData)
Verify CyclicDataBuilder SetData truncates data larger than the mapped object.
Member TEST_F (RpcTransportTests, OpenRejectsInvalidIpv4Address)
Open rejects an invalid IPv4 address before attempting to open the UDP socket.
Member TEST_F (RpcTransportTests, OpenListenerBindsRequestedPort)
Open binds a UDP socket to the requested local endpoint when listener mode is enabled.
Member TEST_F (RpcTransportTests, OpenCreatesUdpSocket)
Open creates a UDP socket for a valid IPv4 client endpoint.
Member TEST_F (RpcTransportTests, ConstructorCreatesClosedTransport)
A transport can be constructed with an Asio execution context.
Member TEST_F (RpcConIntegrationTest, ApplicationReadyAcceptsUnexpectedControlCommand)
ApplicationReadyAcceptsUnexpectedControlCommand
Member TEST_F (RpcConIntegrationTest, ApplicationReadyIgnoresOtherControlBlock)
ApplicationReadyIgnoresOtherControlBlock
Member TEST_F (RpcConIntegrationTest, ApplicationReadyIgnoresRpcResponse)
ApplicationReadyIgnoresRpcResponse
Member TEST_F (RpcTransportTests, OpenListenerRejectsOccupiedPort)
Open reports a bind failure when listener mode targets an occupied UDP port.
Member TEST_F (RpcConIntegrationTest, ApplicationReadyTimesOut)
ApplicationReadyTimesOut
Member TEST_F (RpcConIntegrationTest, ApplicationReadyResponseHasSuccessfulNrdStatus)
ApplicationReadyResponseHasSuccessfulNrdStatus
Member TEST_F (RpcConIntegrationTest, ApplicationReadyResponseMatchesRequest)
ApplicationReadyResponseMatchesRequest
Member TEST_F (RpcConIntegrationTest, ApplicationReadyReceivesCorrectRequest)
ApplicationReadyReceivesCorrectRequest
Member TEST_F (RpcConIntegrationTest, ApplicationReady)
ApplicationReady
Member TEST_F (BlocksMoreTests, ParseWriteMultipleResponseParsesFailedResult)
Verify ParseWriteMultipleResponse preserves a failed write status.
Member TEST_F (BlocksMoreTests, ParseWriteMultipleResponseStopsOnUnexpectedBlockType)
Verify ParseWriteMultipleResponse stops when a nested block has the wrong type.
Member TEST_F (BlocksMoreTests, IODWriteMultipleBuilderSerializesWriteDetails)
Verify IODWriteMultipleBuilder serializes multiple writes with distinct sequence numbers.
Member TEST_F (RpcTransportTests, SendToReportsUnderlyingSocketError)
SendTo reports the underlying UDP send error when the destination uses the wrong IP address family.
Member TEST_F (RpcTransportTests, SendReceiveThrowsSystemErrorWhenSocketIsCancelled)
SendReceive converts socket cancellation into std::system_error when the cancellation was not caused by the timeout timer.
Member TEST_F (RpcTransportTests, SendReceiveRejectsNegativeTimeout)
SendReceive rejects a negative timeout before sending the request.
Member TEST_F (RpcTransportTests, SendReceiveRejectsZeroTimeout)
SendReceive rejects a zero timeout before sending the request.
Member TEST_F (RpcTransportTests, SendReceiveFailsWhenTransportIsClosed)
SendReceive throws std::system_error when the transport socket is closed.
Member TEST_F (RpcTransportTests, SendReceiveThrowsOnTimeout)
SendReceive throws RPCTimeoutError when the destination receives the request but sends no response.
Member TEST_F (RpcTransportTests, SendReceiveUsesExternallyDrivenIoContext)
Verifies that RpcTransport::SendReceive() completes when its Asio execution context is driven externally.
Member TEST_F (RpcTransportTests, SendReceiveReturnsEchoResponse)
SendReceive sends a datagram and returns the echoed response.
Member TEST_F (RpcTransportTests, OpenUpdatesEndpointWhenTransportIsAlreadyOpen)
Open updates the client destination when called again after the socket is already open.
Member TEST_F (RpcTransportTests, SendToFailsWhenTransportIsClosed)
SendTo rejects calls when the transport socket is closed.
Member TEST_F (RpcTransportTests, SendToTransmitsDatagramToSuppliedEndpoint)
SendTo sends exactly the supplied datagram to the supplied destination endpoint.
Member TEST_F (RpcTransportTests, ReceiveThrowsSystemErrorWhenSocketIsCancelled)
Receive converts socket cancellation into std::system_error when the cancellation was not caused by the timeout timer.
Member TEST_F (RpcTransportTests, ReceiveThrowsOnTimeout)
Receive throws RPCTimeoutError when no datagram arrives before the timeout.
Member TEST_F (RpcTransportTests, ReceiveRejectsNegativeTimeout)
Receive rejects a negative timeout before starting asynchronous operations.
Member TEST_F (RpcTransportTests, ReceiveRejectsZeroTimeout)
Receive rejects a zero timeout before starting asynchronous operations.
Member TEST_F (RpcTransportTests, ReceiveFailsWhenTransportIsClosed)
Receive rejects calls when the transport socket is closed.
Member TEST_F (RpcTransportTests, ReceiveReturnsDatagramAndSenderEndpoint)
Receive returns the datagram and captures the sender endpoint in listener mode.
File test_gsdml_real_device.cpp
All tests are offline and do not require a physical PROFINET device.