Code Coverage Improvement TODO
Generated from GCOV coverage report (Jan 30 2025).
Overall: 38.9% line, 43.9% function, 24.5% branch coverage.
Excludes: parameterVersion() and clone() (covered by separate PR),
IdentifySampleFilter (already fixed), not_used/ algorithm stubs.
1. Algorithm Classes with 0% Coverage (Not Tested At All)
These are real algorithm implementations with zero test coverage. Each needs a
corresponding unit test that exercises the algorithm's operator()() through its
parent filter.
OrientationAnalysis Plugin
| File |
Lines |
Comment |
Filters/Algorithms/ComputeGBPDMetricBased.cpp |
739 |
Times out |
Filters/Algorithms/ComputeGBCDMetricBased.cpp |
612 |
Times out |
Filters/Algorithms/ComputeGBCD.cpp |
479 |
Times out |
Filters/Algorithms/ComputeTwinBoundaries.cpp |
398 |
Times out |
Filters/Algorithms/ComputeGBCDPoleFigure.cpp |
335 |
Times out |
Filters/Algorithms/ComputeFZQuaternions.cpp |
180 |
Unit test is being run MAJ. Not sure what it is or is not covering |
SimplnxCore Plugin
| File |
Lines |
Action |
Filters/Algorithms/ReadDeformKeyFileV12.cpp |
840 |
Add unit test for ReadDeformKeyFileV12Filter |
Filters/Algorithms/RegularGridSampleSurfaceMesh.cpp |
283 |
Add unit test for RegularGridSampleSurfaceMeshFilter |
Filters/Algorithms/WriteVtkStructuredPoints.cpp |
74 |
Add unit test for WriteVtkStructuredPointsFilter |
Filters/Algorithms/ComputeDifferencesMap.cpp |
61 |
Add unit test for ComputeDifferencesMapFilter |
Near-Zero Coverage
| File |
Lines |
Coverage |
Action |
Filters/Algorithms/ComputeArrayStatistics.cpp |
1,288 |
9.5% |
Expand unit test to exercise more code paths |
Core Utility
| File |
Lines |
Action |
simplnx/Utilities/ParallelData2DAlgorithm.cpp |
39 |
Add or expand test that uses 2D parallel algorithm |
2. Uncovered MakeErrorResult() Preflight Branches — Update Unit Tests
These are error-return branches in preflightImpl() that are never triggered by
any unit test. For each, add a test case that passes invalid inputs to trigger the
error path. Grouped by filter with line numbers and error codes.
AddBadDataFilter (4 uncovered)
AlignGeometriesFilter (1 uncovered)
ApplyTransformationToGeometryFilter (4 uncovered preflight + 4 other)
ApproximatePointCloudHullFilter (1 uncovered)
BadDataNeighborOrientationCheckFilter (9 uncovered)
CAxisSegmentFeaturesFilter (4 uncovered)
ChangeAngleRepresentationFilter (1 uncovered)
ComputeArrayHistogramFilter (2 uncovered)
ComputeArrayHistogramByFeatureFilter (2 uncovered)
ComputeAvgCAxesFilter (1 uncovered)
ComputeAvgOrientationsFilter (5 uncovered)
ComputeBiasedFeaturesFilter (1 uncovered)
ComputeCAxisLocationsFilter (1 uncovered)
ComputeDifferencesMapFilter (6 uncovered)
ComputeFeatureClusteringFilter (4 uncovered)
ComputeFeatureNeighborsFilter (1 uncovered)
ComputeFeaturePhasesBinaryFilter (1 uncovered)
ComputeFeaturePhasesFilter (2 uncovered)
ComputeFeatureReferenceCAxisMisorientationsFilter (1 uncovered)
ComputeFeatureReferenceMisorientationsFilter (1 uncovered)
ComputeFeatureSizesFilter (2 uncovered)
ComputeGBCDFilter (7 uncovered)
ComputeGBCDPoleFigureFilter (3 uncovered)
ComputeIPFColorsFilter (5 uncovered)
ComputeMisorientationsFilter (1 uncovered)
ComputeNeighborhoodsFilter (1 uncovered)
ComputeNumFeaturesFilter (1 uncovered)
ComputeQuaternionConjugateFilter (1 uncovered)
ComputeSchmidsFilter (1 uncovered)
ComputeShapesFilter (2 uncovered)
ComputeSurfaceFeaturesFilter (1 uncovered)
ComputeVertexToTriangleDistancesFilter (2 uncovered)
ComputeVolumeFractionsFilter (1 uncovered)
ConvertColorToGrayScaleFilter (2 uncovered)
ConvertDataFilter (2 uncovered)
ConvertOrientationsFilter (1 uncovered)
ConvertOrientationsToVertexGeometryFilter (4 uncovered)
ConvertQuaternionFilter (1 uncovered)
CopyFeatureArrayToElementArrayFilter (1 uncovered)
CreateColorMapFilter (2 uncovered)
CreateGeometryFilter (3 uncovered preflight + 6 other)
CropImageGeometryFilter (3 uncovered preflight + 6 other)
CropVertexGeometryFilter (1 uncovered)
EBSDSegmentFeaturesFilter (4 uncovered)
ErodeDilateBadDataFilter (1 uncovered)
ErodeDilateCoordinationNumberFilter (1 uncovered)
ExtractComponentAsArrayFilter (1 uncovered)
ExtractInternalSurfacesFromTriangleGeometryFilter (4 uncovered)
ExtractPipelineToFileFilter (1 uncovered)
ExtractVertexGeometryFilter (1 uncovered)
FillBadDataFilter (1 uncovered)
ITKImageWriterFilter (2 uncovered preflight + 4 other)
ITKImportImageStackFilter (1 uncovered preflight + 3 other)
ITKMhaFileReaderFilter (1 uncovered preflight + 1 other)
InitializeImageGeomCellDataFilter (1 uncovered)
IterativeClosestPointFilter (3 uncovered)
MergeTwinsFilter (5 uncovered)
NeighborOrientationCorrelationFilter (7 uncovered preflight + 3 other)
PadImageGeometryFilter (2 uncovered preflight + 1 other)
PartitionGeometryFilter (1 uncovered preflight + 12 other dataCheck)
QuickSurfaceMeshFilter (2 uncovered)
RandomizeFeatureIdsFilter (1 uncovered)
ReadAngDataFilter (1 uncovered preflight + 1 other)
ReadBinaryCTNorthstarFilter (2 uncovered)
ReadChannel5DataFilter (3 uncovered)
ReadCtfDataFilter (1 uncovered)
ReadDREAM3DFilter (3 uncovered)
ReadH5EbsdFilter (7 uncovered)
ReadHDF5DatasetFilter (1 uncovered)
ReadRawBinaryFilter (2 uncovered)
ReadVolumeGraphicsFileFilter (1 uncovered preflight + 5 other)
RemoveFlaggedEdgesFilter (3 uncovered preflight + 2 other)
RemoveFlaggedFeaturesFilter (2 uncovered)
RemoveFlaggedTrianglesFilter (2 uncovered preflight + 2 other)
RemoveFlaggedVerticesFilter (4 uncovered)
RequireMinNumNeighborsFilter (1 uncovered)
RequireMinimumSizeFeaturesFilter (5 uncovered)
RobustAutomaticThresholdFilter (1 uncovered)
RodriguesConvertorFilter (1 uncovered)
RotateSampleRefFrameFilter (1 uncovered)
ScalarSegmentFeaturesFilter (6 uncovered)
SplitDataArrayByComponentFilter (2 uncovered)
SplitDataArrayByTupleFilter (1 uncovered preflight + 4 other)
SurfaceNetsFilter (1 uncovered)
TriangleDihedralAngleFilter (2 uncovered)
WriteASCIIDataFilter (1 uncovered)
WriteBinaryDataFilter (1 uncovered)
WriteDREAM3DFilter (2 uncovered)
WriteFeatureDataCSVFilter (2 uncovered)
WriteGBCDGMTFileFilter (3 uncovered)
WriteGBCDTriangleDataFilter (1 uncovered)
WritePoleFigureFilter (1 uncovered)
WriteStatsGenOdfAngleFileFilter (1 uncovered)
WriteVtkStructuredPointsFilter (1 uncovered)
Summary Statistics
| Category |
Count |
| Algorithm classes at 0% coverage (real code) |
10 |
| Algorithm classes near-zero (< 10%) |
1 |
| Core utility at 0% |
1 |
| Filters with uncovered preflight error branches |
107 |
Total uncovered preflight MakeErrorResult() calls |
213 |
Total uncovered non-preflight MakeErrorResult() calls |
78 |
Suggested Priority Order
- High-value algorithm tests — ComputeArrayStatistics (1,288 lines at 9.5%),
ReadDeformKeyFileV12 (840 lines), ComputeGBPDMetricBased (739 lines),
ComputeGBCDMetricBased (612 lines)
- Filters with many uncovered branches — BadDataNeighborOrientationCheckFilter (9),
ApplyTransformationToGeometryFilter (8), ComputeGBCDFilter (7),
NeighborOrientationCorrelationFilter (7), ScalarSegmentFeaturesFilter (6),
ComputeDifferencesMapFilter (6), ReadH5EbsdFilter (7), MergeTwinsFilter (5),
ComputeAvgOrientationsFilter (5), ComputeIPFColorsFilter (5),
RequireMinimumSizeFeaturesFilter (5)
- Quick wins — Filters with only 1-2 uncovered branches where a single
additional test case with bad inputs would cover the error path
Code Coverage Improvement TODO
Generated from GCOV coverage report (Jan 30 2025).
Overall: 38.9% line, 43.9% function, 24.5% branch coverage.
1. Algorithm Classes with 0% Coverage (Not Tested At All)
These are real algorithm implementations with zero test coverage. Each needs a
corresponding unit test that exercises the algorithm's
operator()()through itsparent filter.
OrientationAnalysis Plugin
Filters/Algorithms/ComputeGBPDMetricBased.cppFilters/Algorithms/ComputeGBCDMetricBased.cppFilters/Algorithms/ComputeGBCD.cppFilters/Algorithms/ComputeTwinBoundaries.cppFilters/Algorithms/ComputeGBCDPoleFigure.cppFilters/Algorithms/ComputeFZQuaternions.cppSimplnxCore Plugin
Filters/Algorithms/ReadDeformKeyFileV12.cppFilters/Algorithms/RegularGridSampleSurfaceMesh.cppFilters/Algorithms/WriteVtkStructuredPoints.cppFilters/Algorithms/ComputeDifferencesMap.cppNear-Zero Coverage
Filters/Algorithms/ComputeArrayStatistics.cppCore Utility
simplnx/Utilities/ParallelData2DAlgorithm.cpp2. Uncovered
MakeErrorResult()Preflight Branches — Update Unit TestsThese are error-return branches in
preflightImpl()that are never triggered byany unit test. For each, add a test case that passes invalid inputs to trigger the
error path. Grouped by filter with line numbers and error codes.
AddBadDataFilter (4 uncovered)
-76234): No noise type selected — passboundaryNoise=false, poissonNoise=false-76235): Poisson volume fraction out of range — pass value > 1.0 or < 0.0-76236): Boundary volume fraction out of range — pass value > 1.0 or < 0.0-76237): Image geometry with null cell Attribute MatrixAlignGeometriesFilter (1 uncovered)
-1): Invalid alignment type — pass value other than 0 or 1ApplyTransformationToGeometryFilter (4 uncovered preflight + 4 other)
-82000): Null input geometry-82010): Invalid precomputed transformation matrix path-82002): Manual transformation matrix without exactly 4 rows-82006): Manual transformation matrix without exactly 4 columnsApproximatePointCloudHullFilter (1 uncovered)
-11001): Grid resolution with zero or negative valuesBadDataNeighborOrientationCheckFilter (9 uncovered)
CAxisSegmentFeaturesFilter (4 uncovered)
-655): Misorientation tolerance == 0-651): DataArrays with unequal tuple countsChangeAngleRepresentationFilter (1 uncovered)
-67001): Conversion type > 1ComputeArrayHistogramFilter (2 uncovered)
-57206): Mask array not Boolean or UInt8-57207): Mask/input array tuple count mismatchComputeArrayHistogramByFeatureFilter (2 uncovered)
-57206): Mask array not Boolean or UInt8-57207): Mask/input array tuple count mismatchComputeAvgCAxesFilter (1 uncovered)
-6400): DataArrays with unequal tuple countsComputeAvgOrientationsFilter (5 uncovered)
-651): DataArrays with unequal tuple countsComputeBiasedFeaturesFilter (1 uncovered)
-7460): DataArrays with unequal tuple countsComputeCAxisLocationsFilter (1 uncovered)
-3520): DataArrays with unequal tuple countsComputeDifferencesMapFilter (6 uncovered)
-90001): Selected arrays of different types-90002): Selected DataPath not pointing to a DataArrayComputeFeatureClusteringFilter (4 uncovered)
-14310): Number of bins <= 0-14311): FeaturePhases wrong type-14312): Centroids wrong type-14314): DataArrays with unequal tuple countsComputeFeatureNeighborsFilter (1 uncovered)
-24500): DataArrays with unequal tuple countsComputeFeaturePhasesBinaryFilter (1 uncovered)
-53800): DataArrays with unequal tuple countsComputeFeaturePhasesFilter (2 uncovered)
-4630): Missing feature ids array-4631): Missing cell features Attribute MatrixComputeFeatureReferenceCAxisMisorientationsFilter (1 uncovered)
-9800): DataArrays with unequal tuple countsComputeFeatureReferenceMisorientationsFilter (1 uncovered)
-94520): Missing cell feature Attribute MatrixComputeFeatureSizesFilter (2 uncovered)
ComputeGBCDFilter (7 uncovered)
-74350): Missing euler angles array-74351): Missing phases array-74352): Missing crystal structures array-74353): Missing triangle geometry-74354): Missing face labels array-74355): Missing face normals array-74356): Missing face areas arrayComputeGBCDPoleFigureFilter (3 uncovered)
-34640): Missing crystal structures array-34641): Missing GBCD array-34642): Phase index larger than number of EnsemblesComputeIPFColorsFilter (5 uncovered)
-651): DataArrays with unequal tuple countsComputeMisorientationsFilter (1 uncovered)
-651): DataArrays with unequal tuple countsComputeNeighborhoodsFilter (1 uncovered)
-5730): DataArrays with unequal tuple countsComputeNumFeaturesFilter (1 uncovered)
-47630): Missing ensemble Attribute MatrixComputeQuaternionConjugateFilter (1 uncovered)
ComputeSchmidsFilter (1 uncovered)
-13500): Slip plane and slip direction must be normalComputeShapesFilter (2 uncovered)
-12801): Missing cell feature Attribute Matrix-12802): Centroids array wrong typeComputeSurfaceFeaturesFilter (1 uncovered)
-1000): Image geometry not 3D or 2DComputeVertexToTriangleDistancesFilter (2 uncovered)
-4530): DataPath not a valid VertexGeometry-4531): DataPath not a valid TriangleGeometryComputeVolumeFractionsFilter (1 uncovered)
-47630): Missing feature Attribute MatrixConvertColorToGrayScaleFilter (2 uncovered)
-10701): Invalid color channel selection (not 0, 1, or 2)-10700): Input data array does not existConvertDataFilter (2 uncovered)
-15201): Missing input data array-1): FromSIMPL JSON conversion errorConvertOrientationsFilter (1 uncovered)
ConvertOrientationsToVertexGeometryFilter (4 uncovered)
-1001): Input representation type not 0-6-1002): Input component shape with multiple dimensions-1003): Array validation failure-1004): Array tuple count mismatchConvertQuaternionFilter (1 uncovered)
CopyFeatureArrayToElementArrayFilter (1 uncovered)
-3020): DataArrays with unequal tuple countsCreateColorMapFilter (2 uncovered)
-651): DataArrays with unequal tuple countsCreateGeometryFilter (3 uncovered preflight + 6 other)
-9840): Missing vertex list-9841): Missing quadrilateral list-9842): Missing quadrilateral list (second check)CropImageGeometryFilter (3 uncovered preflight + 6 other)
-4010): No dimension selected to crop-950): Crop bounds validation X-951): Crop bounds validation Y-952): Crop bounds validation ZCropVertexGeometryFilter (1 uncovered)
-58556): Missing vertex data AttributeMatrixEBSDSegmentFeaturesFilter (4 uncovered)
-655): Misorientation tolerance == 0-651): DataArrays with unequal tuple countsErodeDilateBadDataFilter (1 uncovered)
-16700): Operation selection not 0 (Dilate) or 1 (Erode)ErodeDilateCoordinationNumberFilter (1 uncovered)
-16800): Coordination number not between 0 and 6ExtractComponentAsArrayFilter (1 uncovered)
-45630): Array component count must be > 1ExtractInternalSurfacesFromTriangleGeometryFilter (4 uncovered)
ExtractPipelineToFileFilter (1 uncovered)
-2582): Error opening output pathExtractVertexGeometryFilter (1 uncovered)
FillBadDataFilter (1 uncovered)
-16500): Minimum allowed defect size < 1ITKImageWriterFilter (2 uncovered preflight + 4 other)
-25600): Image array dimensions must match ImageGeometry-25601): Fill character should be a single valueITKImportImageStackFilter (1 uncovered preflight + 3 other)
-4): Unsupported pixel componentITKMhaFileReaderFilter (1 uncovered preflight + 1 other)
-5001): Error applying transformation — unable to instantiate filterInitializeImageGeomCellDataFilter (1 uncovered)
-3550): No data arrays selectedIterativeClosestPointFilter (3 uncovered)
MergeTwinsFilter (5 uncovered)
-6874600): Missing contiguous neighbor list (Int32)-6874602): Missing feature ids array (Int32)-6874603): Missing phases array (Int32)-6874602): Missing average quaternions array (Float32)-6874602): Missing crystal structures array (UInt32)NeighborOrientationCorrelationFilter (7 uncovered preflight + 3 other)
PadImageGeometryFilter (2 uncovered preflight + 1 other)
-4010): No dimension selected-4115): Null Image geometry pointerPartitionGeometryFilter (1 uncovered preflight + 12 other dataCheck)
-3010): Attribute matrix tuple count mismatch with geometryQuickSurfaceMeshFilter (2 uncovered)
-76530): Missing grid geometry-76531): DataArray wrong tuple count for element data copyRandomizeFeatureIdsFilter (1 uncovered)
-82640): Attribute Matrix tuple count less than max FeatureIdReadAngDataFilter (1 uncovered preflight + 1 other)
ReadBinaryCTNorthstarFilter (2 uncovered)
-38701): Input header file does not existReadChannel5DataFilter (3 uncovered)
-66500): Matching .crc file does not exist-66501): std::exception checking file existenceReadCtfDataFilter (1 uncovered)
ReadDREAM3DFilter (3 uncovered)
ReadH5EbsdFilter (7 uncovered)
-67500): Could not read input fileReadHDF5DatasetFilter (1 uncovered)
-21000): Error reading HDF5 fileReadRawBinaryFilter (2 uncovered)
ReadVolumeGraphicsFileFilter (1 uncovered preflight + 5 other)
RemoveFlaggedEdgesFilter (3 uncovered preflight + 2 other)
-5651): Missing edge data attribute matrix-5652): Missing edge data attribute matrix (second geom)-5653): Missing vertex data attribute matrixRemoveFlaggedFeaturesFilter (2 uncovered)
-9890): Missing Feature Ids array-9891): Missing Flagged Features arrayRemoveFlaggedTrianglesFilter (2 uncovered preflight + 2 other)
-5251): Missing face data attribute matrix-5252): Missing face data attribute matrix (second check)RemoveFlaggedVerticesFilter (4 uncovered)
-5751): Missing cell data attribute matrix-54070): Array validation errorRequireMinNumNeighborsFilter (1 uncovered)
RequireMinimumSizeFeaturesFilter (5 uncovered)
-5555): Validation errorRobustAutomaticThresholdFilter (1 uncovered)
RodriguesConvertorFilter (1 uncovered)
RotateSampleRefFrameFilter (1 uncovered)
-5951): Missing cell data attribute matrixScalarSegmentFeaturesFilter (6 uncovered)
-651): DataArrays with unequal tuple countsSplitDataArrayByComponentFilter (2 uncovered)
-65400): Missing input data array-65401): Array must have > 1 componentSplitDataArrayByTupleFilter (1 uncovered preflight + 4 other)
SurfaceNetsFilter (1 uncovered)
-76530): Missing grid geometryTriangleDihedralAngleFilter (2 uncovered)
-9860): Missing Triangle Geometry-9861): Missing face data Attribute MatrixWriteASCIIDataFilter (1 uncovered)
-11021): Unable to create output fileWriteBinaryDataFilter (1 uncovered)
-23430): OutputPath must be a directoryWriteDREAM3DFilter (2 uncovered)
WriteFeatureDataCSVFilter (2 uncovered)
-64641): Error creating output file (parent path)-64640): Error opening pathWriteGBCDGMTFileFilter (3 uncovered)
-96710): Missing crystal structures array-96711): Missing GBCD array-96712): Phase index larger than number of EnsemblesWriteGBCDTriangleDataFilter (1 uncovered)
-48320): DataArrays with unequal tuple countsWritePoleFigureFilter (1 uncovered)
-680000): MaterialNames not a StringArrayWriteStatsGenOdfAngleFileFilter (1 uncovered)
-9402): DataArrays with unequal tuple countsWriteVtkStructuredPointsFilter (1 uncovered)
-2071): DataArrays with unequal tuple countsSummary Statistics
MakeErrorResult()callsMakeErrorResult()callsSuggested Priority Order
ReadDeformKeyFileV12 (840 lines), ComputeGBPDMetricBased (739 lines),
ComputeGBCDMetricBased (612 lines)
ApplyTransformationToGeometryFilter (8), ComputeGBCDFilter (7),
NeighborOrientationCorrelationFilter (7), ScalarSegmentFeaturesFilter (6),
ComputeDifferencesMapFilter (6), ReadH5EbsdFilter (7), MergeTwinsFilter (5),
ComputeAvgOrientationsFilter (5), ComputeIPFColorsFilter (5),
RequireMinimumSizeFeaturesFilter (5)
additional test case with bad inputs would cover the error path