24 lines
640 B
Python
24 lines
640 B
Python
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
import pytest
|
||
|
|
|
||
|
|
from schemas.agent.visibility import VisibilityMask, bit_mask
|
||
|
|
|
||
|
|
|
||
|
|
def test_visibility_mask_from_bits_and_contains() -> None:
|
||
|
|
mask = VisibilityMask.from_bits(bits=[0, 16, 18])
|
||
|
|
|
||
|
|
assert mask.contains(bit=0) is True
|
||
|
|
assert mask.contains(bit=16) is True
|
||
|
|
assert mask.contains(bit=17) is False
|
||
|
|
|
||
|
|
|
||
|
|
def test_visibility_mask_rejects_out_of_range_bit() -> None:
|
||
|
|
with pytest.raises(ValueError, match="range"):
|
||
|
|
VisibilityMask.from_bits(bits=[64])
|
||
|
|
|
||
|
|
|
||
|
|
def test_bit_mask_builds_single_bit_integer() -> None:
|
||
|
|
assert bit_mask(bit=0) == 1
|
||
|
|
assert bit_mask(bit=16) == (1 << 16)
|