public void Test_GetCacheFingerPrint_ExcludesSurveyedSurfaces_HasMachineDirectionFilter() { var filter = CombinedFilter.MakeFilterWith(x => x.AttributeFilter.HasMachineDirectionFilter = true); Assert.True(filter.AttributeFilter.SpatialCacheFingerprint().Contains(ExcludeSurveyedSurfacesID, StringComparison.OrdinalIgnoreCase), "Fingerprint does not contain ExcludeSurveyedSurfaces ID"); }
public void Test_GetCacheFingerPrint_RestrictFilteredDataToCompactorsOnly_NotPresent() { var filter = CombinedFilter.MakeFilterWith(x => x.AttributeFilter.HasCompactionMachinesOnlyFilter = false); Assert.False(filter.AttributeFilter.SpatialCacheFingerprint().Contains("CMO", StringComparison.OrdinalIgnoreCase), "Fingerprint contains compactor restriction ID"); }
public void Test_ElevationSubGridRequests_RequestElevationSubGrids_SingleCell_QueryWithTimeRangeFilter_IncludesOnlySecondPass() { var siteModel = Utilities.CreateSiteModelWithSingleCellWithMinimumElevationPasses(BASE_TIME, TIME_INCREMENT_SECONDS, BASE_HEIGHT, HEIGHT_DECREMENT, PASSES_IN_DECREMENTING_ELEVATION_LIST); // Create a time range filter than bounds he time of the second added cell pass by 1 second before and after var filter = CombinedFilter.MakeFilterWith(x => { x.AttributeFilter.HasTimeFilter = true; x.AttributeFilter.StartTime = BASE_TIME.AddSeconds(TIME_INCREMENT_SECONDS).AddSeconds(-1); x.AttributeFilter.EndTime = BASE_TIME.AddSeconds(TIME_INCREMENT_SECONDS).AddSeconds(1); }); var requestors = CreateRequestorsForSingleCellTesting(siteModel, GridDataType.Height, new[] { filter }); var subGridHeight = RequestAllSubGridsForSingleCellTesting <IClientHeightLeafSubGrid>(siteModel, requestors).First(); // Check cell has has second height selected // Assumption: Elevation mode filtering has no impact on this scenario subGridHeight.Cells[0, 0].Should().Be(MAXIMUM_HEIGHT + HEIGHT_DECREMENT); var requestors2 = CreateRequestorsForSingleCellTesting(siteModel, GridDataType.PassCount, new[] { filter }); var subGridPassCount = RequestAllSubGridsForSingleCellTesting <IClientPassCountLeafSubGrid>(siteModel, requestors2).First(); // Check only a single cell was selected as a result of the time range filter subGridPassCount.Cells[0, 0].MeasuredPassCount.Should().Be(1); }
public void Test_GetCacheFingerPrint_IncludeEarliestCellPass_NotPresent() { var filter = CombinedFilter.MakeFilterWith(x => x.AttributeFilter.ReturnEarliestFilteredCellPass = false); Assert.True(filter.AttributeFilter.SpatialCacheFingerprint().Contains("REFCP:0", StringComparison.OrdinalIgnoreCase), "Fingerprint contains earliest filtered cell pass ID"); }
public void Test_GetCacheFingerPrint_MachineFilter_Present() { Guid Machine1Guid = Guid.NewGuid(); Guid Machine2Guid = Guid.NewGuid(); var siteModel = new SiteModel(StorageMutability.Immutable); siteModel.Machines.Add(new Machine { ID = Machine1Guid, InternalSiteModelMachineIndex = 0 }); siteModel.Machines.Add(new Machine { ID = Machine2Guid, InternalSiteModelMachineIndex = 1 }); var filter = CombinedFilter.MakeFilterWith(x => { x.AttributeFilter.SiteModel = siteModel; x.AttributeFilter.HasMachineFilter = true; x.AttributeFilter.MachinesList = new [] { Machine1Guid, Machine2Guid }; }); Assert.True(filter.AttributeFilter.SpatialCacheFingerprint().Contains("MF:-0-1", StringComparison.OrdinalIgnoreCase), "Fingerprint does not contain machine filter ID"); }
public void Test_GetCacheFingerPrint_ElevationRange_Present() { Guid designGuid = Guid.Parse("12345678-1234-1234-1234-123456781234"); var filter = CombinedFilter.MakeFilterWith(x => { x.AttributeFilter.HasElevationRangeFilter = true; x.AttributeFilter.ElevationRangeDesign = new DesignOffset(designGuid, 0.39); x.AttributeFilter.ElevationRangeOffset = 123.456; x.AttributeFilter.ElevationRangeThickness = 1.234; }); var s = filter.AttributeFilter.SpatialCacheFingerprint(); Assert.True(filter.AttributeFilter.SpatialCacheFingerprint().Contains("ER:12345678-1234-1234-1234-123456781234-0.39-123.456-1.234", StringComparison.OrdinalIgnoreCase), "Fingerprint does not contain elevation range filter ID"); filter = CombinedFilter.MakeFilterWith(x => { x.AttributeFilter.HasElevationRangeFilter = true; x.AttributeFilter.ElevationRangeLevel = 123.456; x.AttributeFilter.ElevationRangeOffset = 456.789; x.AttributeFilter.ElevationRangeThickness = 2.345; }); s = filter.AttributeFilter.SpatialCacheFingerprint(); Assert.True(filter.AttributeFilter.SpatialCacheFingerprint().Contains("ER:123.456-456.789-2.345", StringComparison.OrdinalIgnoreCase), "Fingerprint does not contain elevation range filter ID"); }
public void Test_GetCacheFingerPrint_DesignFilter_Present() { var filter = CombinedFilter.MakeFilterWith(x => { x.AttributeFilter.HasDesignFilter = true; x.AttributeFilter.DesignNameID = 123; }); Assert.True(filter.AttributeFilter.SpatialCacheFingerprint().Contains("DF:123", StringComparison.OrdinalIgnoreCase), "Fingerprint does not contain design name filter ID"); }
public void Test_GetCacheFingerPrint_PositiongTech_Present() { var filter = CombinedFilter.MakeFilterWith(x => { x.AttributeFilter.HasPositioningTechFilter = true; x.AttributeFilter.PositioningTech = PositioningTech.UTS; }); Assert.True(filter.AttributeFilter.SpatialCacheFingerprint().Contains("PT:UTS", StringComparison.OrdinalIgnoreCase), "Fingerprint does not contain positioning tech filter ID"); }
public void Test_GetCacheFingerPrint_GuidanceMode_Present() { var filter = CombinedFilter.MakeFilterWith(x => { x.AttributeFilter.HasGCSGuidanceModeFilter = true; x.AttributeFilter.GCSGuidanceMode = AutomaticsType.Manual; }); Assert.True(filter.AttributeFilter.SpatialCacheFingerprint().Contains("GM:Manual", StringComparison.OrdinalIgnoreCase), "Fingerprint does not contain guidance mode filter ID"); }
public void Test_GetCacheFingerPrint_ElevationType_Present() { var filter = CombinedFilter.MakeFilterWith(x => { x.AttributeFilter.HasElevationTypeFilter = true; x.AttributeFilter.ElevationType = ElevationType.Last; }); Assert.True(filter.AttributeFilter.SpatialCacheFingerprint().Contains("ET:Last", StringComparison.OrdinalIgnoreCase), "Fingerprint does not contain elevation type filter ID"); }
public void Test_GetCacheFingerPrint_VibeState_Present() { var filter = CombinedFilter.MakeFilterWith(x => { x.AttributeFilter.HasVibeStateFilter = true; x.AttributeFilter.VibeState = VibrationState.On; }); Assert.True(filter.AttributeFilter.SpatialCacheFingerprint().Contains("VS:On", StringComparison.OrdinalIgnoreCase), "Fingerprint does not contain vibe state filter ID"); }
public void Test_GetCacheFingerPrint_MachineDirection_Present() { var filter = CombinedFilter.MakeFilterWith(x => { x.AttributeFilter.HasMachineDirectionFilter = true; x.AttributeFilter.MachineDirection = MachineDirection.Forward; }); Assert.True(filter.AttributeFilter.SpatialCacheFingerprint().Contains("MD:Forward", StringComparison.OrdinalIgnoreCase), "Fingerprint does not contain machine direction filter ID"); }
public void Test_GetCacheFingerPrint_LayerID_Present() { var filter = CombinedFilter.MakeFilterWith(x => { x.AttributeFilter.HasLayerIDFilter = true; x.AttributeFilter.LayerID = 1234; }); Assert.True(filter.AttributeFilter.SpatialCacheFingerprint().Contains("LID:1234", StringComparison.OrdinalIgnoreCase), "Fingerprint does not contain layer ID filter ID"); }
public void Test_GetCacheFingerPrint_TimeFilter_Present() { var filter = CombinedFilter.MakeFilterWith(x => { x.AttributeFilter.HasTimeFilter = true; x.AttributeFilter.StartTime = DateTime.SpecifyKind(new DateTime(1111), DateTimeKind.Utc); x.AttributeFilter.EndTime = DateTime.SpecifyKind(new DateTime(2222), DateTimeKind.Utc); }); Assert.True(filter.AttributeFilter.SpatialCacheFingerprint().Contains("TF:1111-2222", StringComparison.OrdinalIgnoreCase), "Fingerprint does not contain time filter ID"); }
public void Test_GetCacheFingerPrint_PassCountRange_Present() { var filter = CombinedFilter.MakeFilterWith(x => { x.AttributeFilter.HasPassCountRangeFilter = true; x.AttributeFilter.PassCountRangeMin = 2; x.AttributeFilter.PassCountRangeMax = 11; }); Assert.True(filter.AttributeFilter.SpatialCacheFingerprint().Contains("PC:2-11", StringComparison.OrdinalIgnoreCase), "Fingerprint does not contain layer ID filter ID"); }
public void Test_GetCacheFingerPrint_ExcludesSurveyedSurfaces_HasMachineFilter() { var siteModel = new SiteModel(StorageMutability.Immutable); var filter = CombinedFilter.MakeFilterWith(x => { x.AttributeFilter.SiteModel = siteModel; x.AttributeFilter.HasMachineFilter = true; x.AttributeFilter.MachinesList = new Guid[] { Guid.NewGuid() }; }); Assert.True(filter.AttributeFilter.SpatialCacheFingerprint().Contains(ExcludeSurveyedSurfacesID, StringComparison.OrdinalIgnoreCase), "Fingerprint does not contain ExcludeSurveyedSurfaces ID"); }
public void Test_ElevationSubGridRequests_SingleCell_QueryWithElevationMappingModeFilter_MinimumElevationOnly() { var siteModel = Utilities.CreateSiteModelWithSingleCellWithMinimumElevationPasses(BASE_TIME, TIME_INCREMENT_SECONDS, BASE_HEIGHT, HEIGHT_DECREMENT, PASSES_IN_DECREMENTING_ELEVATION_LIST); var filter = CombinedFilter.MakeFilterWith(x => { x.AttributeFilter.HasElevationMappingModeFilter = true; x.AttributeFilter.ElevationMappingMode = ElevationMappingMode.MinimumElevation; }); var requestors = CreateRequestorsForSingleCellTesting(siteModel, GridDataType.Height, new[] { filter }); var subGridHeight = RequestAllSubGridsForSingleCellTesting <IClientHeightLeafSubGrid>(siteModel, requestors).First(); // Check cell has no height selected as no cell pass matches minimum elevation mode subGridHeight.Cells[0, 0].Should().Be(MINIMUM_HEIGHT); }
public void Test_ElevationSubGridRequests_SingleCell_QueryWithMixedElevationMappingModes_WithFilterOnMinimumElevationMode() { var siteModel = Utilities.CreateSiteModelWithSingleCellWithMixedElevationModePasses(BASE_TIME, TIME_INCREMENT_SECONDS, BASE_HEIGHT, HEIGHT_DECREMENT, PASSES_IN_DECREMENTING_ELEVATION_LIST); var filter = CombinedFilter.MakeFilterWith(x => { x.AttributeFilter.HasElevationMappingModeFilter = true; x.AttributeFilter.ElevationMappingMode = ElevationMappingMode.MinimumElevation; }); var requestors = CreateRequestorsForSingleCellTesting(siteModel, GridDataType.Height, new[] { filter }); var subGridHeight = RequestAllSubGridsForSingleCellTesting <IClientHeightLeafSubGrid>(siteModel, requestors).First(); // This should return the lowest elevation of the last set of cell passes recorded by the excavator machine in the final excavation // and trimming operations, meaning the selected elevation should be BASE_HEIGHT + 2 * HEIGHT_DECREMENT subGridHeight.Cells[0, 0].Should().Be(BASE_HEIGHT + 2 * HEIGHT_DECREMENT); }
public void Test_ElevationSubGridRequests_SingleCell_QueryWithElevationMappingModeFilter_PasscountRangeFilter_NoPass() { var siteModel = Utilities.CreateSiteModelWithSingleCellWithMinimumElevationPasses(BASE_TIME, TIME_INCREMENT_SECONDS, BASE_HEIGHT, HEIGHT_DECREMENT, PASSES_IN_DECREMENTING_ELEVATION_LIST); var filter = CombinedFilter.MakeFilterWith(x => { x.AttributeFilter.HasPassCountRangeFilter = true; x.AttributeFilter.PassCountRangeMax = 10001; x.AttributeFilter.PassCountRangeMin = 10000; }); var requestors = CreateRequestorsForSingleCellTesting(siteModel, GridDataType.Height, new[] { filter }); var subGridHeight = RequestAllSubGridsForSingleCellTesting <IClientHeightLeafSubGrid>(siteModel, requestors).First(); // Check cell has no height selected as no cell pass matches second pass subGridHeight.Cells[0, 0].Should().Be(CellPassConsts.NullHeight); }
public void Test_ElevationSubGridRequests_RequestElevationSubGrids_SingleCell_QueryWithAsAtFilter_IncludesOnlyFirstPass() { var siteModel = Utilities.CreateSiteModelWithSingleCellWithMinimumElevationPasses(BASE_TIME, TIME_INCREMENT_SECONDS, BASE_HEIGHT, HEIGHT_DECREMENT, PASSES_IN_DECREMENTING_ELEVATION_LIST); var filter = CombinedFilter.MakeFilterWith(x => { x.AttributeFilter.HasTimeFilter = true; x.AttributeFilter.EndTime = BASE_TIME; }); var requestors = CreateRequestorsForSingleCellTesting(siteModel, GridDataType.Height, new[] { filter }); var subGrid = RequestAllSubGridsForSingleCellTesting <IClientHeightLeafSubGrid>(siteModel, requestors).First(); // Check cell has has first height selected // Assumption: Elevation mode filtering has no impact on this scenario // --> Cell pass providing elevation is the earliest in time and hence highest subGrid.Cells[0, 0].Should().Be(MAXIMUM_HEIGHT); }
public void Test_GetCacheFingerPrint_ElevationMappingMode_Present() { var filter = CombinedFilter.MakeFilterWith(x => { x.AttributeFilter.HasElevationMappingModeFilter = true; x.AttributeFilter.ElevationMappingMode = ElevationMappingMode.MinimumElevation; }); Assert.True(filter.AttributeFilter.SpatialCacheFingerprint().Contains("EMM:1", StringComparison.OrdinalIgnoreCase), "Fingerprint does not contain min elevation mapping filter ID"); filter = CombinedFilter.MakeFilterWith(x => { x.AttributeFilter.HasElevationMappingModeFilter = true; x.AttributeFilter.ElevationMappingMode = ElevationMappingMode.LatestElevation; }); Assert.True(filter.AttributeFilter.SpatialCacheFingerprint().Contains("EMM:0", StringComparison.OrdinalIgnoreCase), "Fingerprint does not contain min elevation mapping filter ID"); }
public void Test_GetCacheFingerPrint_GPSAccuracy_Present() { var filter = CombinedFilter.MakeFilterWith(x => { x.AttributeFilter.HasGPSAccuracyFilter = true; x.AttributeFilter.GPSAccuracy = GPSAccuracy.Fine; x.AttributeFilter.GPSAccuracyIsInclusive = true; }); Assert.True(filter.AttributeFilter.SpatialCacheFingerprint().Contains("GA:1-Fine", StringComparison.OrdinalIgnoreCase), "Fingerprint does not contain GPS Accuracy filter ID"); filter = CombinedFilter.MakeFilterWith(x => { x.AttributeFilter.HasGPSAccuracyFilter = true; x.AttributeFilter.GPSAccuracy = GPSAccuracy.Fine; x.AttributeFilter.GPSAccuracyIsInclusive = false; }); Assert.True(filter.AttributeFilter.SpatialCacheFingerprint().Contains("GA:0-Fine", StringComparison.OrdinalIgnoreCase), "Fingerprint does not contain GPS Accuracy filter ID"); }
public void Test_GetCacheFingerPrint_GPSTolerance_Present() { var filter = CombinedFilter.MakeFilterWith(x => { x.AttributeFilter.HasGPSToleranceFilter = true; x.AttributeFilter.GPSTolerance = 123; x.AttributeFilter.GPSToleranceIsGreaterThan = true; }); Assert.True(filter.AttributeFilter.SpatialCacheFingerprint().Contains("GT:1-123", StringComparison.OrdinalIgnoreCase), "Fingerprint does not contain GPS Tolerance filter ID"); filter = CombinedFilter.MakeFilterWith(x => { x.AttributeFilter.HasGPSToleranceFilter = true; x.AttributeFilter.GPSTolerance = 123; x.AttributeFilter.GPSToleranceIsGreaterThan = false; }); Assert.True(filter.AttributeFilter.SpatialCacheFingerprint().Contains("GT:0-123", StringComparison.OrdinalIgnoreCase), "Fingerprint does not contain GPS Tolerance filter ID"); }
public void Test_GetCacheFingerPrint_TemperatureRange_Present() { var filter = CombinedFilter.MakeFilterWith(x => { x.AttributeFilter.HasTemperatureRangeFilter = true; x.AttributeFilter.MaterialTemperatureMin = 123; x.AttributeFilter.MaterialTemperatureMax = 456; x.AttributeFilter.FilterTemperatureByLastPass = true; }); Assert.True(filter.AttributeFilter.SpatialCacheFingerprint().Contains("TR:123-456-1", StringComparison.OrdinalIgnoreCase), "Fingerprint does not contain temperature range filter ID"); filter = CombinedFilter.MakeFilterWith(x => { x.AttributeFilter.HasTemperatureRangeFilter = true; x.AttributeFilter.MaterialTemperatureMin = 123; x.AttributeFilter.MaterialTemperatureMax = 456; x.AttributeFilter.FilterTemperatureByLastPass = false; }); Assert.True(filter.AttributeFilter.SpatialCacheFingerprint().Contains("TR:123-456-0", StringComparison.OrdinalIgnoreCase), "Fingerprint does not contain temperature range filter ID"); }