using AsbCloudDb.Model; using AsbCloudInfrastructure.Services.DetectOperations; using AsbCloudInfrastructure.Services.DetectOperations.Detectors; using System; using Xunit; namespace AsbCloudInfrastructure.Tests.Services.DetectedOperations.Detectors; /// /// Тестирование автоопределения операции "Проработка" /// public class DetectorConditioningTests : DetectorFlashing { private readonly DetectorConditioning detector = new(); /// /// Операция, попадающая под автоопределение операции промывки /// private readonly DetectableTelemetry telemetry = new() { Pressure = 21, RotorSpeed = 9, WellDepth = 152, BitDepth = 151, DateTime = DateTimeOffset.Now, }; [Fact] public void DetectOperation_find_startOperation_notFind_endOperation() { //arrange var point0 = telemetry.Copy(); var point1 = telemetry.Copy(); point1.DateTime = point0.DateTime.AddMinutes(3); var telemetries = new[] { point0, point1 }; //act var isDetectOperation = detector.TryDetect(0, telemetries, 0, telemetries.Length - 1, null, out var result); //assert Assert.True(isDetectOperation); Assert.NotNull(result); Assert.Equal(WellOperationCategory.IdConditioning, result.Operation.IdCategory); Assert.Equal(IdReasonOfEnd_NotDetected, result.Operation.ExtraData["IdReasonOfEnd"]); } [Fact] public void DetectOperation_with_BitDepth_LE_150_is_fail() { //arrange var point0 = telemetry.Copy(); point0.BitDepth = 150; var point1 = telemetry.Copy(); var telemetries = new[] { point0, point1 }; //act var isDetectOperation = detector.TryDetect(0, telemetries, 0, telemetries.Length - 1, null, out var result); //assert Assert.False(isDetectOperation); Assert.NotNull(result); Assert.Equal(WellOperationCategory.IdConditioning, result.Operation.IdCategory); Assert.Equal(IdReasonOfEnd_NotDetected, result.Operation.ExtraData["IdReasonOfEnd"]); } [Fact] public void DetectOperations_Begin_And_End_by_Pressure_Less_10_is_success() { //arrange var point0 = telemetry.Copy(); var point1 = telemetry.Copy(); point1.Pressure = 9; var telemetries = new[] { point0, point1 }; //act var isDetectOperation = detector.TryDetect(0, telemetries, 0, telemetries.Length - 1, null, out var result); //assert Assert.False(isDetectOperation); Assert.NotNull(result); Assert.Equal(WellOperationCategory.IdConditioning, result.Operation.IdCategory); Assert.Equal(IdReasonOfEnd_PressureIsLo, result.Operation.ExtraData["IdReasonOfEnd"]); } }