PROFINET IO Controller Stack 1.0.0
Modern C++ implementation of a PROFINET IO Controller stack
Loading...
Searching...
No Matches
test_diagnosisMore.cpp File Reference

Additional unit tests for PROFINET diagnosis helpers. More...

#include <gtest/gtest.h>
#include <cstdint>
#include <vector>
#include "profinet/diagnosis.h"
#include "profinet/wire.h"
+ Include dependency graph for test_diagnosisMore.cpp:

Go to the source code of this file.

Functions

 TEST_F (DiagnosisMoreTests, ChannelTypeNamesCoverAllValues)
 
 TEST_F (DiagnosisMoreTests, SpecifierNamesCoverAllValues)
 
 TEST_F (DiagnosisMoreTests, DirectionNamesCoverAllValues)
 
 TEST_F (DiagnosisMoreTests, ChannelPropertiesFromUint16RetainsRawValue)
 
 TEST_F (DiagnosisMoreTests, AnyChannelDiagnosisUsiClassification)
 
 TEST_F (DiagnosisMoreTests, DiagnosisDataMaintenanceFlagsAreFalseWhenClear)
 
 TEST_F (DiagnosisMoreTests, DiagnosisDataDetectsMaintenanceDemanded)
 
 TEST_F (DiagnosisMoreTests, DecodeChannelErrorTypeCoversAdditionalRanges)
 
 TEST_F (DiagnosisMoreTests, DecodeExtChannelErrorTypeHandlesUnknownValues)
 
 TEST_F (DiagnosisMoreTests, ParseDiagnosisBlockAcceptsUsiZero)
 
 TEST_F (DiagnosisMoreTests, ParseDiagnosisBlockStoresExtendedDiagnosis)
 
 TEST_F (DiagnosisMoreTests, ParseDiagnosisBlockStoresQualifiedDiagnosis)
 
 TEST_F (DiagnosisMoreTests, ParseDiagnosisBlockStopsOnTruncatedEntry)
 
 TEST_F (DiagnosisMoreTests, ParseDiagnosisBlockStopsOnZeroEntry)
 
 TEST_F (DiagnosisMoreTests, ParseDiagnosisBlockAcceptsAlternativeBlockTypes)
 
 TEST_F (DiagnosisMoreTests, ParseDiagnosisBlockAcceptsRawEntry)
 
 TEST_F (DiagnosisMoreTests, ParseDiagnosisSimpleStopsOnIncompleteEntry)
 
 TEST_F (DiagnosisMoreTests, ParseDiagnosisSimplePreservesLocation)
 
 TEST_F (DiagnosisMoreTests, ChannelPropertiesFromUint16CoversAllValidFields)
 
 TEST_F (DiagnosisMoreTests, ChannelPropertiesFromUint16UsesFallbacks)
 
 TEST_F (DiagnosisMoreTests, ChannelDiagnosisDetectsSubmoduleLevel)
 
 TEST_F (DiagnosisMoreTests, DiagnosisDataGetByChannelFiltersAllMatchingEntries)
 
 TEST_F (DiagnosisMoreTests, DiagnosisDataHasErrorsReflectsEntries)
 
 TEST_F (DiagnosisMoreTests, DecodeChannelErrorTypeCoversAllFallbackRanges)
 
 TEST_F (DiagnosisMoreTests, DecodeExtChannelErrorTypeCoversFallbackRanges)
 
 TEST_F (DiagnosisMoreTests, ParseDiagnosisBlockConsumesLocationHeader)
 
 TEST_F (DiagnosisMoreTests, ParseDiagnosisBlockHandlesUnknownUsi)
 
 TEST_F (DiagnosisMoreTests, ParseDiagnosisBlockStopsOnTruncatedExtendedDiagnosis)
 
 TEST_F (DiagnosisMoreTests, ParseDiagnosisBlockStopsOnTruncatedQualifiedDiagnosis)
 
 TEST_F (DiagnosisMoreTests, ParseDiagnosisBlockRejectsTooShortInput)
 
 TEST_F (DiagnosisMoreTests, ParseDiagnosisSimpleRejectsTooShortInput)
 

Detailed Description

Additional unit tests for PROFINET diagnosis helpers.

Covers enum-name fallbacks, diagnosis-entry variants, malformed records, all maintenance flags, location handling, and raw/simple diagnosis parsing branches not exercised by the existing diagnosis tests.

Definition in file test_diagnosisMore.cpp.

Function Documentation

◆ TEST_F() [1/31]

TEST_F ( DiagnosisMoreTests  ,
AnyChannelDiagnosisUsiClassification   
)
Test:
Verify standard and qualified diagnosis entries are distinguished by USI.

Definition at line 187 of file test_diagnosisMore.cpp.

References profinet::diagnosis::AnyChannelDiagnosis::IsChannelDiagnosis(), profinet::diagnosis::AnyChannelDiagnosis::IsExtChannelDiagnosis(), profinet::diagnosis::AnyChannelDiagnosis::IsQualifiedChannelDiagnosis(), and profinet::diagnosis::AnyChannelDiagnosis::usi.

+ Here is the call graph for this function:

◆ TEST_F() [2/31]

TEST_F ( DiagnosisMoreTests  ,
ChannelDiagnosisDetectsSubmoduleLevel   
)
Test:
Verify ChannelDiagnosis detects submodule-level channel number 0x8000.

Definition at line 429 of file test_diagnosisMore.cpp.

References profinet::diagnosis::ChannelDiagnosis::channelNumber, and profinet::diagnosis::ChannelDiagnosis::IsSubmoduleLevel().

+ Here is the call graph for this function:

◆ TEST_F() [3/31]

TEST_F ( DiagnosisMoreTests  ,
ChannelPropertiesFromUint16CoversAllValidFields   
)
Test:
Verify ChannelProperties::FromUint16 decodes every valid field encoding.

Definition at line 382 of file test_diagnosisMore.cpp.

References profinet::diagnosis::ChannelProperties::FromUint16().

+ Here is the call graph for this function:

◆ TEST_F() [4/31]

TEST_F ( DiagnosisMoreTests  ,
ChannelPropertiesFromUint16RetainsRawValue   
)
Test:
Verify ChannelProperties::FromUint16 retains raw input and decodes defaults.

Definition at line 175 of file test_diagnosisMore.cpp.

References profinet::diagnosis::ChannelProperties::FromUint16().

+ Here is the call graph for this function:

◆ TEST_F() [5/31]

TEST_F ( DiagnosisMoreTests  ,
ChannelPropertiesFromUint16UsesFallbacks   
)
Test:
Verify invalid ChannelProperties encodings fall back to their documented defaults.

Definition at line 419 of file test_diagnosisMore.cpp.

References profinet::diagnosis::ChannelProperties::FromUint16().

+ Here is the call graph for this function:

◆ TEST_F() [6/31]

TEST_F ( DiagnosisMoreTests  ,
ChannelTypeNamesCoverAllValues   
)
Test:
Verify ChannelProperties names cover all legal channel types.

Definition at line 112 of file test_diagnosisMore.cpp.

References profinet::diagnosis::ChannelProperties::ChannelTypeName(), and profinet::diagnosis::ChannelProperties::channelTypeValue.

+ Here is the call graph for this function:

◆ TEST_F() [7/31]

TEST_F ( DiagnosisMoreTests  ,
DecodeChannelErrorTypeCoversAdditionalRanges   
)
Test:
Verify DecodeChannelErrorType covers additional well-known and fallback ranges.

Definition at line 235 of file test_diagnosisMore.cpp.

References profinet::diagnosis::DecodeChannelErrorType().

+ Here is the call graph for this function:

◆ TEST_F() [8/31]

TEST_F ( DiagnosisMoreTests  ,
DecodeChannelErrorTypeCoversAllFallbackRanges   
)
Test:
Verify DecodeChannelErrorType covers every fallback range.

Definition at line 478 of file test_diagnosisMore.cpp.

References profinet::diagnosis::DecodeChannelErrorType().

+ Here is the call graph for this function:

◆ TEST_F() [9/31]

TEST_F ( DiagnosisMoreTests  ,
DecodeExtChannelErrorTypeCoversFallbackRanges   
)
Test:
Verify DecodeExtChannelErrorType covers general and fallback ranges.

Definition at line 502 of file test_diagnosisMore.cpp.

References profinet::diagnosis::DecodeExtChannelErrorType().

+ Here is the call graph for this function:

◆ TEST_F() [10/31]

TEST_F ( DiagnosisMoreTests  ,
DecodeExtChannelErrorTypeHandlesUnknownValues   
)
Test:
Verify DecodeExtChannelErrorType falls back for an unknown extended value.

Definition at line 243 of file test_diagnosisMore.cpp.

References profinet::diagnosis::DecodeExtChannelErrorType().

+ Here is the call graph for this function:

◆ TEST_F() [11/31]

TEST_F ( DiagnosisMoreTests  ,
DiagnosisDataDetectsMaintenanceDemanded   
)
Test:
Verify DiagnosisData detects a maintenance-demanded flag.

Definition at line 222 of file test_diagnosisMore.cpp.

References profinet::diagnosis::AnyChannelDiagnosis::base, profinet::diagnosis::DiagnosisData::entries, profinet::diagnosis::DiagnosisData::HasMaintenanceDemanded(), profinet::diagnosis::DiagnosisData::HasMaintenanceRequired(), profinet::diagnosis::ChannelProperties::naintenanceDemanded, and profinet::diagnosis::ChannelDiagnosis::properties.

+ Here is the call graph for this function:

◆ TEST_F() [12/31]

TEST_F ( DiagnosisMoreTests  ,
DiagnosisDataGetByChannelFiltersAllMatchingEntries   
)
Test:
Verify DiagnosisData::GetByChannel returns every matching entry and none for misses.

Definition at line 441 of file test_diagnosisMore.cpp.

References profinet::diagnosis::AnyChannelDiagnosis::base, profinet::diagnosis::ChannelDiagnosis::channelNumber, profinet::diagnosis::DiagnosisData::entries, and profinet::diagnosis::DiagnosisData::GetByChannel().

+ Here is the call graph for this function:

◆ TEST_F() [13/31]

TEST_F ( DiagnosisMoreTests  ,
DiagnosisDataHasErrorsReflectsEntries   
)
Test:
Verify DiagnosisData::HasErrors distinguishes empty and populated diagnosis data.

Definition at line 466 of file test_diagnosisMore.cpp.

References profinet::diagnosis::DiagnosisData::entries, and profinet::diagnosis::DiagnosisData::HasErrors().

+ Here is the call graph for this function:

◆ TEST_F() [14/31]

TEST_F ( DiagnosisMoreTests  ,
DiagnosisDataMaintenanceFlagsAreFalseWhenClear   
)
Test:
Verify DiagnosisData reports no maintenance flags when entries are clear.

Definition at line 208 of file test_diagnosisMore.cpp.

References profinet::diagnosis::AnyChannelDiagnosis::base, profinet::diagnosis::DiagnosisData::entries, profinet::diagnosis::DiagnosisData::HasMaintenanceDemanded(), profinet::diagnosis::DiagnosisData::HasMaintenanceRequired(), profinet::diagnosis::ChannelProperties::maintenanceRequired, profinet::diagnosis::ChannelProperties::naintenanceDemanded, and profinet::diagnosis::ChannelDiagnosis::properties.

+ Here is the call graph for this function:

◆ TEST_F() [15/31]

TEST_F ( DiagnosisMoreTests  ,
DirectionNamesCoverAllValues   
)
Test:
Verify ChannelProperties names cover all legal channel directions.

Definition at line 154 of file test_diagnosisMore.cpp.

References profinet::diagnosis::ChannelProperties::direction, and profinet::diagnosis::ChannelProperties::DirectionName().

+ Here is the call graph for this function:

◆ TEST_F() [16/31]

TEST_F ( DiagnosisMoreTests  ,
ParseDiagnosisBlockAcceptsAlternativeBlockTypes   
)
Test:
Verify ParseDiagnosisBlock accepts all documented diagnosis block types.

Definition at line 321 of file test_diagnosisMore.cpp.

References profinet::diagnosis::ParseDiagnosisBlock().

+ Here is the call graph for this function:

◆ TEST_F() [17/31]

TEST_F ( DiagnosisMoreTests  ,
ParseDiagnosisBlockAcceptsRawEntry   
)
Test:
Verify ParseDiagnosisBlock handles raw diagnosis data without a block header.

Definition at line 337 of file test_diagnosisMore.cpp.

References profinet::diagnosis::ParseDiagnosisBlock().

+ Here is the call graph for this function:

◆ TEST_F() [18/31]

TEST_F ( DiagnosisMoreTests  ,
ParseDiagnosisBlockAcceptsUsiZero   
)
Test:
Verify ParseDiagnosisBlock parses a standard entry with USI zero.

Definition at line 251 of file test_diagnosisMore.cpp.

References profinet::diagnosis::ParseDiagnosisBlock().

+ Here is the call graph for this function:

◆ TEST_F() [19/31]

TEST_F ( DiagnosisMoreTests  ,
ParseDiagnosisBlockConsumesLocationHeader   
)
Test:
Verify ParseDiagnosisBlock consumes and applies an API/slot/subslot location header.

Definition at line 521 of file test_diagnosisMore.cpp.

References profinet::diagnosis::ParseDiagnosisBlock(), profinet::wire::PutU16(), and profinet::wire::PutU32().

+ Here is the call graph for this function:

◆ TEST_F() [20/31]

TEST_F ( DiagnosisMoreTests  ,
ParseDiagnosisBlockHandlesUnknownUsi   
)
Test:
Verify ParseDiagnosisBlock treats an unknown USI as a minimal channel diagnosis.

Definition at line 541 of file test_diagnosisMore.cpp.

References profinet::diagnosis::ParseDiagnosisBlock().

+ Here is the call graph for this function:

◆ TEST_F() [21/31]

TEST_F ( DiagnosisMoreTests  ,
ParseDiagnosisBlockRejectsTooShortInput   
)
Test:
Verify ParseDiagnosisBlock returns empty data for a buffer shorter than a block header.

Definition at line 590 of file test_diagnosisMore.cpp.

References profinet::diagnosis::ParseDiagnosisBlock().

+ Here is the call graph for this function:

◆ TEST_F() [22/31]

TEST_F ( DiagnosisMoreTests  ,
ParseDiagnosisBlockStopsOnTruncatedEntry   
)
Test:
Verify ParseDiagnosisBlock rejects a truncated standard diagnosis entry.

Definition at line 299 of file test_diagnosisMore.cpp.

References profinet::diagnosis::ParseDiagnosisBlock().

+ Here is the call graph for this function:

◆ TEST_F() [23/31]

TEST_F ( DiagnosisMoreTests  ,
ParseDiagnosisBlockStopsOnTruncatedExtendedDiagnosis   
)
Test:
Verify ParseDiagnosisBlock stops when an extended diagnosis payload is truncated.

Definition at line 554 of file test_diagnosisMore.cpp.

References profinet::diagnosis::ParseDiagnosisBlock(), and profinet::wire::PutU16().

+ Here is the call graph for this function:

◆ TEST_F() [24/31]

TEST_F ( DiagnosisMoreTests  ,
ParseDiagnosisBlockStopsOnTruncatedQualifiedDiagnosis   
)
Test:
Verify ParseDiagnosisBlock stops when a qualified diagnosis payload is truncated.

Definition at line 571 of file test_diagnosisMore.cpp.

References profinet::diagnosis::ParseDiagnosisBlock(), profinet::wire::PutU16(), and profinet::wire::PutU32().

+ Here is the call graph for this function:

◆ TEST_F() [25/31]

TEST_F ( DiagnosisMoreTests  ,
ParseDiagnosisBlockStopsOnZeroEntry   
)
Test:
Verify ParseDiagnosisBlock ignores a zero-filled entry.

Definition at line 310 of file test_diagnosisMore.cpp.

References profinet::diagnosis::ParseDiagnosisBlock().

+ Here is the call graph for this function:

◆ TEST_F() [26/31]

TEST_F ( DiagnosisMoreTests  ,
ParseDiagnosisBlockStoresExtendedDiagnosis   
)
Test:
Verify ParseDiagnosisBlock stores extended diagnosis details.

Definition at line 267 of file test_diagnosisMore.cpp.

References profinet::diagnosis::ParseDiagnosisBlock().

+ Here is the call graph for this function:

◆ TEST_F() [27/31]

TEST_F ( DiagnosisMoreTests  ,
ParseDiagnosisBlockStoresQualifiedDiagnosis   
)
Test:
Verify ParseDiagnosisBlock stores qualified diagnosis details.

Definition at line 283 of file test_diagnosisMore.cpp.

References profinet::diagnosis::ParseDiagnosisBlock().

+ Here is the call graph for this function:

◆ TEST_F() [28/31]

TEST_F ( DiagnosisMoreTests  ,
ParseDiagnosisSimplePreservesLocation   
)
Test:
Verify ParseDiagnosisSimple handles an all-zero sentinel after valid data.

Definition at line 365 of file test_diagnosisMore.cpp.

References profinet::diagnosis::ParseDiagnosisSimple(), and profinet::wire::PutU16().

+ Here is the call graph for this function:

◆ TEST_F() [29/31]

TEST_F ( DiagnosisMoreTests  ,
ParseDiagnosisSimpleRejectsTooShortInput   
)
Test:
Verify ParseDiagnosisSimple returns empty data when no six-byte header is available.

Definition at line 597 of file test_diagnosisMore.cpp.

References profinet::diagnosis::ParseDiagnosisSimple().

+ Here is the call graph for this function:

◆ TEST_F() [30/31]

TEST_F ( DiagnosisMoreTests  ,
ParseDiagnosisSimpleStopsOnIncompleteEntry   
)
Test:
Verify ParseDiagnosisSimple handles an incomplete trailing record.

Definition at line 349 of file test_diagnosisMore.cpp.

References profinet::diagnosis::ParseDiagnosisSimple(), and profinet::wire::PutU16().

+ Here is the call graph for this function:

◆ TEST_F() [31/31]

TEST_F ( DiagnosisMoreTests  ,
SpecifierNamesCoverAllValues   
)
Test:
Verify ChannelProperties names cover all legal specifiers.

Definition at line 133 of file test_diagnosisMore.cpp.

References profinet::diagnosis::ChannelProperties::specifier, and profinet::diagnosis::ChannelProperties::SpecifierName().

+ Here is the call graph for this function: