예제 #1
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");
        }
예제 #2
0
        public void Test_GetCacheFingerPrint_DesignFilter_NotPresent()
        {
            var filter = new CombinedFilter();

            Assert.False(filter.AttributeFilter.SpatialCacheFingerprint().Contains("DF:", StringComparison.OrdinalIgnoreCase),
                         "Fingerprint contains design name filter ID");
        }
예제 #3
0
        public void Test_GetCacheFingerPrint_MachineDirection_NotPresent()
        {
            var filter = new CombinedFilter();

            Assert.False(filter.AttributeFilter.SpatialCacheFingerprint().Contains("MD:", StringComparison.OrdinalIgnoreCase),
                         "Fingerprint contains machine direction filter ID");
        }
예제 #4
0
        public void Test_GetCacheFingerPrint_ExcludesSurveyedSurfaces_NotPresent()
        {
            var filter = new CombinedFilter();

            Assert.False(filter.AttributeFilter.SpatialCacheFingerprint().Contains("ESS", StringComparison.OrdinalIgnoreCase),
                         "Fingerprint contains ExcludeSurveyedSurfaces ID");
        }
예제 #5
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");
        }
예제 #6
0
 internal EditCombinedFilter(CombinedFilter targetFilter, string newName, IFilter newFilter1, IFilter newFilter2)
 {
     _targetFilter = targetFilter;
       _newFilter1 = newFilter1;
       _newFilter2 = newFilter2;
       _newName = newName;
 }
예제 #7
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");
        }
예제 #8
0
        public void Test_RequestorUtilities_CreateIntermediaries_SingleDefaultFilter_WithSurveyedSurfaces()
        {
            var ru = new RequestorUtilities();

            Guid ssGuid = Guid.NewGuid();
            ISurveyedSurfaces surveyedSurfaces = DIContext.Obtain <ISurveyedSurfaces>();

            surveyedSurfaces.AddSurveyedSurfaceDetails(ssGuid, DesignDescriptor.Null(), TRex.Common.Consts.MIN_DATETIME_AS_UTC, BoundingWorldExtent3D.Null());

            var mockGrid = new Mock <IServerSubGridTree>();

            mockGrid.Setup(x => x.CellSize).Returns(SubGridTreeConsts.DefaultCellSize);
            var mockSiteModel = new Mock <ISiteModel>();

            mockSiteModel.Setup(x => x.SurveyedSurfacesLoaded).Returns(true);
            mockSiteModel.Setup(x => x.SurveyedSurfaces).Returns(surveyedSurfaces);
            mockSiteModel.Setup(x => x.Grid).Returns(mockGrid.Object);

            ICombinedFilter filter  = new CombinedFilter();
            IFilterSet      filters = new FilterSet(filter);

            var intermediaries = ru.ConstructRequestorIntermediaries(mockSiteModel.Object, filters, true, GridDataType.Height);

            intermediaries.Length.Should().Be(1);
            intermediaries[0].Filter.Should().Be(filter);
            intermediaries[0].FilteredSurveyedSurfaces.Should().Equal(surveyedSurfaces);
            intermediaries[0].CacheContexts[0].Should().Be(_fixture.TRexSpatialMemoryCacheContext);
            intermediaries[0].surfaceElevationPatchRequest.Should().Be(_fixture.SurfaceElevationPatchRequest);
        }
예제 #9
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");
        }
예제 #10
0
        public void Test_GetCacheFingerPrint_GPSAccuracy_NotPresent()
        {
            var filter = new CombinedFilter();

            Assert.False(filter.AttributeFilter.SpatialCacheFingerprint().Contains("GA:", StringComparison.OrdinalIgnoreCase),
                         "Fingerprint contains GPS Accuracy filter ID");
        }
예제 #11
0
        public void Test_GetCacheFingerPrint_GuidanceMode_NotPresent()
        {
            var filter = new CombinedFilter();

            Assert.False(filter.AttributeFilter.SpatialCacheFingerprint().Contains("ET:", StringComparison.OrdinalIgnoreCase),
                         "Fingerprint contains guidance mode filter ID");
        }
예제 #12
0
        public void Test_GetCacheFingerPrint_ElevationMappingMode_NotPresent()
        {
            var filter = new CombinedFilter();

            Assert.False(filter.AttributeFilter.SpatialCacheFingerprint().Contains("EMM:", StringComparison.OrdinalIgnoreCase),
                         "Fingerprint contains vibe state ID");
        }
예제 #13
0
 public void CombinedFilterTestFail()
 {
     int[] inputArr  = { 0, 1, 2, 3, 4, 5 };
     int[] outputArr = CombinedFilter.combinedFilter(inputArr);
     int[] expected  = { 8, 7, 5, 4, 2, 0 };
     CollectionAssert.AreNotEqual(expected, outputArr);
 }
예제 #14
0
        public void Test_GetCacheFingerPrint_PassCountRange_NotPresent()
        {
            var filter = new CombinedFilter();

            Assert.False(filter.AttributeFilter.SpatialCacheFingerprint().Contains("PC:", StringComparison.OrdinalIgnoreCase),
                         "Fingerprint contains layer ID filter ID");
        }
예제 #15
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");
        }
예제 #16
0
 public void CombinedFilterTestPass()
 {
     int[] inputArr  = { 0, 1, 2, 3, 4, 5, 696969420 };
     int[] outputArr = CombinedFilter.combinedFilter(inputArr);
     int[] expected  = { 0, 2, 4, 5, 7, 8, 9 };
     CollectionAssert.AreEqual(expected, outputArr);
 }
예제 #17
0
        public JsonResult GetJSONParameter([FromQuery] string param)
        {
            var            arg    = Encoding.ASCII.GetString(Convert.FromBase64String(param));
            CombinedFilter filter = JsonConvert.DeserializeObject <CombinedFilter>(arg);

            return(new JsonResult(filter));
        }
예제 #18
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);
        }
예제 #19
0
        public void Test_GetCacheFingerPrint_TemperatureRange_NotPresent()
        {
            var filter = new CombinedFilter();

            Assert.False(filter.AttributeFilter.SpatialCacheFingerprint().Contains("TR:", StringComparison.OrdinalIgnoreCase),
                         "Fingerprint contains temperature range filter ID");
        }
예제 #20
0
        public void Test_GetCacheFingerPrint_PositiongTech_NotPresent()
        {
            var filter = new CombinedFilter();

            Assert.False(filter.AttributeFilter.SpatialCacheFingerprint().Contains("PT:", StringComparison.OrdinalIgnoreCase),
                         "Fingerprint contains positioning tech filter ID");
        }
        public void CombinedFilterNegativePasses()
        {
            int[] input    = { -1, -3, -5, -7, -9 };
            int[] output   = CombinedFilter.combinedFilter(input);
            int[] expected = { -22, -23, -17, -19, -29 };

            CollectionAssert.AreEqual(expected, output);
        }
        public void CombinedFilterSimplePasses()
        {
            int[] input    = { 1, 3, 5, 7, 9 };
            int[] output   = CombinedFilter.combinedFilter(input);
            int[] expected = { 20, 22, 16, 18, 28 };

            CollectionAssert.AreEqual(expected, output);
        }
예제 #23
0
        public void combinedFilterSimple()
        {
            int[] input    = { 2, 4, 1, -1, 0 };
            int[] output   = CombinedFilter.combinedFilter(input);
            int[] expected = { 2, 2, 3, 2, -0 };

            CollectionAssert.AreEqual(expected, output);
        }
예제 #24
0
        public void CombinedFilterSimple()
        {
            int[] input    = { 1, 3, 5, 7, 9 };
            int[] output   = CombinedFilter.combinedFilter(input);
            int[] expected = { 1, 0, 2, 1, 0 };

            CollectionAssert.AreEqual(expected, output);
        }
예제 #25
0
        public void CombinedFilterSimple()
        {
            int[] input    = { 7, 8, 4, 22, 17, 2033, 191, 2, 39, 9, 22 };
            int[] output   = CombinedFilter.combinedFilter(input);
            int[] expected = { 1, 3, 4, 5, 7, 9, 11, 13, 13, 13, 14 };

            CollectionAssert.AreEqual(expected, output);
        }
예제 #26
0
        public void CombSimplePasses()
        {
            int[] input    = { 4, 2, 8, 3, 9, 4, 10, 5, 11, 6, 1 };
            int[] output   = CombinedFilter.combinedFilter(input);
            int[] expected = { 4, 5, 13, 15, 24, 28, 38, 33, 44, 50, 50 };
            // Use the Assert class to test conditions

            CollectionAssert.AreEqual(expected, output);
        }
예제 #27
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");
        }
예제 #28
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");
        }
예제 #29
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");
        }
예제 #30
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");
        }
예제 #31
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");
        }