Skip to content

Commit 44c77af

Browse files
committed
First track fitting tests
Signed-off-by: Guillaume W. Bres <[email protected]>
1 parent 3d8b483 commit 44c77af

File tree

1 file changed

+17
-48
lines changed

1 file changed

+17
-48
lines changed

src/tracker/fit.rs

Lines changed: 17 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ impl SVTracker {
8888
if let Some(tolerance) = self.gap_tolerance {
8989
let dt = data.epoch - past_t;
9090
if dt > tolerance {
91-
debug!("{}({}) - {} data gap", data.epoch, self.sv, dt);
91+
print!("{}({}) - {} data gap", data.epoch, self.sv, dt);
9292
self.size = 0;
9393
self.buffer.clear();
9494
}
@@ -122,25 +122,30 @@ impl SVTracker {
122122
/// symbols must have been buffered.
123123
pub fn fit(&mut self) -> Result<FittedData, FitError> {
124124
// Request 3 symbols at least
125-
if self.size < 2 {
125+
if self.size < 3 {
126126
return Err(FitError::NotEnoughSymbols);
127127
}
128128

129129
let midpoint = if self.size % 2 == 0 {
130-
self.size / 2
130+
self.size / 2 - 1
131131
} else {
132-
(self.size + 1) / 2
132+
(self.size + 1) / 2 - 1
133133
};
134134

135135
// Retrieve information @ mid point
136+
let t0 = self.buffer[0].epoch;
136137
let t_mid = self.buffer[midpoint].epoch;
137138
let t_mid_s = t_mid.duration.to_unit(Unit::Second);
139+
let t_last = self.buffer[self.size - 1].epoch;
138140

139141
let azim_mid = self.buffer[midpoint].azimuth;
140142
let elev_mid = self.buffer[midpoint].elevation;
141143

142144
let mut fitted = FittedData::default();
143145

146+
fitted.sv = self.sv;
147+
fitted.first_t = t0;
148+
fitted.duration = t_last - t0;
144149
fitted.midtrack = t_mid;
145150
fitted.azimuth_deg = azim_mid;
146151
fitted.elevation_deg = elev_mid;
@@ -283,14 +288,14 @@ impl SVTracker {
283288

284289
#[cfg(test)]
285290
mod test {
286-
use crate::prelude::{Epoch, FittedData, Observation, SVTracker, SV};
291+
use crate::prelude::{Duration, Epoch, FittedData, Observation, SVTracker, SV};
287292
use std::str::FromStr;
288293

289294
#[test]
290295
fn tracker_no_gap_x3() {
291296
let g01 = SV::from_str("G01").unwrap();
292297

293-
let mut tracker = SVTracker::new(sv, None);
298+
let mut tracker = SVTracker::new(g01, None);
294299

295300
for obs in [
296301
Observation {
@@ -334,37 +339,26 @@ mod test {
334339

335340
assert_eq!(fitted.sv, g01);
336341
assert_eq!(fitted.duration, Duration::from_seconds(60.0));
342+
337343
assert_eq!(
338344
fitted.first_t,
339345
Epoch::from_str("2020-01-01T00:00:00 UTC").unwrap()
340346
);
347+
341348
assert_eq!(
342349
fitted.midtrack,
343350
Epoch::from_str("2020-01-01T00:00:30 UTC").unwrap()
344351
);
352+
345353
assert_eq!(fitted.elevation_deg, 6.1);
346354
assert_eq!(fitted.azimuth_deg, 7.1);
347-
assert_eq!(fitted.refsv_s, 0.0);
348-
349-
tracker.new_observation(Observation {
350-
epoch: Epoch::from_str("2020-01-01T00:01:30 UTC").unwrap(),
351-
refsv: 1.3,
352-
refsys: 2.3,
353-
mdtr: 3.3,
354-
mdio: 4.3,
355-
msio: None,
356-
elevation: 6.3,
357-
azimuth: 7.3,
358-
});
359-
360-
let fitted = tracker.fit().unwrap();
361355
}
362356

363357
#[test]
364358
fn tracker_no_gap_x4() {
365359
let g01 = SV::from_str("G01").unwrap();
366360

367-
let mut tracker = SVTracker::new(sv, None);
361+
let mut tracker = SVTracker::new(g01, None);
368362

369363
for obs in [
370364
Observation {
@@ -408,43 +402,18 @@ mod test {
408402

409403
assert_eq!(fitted.sv, g01);
410404
assert_eq!(fitted.duration, Duration::from_seconds(60.0));
405+
411406
assert_eq!(
412407
fitted.first_t,
413408
Epoch::from_str("2020-01-01T00:00:00 UTC").unwrap()
414409
);
410+
415411
assert_eq!(
416412
fitted.midtrack,
417413
Epoch::from_str("2020-01-01T00:00:30 UTC").unwrap()
418414
);
419-
assert_eq!(fitted.elevation_deg, 6.1);
420-
assert_eq!(fitted.azimuth_deg, 7.1);
421-
assert_eq!(fitted.refsv_s, 0.0);
422-
423-
tracker.new_observation(Observation {
424-
epoch: Epoch::from_str("2020-01-01T00:01:30 UTC").unwrap(),
425-
refsv: 1.3,
426-
refsys: 2.3,
427-
mdtr: 3.3,
428-
mdio: 4.3,
429-
msio: None,
430-
elevation: 6.3,
431-
azimuth: 7.3,
432-
});
433415

434-
let fitted = tracker.fit().unwrap();
435-
436-
assert_eq!(fitted.sv, g01);
437-
assert_eq!(fitted.duration, Duration::from_seconds(60.0));
438-
assert_eq!(
439-
fitted.first_t,
440-
Epoch::from_str("2020-01-01T00:00:00 UTC").unwrap()
441-
);
442-
assert_eq!(
443-
fitted.midtrack,
444-
Epoch::from_str("2020-01-01T00:01:00 UTC").unwrap()
445-
);
446416
assert_eq!(fitted.elevation_deg, 6.1);
447417
assert_eq!(fitted.azimuth_deg, 7.1);
448-
assert_eq!(fitted.refsv_s, 0.0);
449418
}
450419
}

0 commit comments

Comments
 (0)