a11oy / tests /test_formulas /test_byzantine_quorum.py
betterwithage's picture
sync(space): full source mirror — resolve all GitHub<->Space drift (CTO)
a6a5d8e verified
Raw
History Blame
808 Bytes
# SPDX-License-Identifier: Apache-2.0
"""Tests for a11oy.formulas.byzantine_quorum (n>=3f+1). thesis_v22.pdf §2."""
import pytest
from a11oy.formulas import byzantine_quorum as bq
def test_max_faults():
assert [bq.max_byzantine_faults(n) for n in (1, 3, 4, 5, 6, 7, 10)] == [0, 0, 1, 1, 1, 2, 3]
def test_quorum_size():
assert [bq.quorum_size(f) for f in (0, 1, 2, 3)] == [1, 3, 5, 7]
def test_threshold_5_organ_mesh():
out = bq.quorum_threshold(5, 1)
assert out["value"] == 3
assert out["bft_feasible"] is True
assert out["citation"] == "thesis_v22.pdf §2"
def test_infeasible_when_too_few():
out = bq.quorum_threshold(3, 1) # 3 < 3*1+1=4
assert out["bft_feasible"] is False
def test_invalid():
with pytest.raises(ValueError):
bq.quorum_threshold(0)