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); }
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); }
/// <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; }