public void GetMissingLines_ZeroPoints_ShouldReturnEmptyList() { var gpxLine = new LineString(new Coordinate[0]); var results = _executor.GetMissingLines(gpxLine, new LineString[0], 200, 30); Assert.AreEqual(0, results.Count); }
private List <LineString> SplitSelfLoopsAndRemoveDuplication(List <LineString> missingLines) { var missingLinesWithoutLoops = new List <LineString>(); foreach (var missingLine in missingLines) { missingLinesWithoutLoops.AddRange(_gpxLoopsSplitterExecutor.SplitSelfLoops(missingLine, _options.MinimalDistanceToClosestPoint)); } missingLinesWithoutLoops.Reverse(); // remove duplications set higher priority to lines that were recorded later var missingLinesWithoutLoopsAndDuplications = new List <LineString>(); foreach (var missingLineWithoutLoops in missingLinesWithoutLoops) { var linesToAdd = _gpxLoopsSplitterExecutor.GetMissingLines(missingLineWithoutLoops, missingLinesWithoutLoopsAndDuplications.ToArray(), _options.MinimalMissingSelfLoopPartLegth, _options.MinimalDistanceToClosestPoint); linesToAdd.Reverse(); missingLinesWithoutLoopsAndDuplications.AddRange(linesToAdd); } missingLinesWithoutLoopsAndDuplications.Reverse(); // reverse back to keep the original order of the lines return(missingLinesWithoutLoopsAndDuplications); }