public IPrintCalculation CalculateTrack(ITrackCalculator calculator) { _calculators.Add(calculator); foreach (var trackPoint in _track.TrackPoints) { calculator.Calculate(trackPoint); } return(this); }
public double Calculate(ITrack firstTrack, ITrack secondTrack) { var dist = _trackHorizontalDistanceCalculator.Calculate(firstTrack, secondTrack); var timeFirstTrack = ConvertTimeStringToDateTime(firstTrack.TimeStamp); var timeSecondTrack = ConvertTimeStringToDateTime(secondTrack.TimeStamp); var timeDiff = Math.Abs(timeFirstTrack.Subtract(timeSecondTrack).TotalSeconds); return(dist / timeDiff); }
public void Calculate_CalculateRightTrackDistance_ReturnIsCorrect() { var firstTrack = FakeTrackFactory.GetTrackWithTime("20190101000000000", 100, 100, 100); var secondTrack = FakeTrackFactory.GetTrackWithTime("20190101000500000", 100, 100, 100);//5 minutes after the last _fakeTrackHorizontalDistanceCalculator.Calculate(Arg.Any <ITrack>(), Arg.Any <ITrack>()).Returns(300); var result = _uutTrackSpeedCalculator.Calculate(firstTrack, secondTrack); Assert.That(result, Is.EqualTo(1)); }
public void Update_TheUpdateCalculatesSpeed_SpeedIsCorrect() { List <ITrack> firstTracks = new List <ITrack>() { FakeTrackFactory.GetTrackWithTag("tag1", 100, 100, 100), FakeTrackFactory.GetTrackWithTag("tag2", 200, 200, 300), FakeTrackFactory.GetTrackWithTag("tag3", 200, 200, 400), }; List <ITrack> secondTracks = new List <ITrack>() { FakeTrackFactory.GetTrackWithTag("tag1", 200, 300, 100), FakeTrackFactory.GetTrackWithTag("tag2", 100, 400, 300), FakeTrackFactory.GetTrackWithTag("tag3", 300, 500, 600), }; _speedCalculator.Calculate(Arg.Any <ITrack>(), Arg.Any <ITrack>()).Returns(100); _uutAirspaceUpdater.Update(ref firstTracks, secondTracks); Assert.That(firstTracks.Select(track => track.Speed), Is.All.EqualTo(100.0).Within(1).Percent); }
public void Update(ref List <ITrack> needsUpdate, List <ITrack> theUpdate) { foreach (var track in theUpdate) { var trackHistory = needsUpdate.Find(t => t.Tag == track.Tag); if (trackHistory == null) { continue; } track.Speed = _speedCalculator.Calculate(trackHistory, track); track.Course = _trajectoryCalculator.Calculate(trackHistory, track); } needsUpdate = theUpdate; }