Files
DP44/docs/ai/DataPRO/SensorDB.Test.md
2026-04-17 14:55:32 -04:00

4.2 KiB

source_files, generated_at, model, schema_version, sha256
source_files generated_at model schema_version sha256
DataPRO/SensorDB.Test/SensorDataShould.cs
DataPRO/SensorDB.Test/IsoCodeShould.cs
DataPRO/SensorDB.Test/SensorCalibrationShould.cs
2026-04-17T16:11:56.447984+00:00 zai-org/GLM-5-FP8 1 f407d582ab87c155

SensorDB.Test

Purpose

This module serves as the unit test suite for the DTS.SensorDB namespace. It validates the business logic of sensor data handling, calibration compatibility, and ISO code formatting. It uses NUnit as the test framework and NSubstitute for mocking dependencies.

Public Interface

Class: SensorDataShould

  • void GetInitialEUValue_ShouldThrowException(): Test method verifying that SensorData.GetInitialEUValue throws a NullReferenceException with a specific message when no calibration record matches the provided excitation voltage.

Class: IsoCodeShould

  • void TestObject_ShouldReturnQuestionMark_WhenSetToNull(): Test method verifying that the IsoCode.TestObject property normalizes null inputs to "?".
  • void TestObject_ShouldReturnQuestionMark_WhenSetToEmpty(): Test method verifying that the IsoCode.TestObject property normalizes empty string inputs to "?".
  • void StringRepresentation_ShouldReturnISOCode(): Test method verifying that IsoCode.StringRepresentation returns the full code when the object is initialized with a full string.
  • void StringRepresentation_ShouldReturnISOCode_WithAppendedQuestionMark(): Test method verifying that IsoCode.StringRepresentation pads shorter codes with trailing question marks (e.g., "??RIBS0200HF" becomes "??RIBS0200HF????").

Class: SensorCalibrationShould

  • void IsCompatibleWithIEPE_ShouldReturnFalse_WhenSensorProportionalIsTrue(): Verifies SensorCalibration.IsCompatibleWithIEPE() returns false if IsProportional is true.
  • void IsCompatibleWithIEPE_ShouldReturnFalse_WhenSensorIsNonLinear(): Verifies SensorCalibration.IsCompatibleWithIEPE() returns false if NonLinear is true.
  • void IsCompatibleWithIEPE_ShouldReturnTrue(): Verifies SensorCalibration.IsCompatibleWithIEPE() returns true if NonLinear and IsProportional are false.
  • void ToNonLinearDisplayString_ShouldReturnEmpty_WhenNonLinearIsFalse(): Verifies SensorCalibration.ToNonLinearDisplayString(string, bool) returns empty string if NonLinear is false.
  • void ToNonLinearDisplayString_ShouldReturnEmpty_WhenNonLinearFormatIsNull(): Verifies SensorCalibration.ToNonLinearDisplayString(string, bool) returns empty string if the format argument is null.
  • void CompareTo_ShouldReturn1_ComparedWithNull(): Verifies SensorCalibration.CompareTo(object) returns 1 when comparing against null.
  • void CompareTo_ShouldReturn0_WhenObjectsHaveSameCalibrationDates(): Verifies SensorCalibration.CompareTo(object) returns 0 when CalibrationDate properties are equal.
  • void CompareTo_ShouldReturnNegative_WhenObjectsHaveDifferentCalibrationDates(): Verifies SensorCalibration.CompareTo(object) returns non-zero for different dates.

Invariants

  • IsoCode Normalization: The IsoCode.TestObject property appears to enforce a non-empty constraint, converting null or empty strings to "?".
  • ISO String Length: The IsoCode.StringRepresentation implies a fixed-length format where missing characters are padded with "?".
  • IEPE Compatibility: A sensor is compatible with IEPE only if it is neither NonLinear nor IsProportional.
  • Comparison Logic: SensorCalibration objects are compared based on their CalibrationDate property.

Dependencies

  • Internal Dependencies: DTS.SensorDB, DTS.Common.Interface.Sensors, DTS.Common.Enums, DTS.Common.Classes.Sensors, DTS.Common.Enums.Sensors.
  • External Packages: NUnit.Framework, NSubstitute.

Gotchas

  • Exception Type Choice: The test GetInitialEUValue_ShouldThrowException expects a NullReferenceException for a "record not found" scenario. Typically, a specific domain exception or KeyNotFoundException would be preferred over a NullReferenceException, which usually indicates a bug (null dereference). The test explicitly checks for a custom message, suggesting the code might be throwing this exception deliberately, which is unusual.