Пример #1
0
        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");
        }
Пример #2
0
        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");
        }
Пример #3
0
        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);
        }
Пример #4
0
        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");
        }
Пример #5
0
        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");
        }
Пример #6
0
        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");
        }
Пример #7
0
        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");
        }
Пример #8
0
        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");
        }
Пример #9
0
        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");
        }
Пример #10
0
        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");
        }
Пример #11
0
        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");
        }
Пример #12
0
        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");
        }
Пример #13
0
        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");
        }
Пример #14
0
        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");
        }
Пример #15
0
        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");
        }
Пример #16
0
        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");
        }
Пример #17
0
        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);
        }
Пример #18
0
        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);
        }
Пример #19
0
        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);
        }
Пример #20
0
        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);
        }
Пример #21
0
        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");
        }
Пример #22
0
        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");
        }
Пример #23
0
        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");
        }
Пример #24
0
        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");
        }