mirror of
https://github.com/pezkuwichain/pezkuwi-telemetry.git
synced 2026-10-20 18:56:21 +00:00
Fix typo incrementing instead of decrementing (#595)
* fix: typo incrementing instead of decrementing * Add tests for MostSeen decrement bug This bug requires a specific set of circumstances to trigger and become visible: 1. decrement a label that is non-zero but not first 2. repeat the decrement at least best_count()/2 times 3. increment that label 4. check the best count --------- Co-authored-by: teor <teor@riseup.net>
This commit is contained in:
1 parent
d4a557c33b
commit
4161d9a2a5
1 file changed
+7
-1
@@ -124,7 +124,7 @@ impl<T: Hash + Eq + Clone> MostSeen<T> {
|
|||||||
|
|
||||||
// Item is in the map; not the best anyway. decrement count.
|
// Item is in the map; not the best anyway. decrement count.
|
||||||
if let Some(count) = self.others.get_mut(item) {
|
if let Some(count) = self.others.get_mut(item) {
|
||||||
*count += 1;
|
*count = count.saturating_sub(1);
|
||||||
}
|
}
|
||||||
ChangeResult::NoChange
|
ChangeResult::NoChange
|
||||||
}
|
}
|
||||||
@@ -248,5 +248,11 @@ mod test {
|
|||||||
assert!(res.has_changed());
|
assert!(res.has_changed());
|
||||||
assert_eq!(a.best_count(), 2);
|
assert_eq!(a.best_count(), 2);
|
||||||
assert_eq!(*a.best(), "First"); // First is now ahead
|
assert_eq!(*a.best(), "First"); // First is now ahead
|
||||||
|
|
||||||
|
a.remove(&"Third"); // 0, or 2 with bug #595
|
||||||
|
a.remove(&"Third"); // 0, or 4 with bug #595
|
||||||
|
a.insert(&"Third"); // 1, or 5 with bug #595
|
||||||
|
assert_eq!(a.best_count(), 2);
|
||||||
|
assert_eq!(*a.best(), "First"); // First is still ahead
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user