Last active
March 5, 2020 04:22
-
-
Save cmeiklejohn/f9353052c64a26e38b6e23ea53d39a6b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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