Skip to content

Instantly share code, notes, and snippets.

@cmeiklejohn
Last active March 5, 2020 04:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cmeiklejohn/f9353052c64a26e38b6e23ea53d39a6b to your computer and use it in GitHub Desktop.
Save cmeiklejohn/f9353052c64a26e38b6e23ea53d39a6b to your computer and use it in GitHub Desktop.
#!/usr/bin/python3
import copy
def test_vector_clock_create():
assert VectorClock()
def test_vector_clock_value():
clock = VectorClock()
assert clock.value("a") == 0
def test_vector_clock_increment_and_value():
clock = VectorClock()
clock.increment("a")
assert clock.value("a") == 1
def test_vector_clock_simple_merge_and_value():
clock_a = VectorClock()
clock_a.increment("a")
assert clock_a.value("a") == 1
clock_b = VectorClock()
clock_b.increment("b")
assert clock_b.value("b") == 1
clock = clock_a.merge(clock_b)
assert clock.value("a") == 1
assert clock.value("b") == 1
def test_vector_clock_complex_merge_and_value():
clock_a = VectorClock()
clock_a.increment("a")
clock_a.increment("a")
clock_a.increment("b")
assert clock_a.value("a") == 2
assert clock_a.value("b") == 1
clock_b = VectorClock()
clock_b.increment("a")
clock_b.increment("b")
clock_b.increment("c")
assert clock_b.value("a") == 1
assert clock_b.value("b") == 1
assert clock_b.value("c") == 1
clock = clock_a.merge(clock_b)
assert clock.value("a") == 2
assert clock.value("b") == 1
assert clock.value("c") == 1
def test_vector_clock_complex_descends_value():
clock_a = VectorClock()
clock_a.increment("a")
clock_a.increment("a")
clock_a.increment("b")
assert clock_a.value("a") == 2
assert clock_a.value("b") == 1
clock_b = VectorClock()
clock_b.increment("a")
clock_b.increment("b")
clock_b.increment("c")
assert clock_b.value("a") == 1
assert clock_b.value("b") == 1
assert clock_b.value("c") == 1
clock = clock_a.merge(clock_b)
assert clock.value("a") == 2
assert clock.value("b") == 1
assert clock.value("c") == 1
assert not clock.happens_before(clock_a)
assert not clock.happens_before(clock_b)
assert clock_a.happens_before(clock)
assert clock_b.happens_before(clock)
assert not clock.happens_before(clock)
new_clock_a = copy.deepcopy(clock)
new_clock_a.increment("a")
assert clock_a.happens_before(new_clock_a)
assert clock_b.happens_before(clock)
assert clock_b.happens_before(new_clock_a)
assert not clock_b.happens_before(clock_a)
assert not clock_a.happens_before(clock_b)
def test_vector_clock_complex_concurrent_value():
clock_a = VectorClock()
clock_a.increment("a")
clock_a.increment("a")
clock_a.increment("b")
assert clock_a.value("a") == 2
assert clock_a.value("b") == 1
clock_b = VectorClock()
clock_b.increment("a")
clock_b.increment("b")
clock_b.increment("c")
assert clock_b.value("a") == 1
assert clock_b.value("b") == 1
assert clock_b.value("c") == 1
clock = clock_a.merge(clock_b)
assert clock.value("a") == 2
assert clock.value("b") == 1
assert clock.value("c") == 1
assert not clock.is_concurrent_with(clock_a)
assert not clock.is_concurrent_with(clock_b)
assert clock_a.is_concurrent_with(clock_b)
assert clock.is_concurrent_with(clock)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment