Пример #1
0
        public void WriteSlicesUsingTimeFilterShouldBeTheSameAsUsingIndexFilter()
        {
            var network = CreateNetwork();


            var networkCoverage = new NetworkCoverage("test", true)
            {
                Network = network
            };
            var locations = new[] { new NetworkLocation(network.Branches[0], 0.0),
                                    new NetworkLocation(network.Branches[0], 100.0),
                                    new NetworkLocation(network.Branches[1], 100.0) };

            networkCoverage.SetLocations(locations);
            networkCoverage.Locations.FixedSize = locations.Length;

            var networkCoverage2 = new NetworkCoverage("test", true)
            {
                Network = network
            };

            networkCoverage2.SetLocations(locations);
            networkCoverage2.Locations.FixedSize = locations.Length;


            // set 1000 values using time filters in coverage 1 and 2
            var startTime = new DateTime(2000, 1, 1);

            for (int i = 0; i < 1000; i++)
            {
                IEnumerable <double> values = new[] { 1.0, 2.0, 3.0 }.Select(d => d * i);
                DateTime             currentTime = startTime.AddMinutes(i);
                //set values for coverage 1 using value filter
                networkCoverage.Time.AddValues(new[] { currentTime });
                var timeValueFilter = new VariableValueFilter <DateTime>(networkCoverage.Time, currentTime);
                networkCoverage.SetValues(values, timeValueFilter);

                //set values for coverage 2 using index filter
                networkCoverage2.Time.AddValues(new[] { currentTime });
                var timeIndexFilter = new VariableIndexRangeFilter(networkCoverage2.Time, i);
                networkCoverage2.SetValues(values, timeIndexFilter);
            }

            Assert.AreEqual(networkCoverage.Components[0].Values, networkCoverage2.Components[0].Values);
        }
Пример #2
0
        public void WriteSlicesUsingTimeFilterShouldBeTheSameAsUsingIndexFilter()
        {
            var network = CreateNetwork();

            
            var networkCoverage = new NetworkCoverage("test", true) { Network = network };
            var locations = new[] { new NetworkLocation(network.Branches[0], 0.0),
                                    new NetworkLocation(network.Branches[0], 100.0), 
                                    new NetworkLocation(network.Branches[1], 100.0) };
            networkCoverage.SetLocations(locations);
            networkCoverage.Locations.FixedSize = locations.Length;

            var networkCoverage2 = new NetworkCoverage("test", true) { Network = network };
            networkCoverage2.SetLocations(locations);
            networkCoverage2.Locations.FixedSize = locations.Length;
            

            // set 1000 values using time filters in coverage 1 and 2
            var startTime = new DateTime(2000, 1, 1);
            for (int i = 0; i < 1000;i++ )
            {
                IEnumerable<double> values = new[] { 1.0, 2.0, 3.0 }.Select(d => d * i);
                DateTime currentTime = startTime.AddMinutes(i);
                //set values for coverage 1 using value filter
                networkCoverage.Time.AddValues(new[] { currentTime });
                var timeValueFilter = new VariableValueFilter<DateTime>(networkCoverage.Time, currentTime);
                networkCoverage.SetValues(values,timeValueFilter);

                //set values for coverage 2 using index filter
                networkCoverage2.Time.AddValues(new[] { currentTime });
                var timeIndexFilter = new VariableIndexRangeFilter(networkCoverage2.Time, i);
                networkCoverage2.SetValues(values, timeIndexFilter);

            }
            
            Assert.AreEqual(networkCoverage.Components[0].Values,networkCoverage2.Components[0].Values);
        }
Пример #3
0
        /// <summary>
        /// Creates a route with the given locations. Now route is stored in argument.
        /// This makes it impossible to have doubles. :( But makes drawing etc easy.
        /// </summary>
        /// <param name="locations"></param>
        /// <returns></returns>
        public static INetworkCoverage CreateRoute(params INetworkLocation[] locations)
        {
            var network = locations[0].Branch.Network;

            ThrowIfInputInvalid(locations, network);

            var route = new NetworkCoverage
                            {
                                Network = network,
                                SegmentGenerationMethod = SegmentGenerationMethod.RouteBetweenLocations
                            };
            
            route.Components[0].Unit = new Unit("meters", "m");
            route.Locations.AutoSort = false;
            route.SetLocations(locations);
            return route;
        }