diff options
| author | Josh Kingsley <josh@joshkingsley.me> | 2025-11-29 22:16:44 +0200 |
|---|---|---|
| committer | Josh Kingsley <josh@joshkingsley.me> | 2025-11-29 22:16:44 +0200 |
| commit | 1696d665f01c6e8bff04946c69ad0258bf72b5eb (patch) | |
| tree | a37d8efcd8eacd90d0cbea08fb2e09a0b3cbaa90 /packages/doc/src/vector_clock.rs | |
| parent | d724cc0bf6ff6d351319e6fb00f5184a04e16ac0 (diff) | |
Diffstat (limited to 'packages/doc/src/vector_clock.rs')
| -rw-r--r-- | packages/doc/src/vector_clock.rs | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/packages/doc/src/vector_clock.rs b/packages/doc/src/vector_clock.rs index f6ded56..5e0b669 100644 --- a/packages/doc/src/vector_clock.rs +++ b/packages/doc/src/vector_clock.rs @@ -22,11 +22,6 @@ impl VectorClock { m.insert(actor_id.clone(), self.get(actor_id) + 1); VectorClock(m) } - - /// Returns true if this clock is concurrent with another (neither happens before the other) - pub fn is_concurrent_with(&self, other: &VectorClock) -> bool { - self.partial_cmp(other).is_none() - } } impl PartialOrd for VectorClock { @@ -111,46 +106,4 @@ mod tests { assert!(!(clock_a > clock_b)); assert!(!(clock_a < clock_b)); } - - #[test] - fn concurrent_clocks() { - let alice_id = Uuid::now_v7(); - let bob_id = Uuid::now_v7(); - let carol_id = Uuid::now_v7(); - - // Equal clocks are not concurrent - let clock1 = VectorClock::new(); - let clock2 = VectorClock::new(); - assert!(!clock1.is_concurrent_with(&clock2)); - - // Causally ordered clocks are not concurrent - let clock_before = VectorClock::new().inc(&alice_id); - let clock_after = VectorClock::new().inc(&alice_id).inc(&bob_id); - assert!(!clock_before.is_concurrent_with(&clock_after)); - assert!(!clock_after.is_concurrent_with(&clock_before)); - - // Clocks from different actors are concurrent - let alice_clock = VectorClock::new().inc(&alice_id); - let bob_clock = VectorClock::new().inc(&bob_id); - assert!(alice_clock.is_concurrent_with(&bob_clock)); - assert!(bob_clock.is_concurrent_with(&alice_clock)); - - // Complex concurrent case: diverged branches - let clock_a = VectorClock::new() - .inc(&alice_id) - .inc(&alice_id) - .inc(&bob_id) - .inc(&carol_id); - - let clock_b = VectorClock::new() - .inc(&alice_id) - .inc(&alice_id) - .inc(&bob_id) - .inc(&bob_id); - - // clock_a: {alice: 2, bob: 1, carol: 1} - // clock_b: {alice: 2, bob: 2} - // carol: 1 > 0, but bob: 1 < 2 → concurrent - assert!(clock_a.is_concurrent_with(&clock_b)); - } } |
