Spaces:
Running
Running
File size: 808 Bytes
a6a5d8e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | # 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)
|