mirror of
https://github.com/agessaman/meshcore-bot.git
synced 2026-04-26 10:58:04 +00:00
Command tests: - tests/commands/: test_base_command, test_cmd_command, test_dice_command, test_hello_command, test_help_command, test_magic8_command, test_ping_command, test_roll_command - tests/test_bridge_bot_responses, test_channel_manager_logic, test_checkin_service, test_command_manager, test_command_prefix, test_config_merge, test_config_validation, test_db_manager, test_plugin_loader, test_profanity_filter, test_security_utils, test_service_plugin_loader, test_utils Integration and unit: - tests/integration/: test_path_graph_integration, test_path_resolution - tests/regression/: test_keyword_escapes - tests/unit/: test_mesh_graph, test_mesh_graph_edges, test_mesh_graph_multihop, test_mesh_graph_optimizations, test_mesh_graph_scoring, test_mesh_graph_validation, test_path_command_graph, test_path_command_graph_selection, test_path_command_multibyte Helpers: tests/conftest.py, tests/helpers.py
108 lines
3.8 KiB
Python
108 lines
3.8 KiB
Python
"""Tests for modules/enums.py — enum values and flag combinations."""
|
|
|
|
|
|
from modules.enums import AdvertFlags, DeviceRole, PayloadType, PayloadVersion, RouteType
|
|
|
|
|
|
class TestAdvertFlags:
|
|
"""Tests for AdvertFlags Flag enum."""
|
|
|
|
def test_type_flags_values(self):
|
|
assert AdvertFlags.ADV_TYPE_NONE.value == 0x00
|
|
assert AdvertFlags.ADV_TYPE_CHAT.value == 0x01
|
|
assert AdvertFlags.ADV_TYPE_REPEATER.value == 0x02
|
|
assert AdvertFlags.ADV_TYPE_ROOM.value == 0x03
|
|
assert AdvertFlags.ADV_TYPE_SENSOR.value == 0x04
|
|
|
|
def test_feature_flag_values(self):
|
|
assert AdvertFlags.ADV_LATLON_MASK.value == 0x10
|
|
assert AdvertFlags.ADV_FEAT1_MASK.value == 0x20
|
|
assert AdvertFlags.ADV_FEAT2_MASK.value == 0x40
|
|
assert AdvertFlags.ADV_NAME_MASK.value == 0x80
|
|
|
|
def test_legacy_aliases_equal_originals(self):
|
|
assert AdvertFlags.IsCompanion == AdvertFlags.ADV_TYPE_CHAT
|
|
assert AdvertFlags.IsRepeater == AdvertFlags.ADV_TYPE_REPEATER
|
|
assert AdvertFlags.IsRoomServer == AdvertFlags.ADV_TYPE_ROOM
|
|
assert AdvertFlags.HasLocation == AdvertFlags.ADV_LATLON_MASK
|
|
assert AdvertFlags.HasName == AdvertFlags.ADV_NAME_MASK
|
|
assert AdvertFlags.HasNameBit7 == AdvertFlags.ADV_NAME_MASK
|
|
|
|
def test_flag_combination(self):
|
|
"""Flags can be combined with |."""
|
|
combined = AdvertFlags.ADV_TYPE_REPEATER | AdvertFlags.ADV_LATLON_MASK
|
|
assert AdvertFlags.ADV_TYPE_REPEATER in combined
|
|
assert AdvertFlags.ADV_LATLON_MASK in combined
|
|
|
|
def test_flag_membership(self):
|
|
combined = AdvertFlags.ADV_TYPE_CHAT | AdvertFlags.ADV_NAME_MASK
|
|
assert AdvertFlags.ADV_NAME_MASK in combined
|
|
assert AdvertFlags.ADV_LATLON_MASK not in combined
|
|
|
|
|
|
class TestPayloadType:
|
|
"""Tests for PayloadType Enum."""
|
|
|
|
def test_known_values(self):
|
|
assert PayloadType.REQ.value == 0x00
|
|
assert PayloadType.RESPONSE.value == 0x01
|
|
assert PayloadType.TXT_MSG.value == 0x02
|
|
assert PayloadType.ACK.value == 0x03
|
|
assert PayloadType.ADVERT.value == 0x04
|
|
assert PayloadType.GRP_TXT.value == 0x05
|
|
assert PayloadType.GRP_DATA.value == 0x06
|
|
assert PayloadType.ANON_REQ.value == 0x07
|
|
assert PayloadType.PATH.value == 0x08
|
|
assert PayloadType.TRACE.value == 0x09
|
|
assert PayloadType.MULTIPART.value == 0x0A
|
|
assert PayloadType.RAW_CUSTOM.value == 0x0F
|
|
|
|
def test_lookup_by_value(self):
|
|
assert PayloadType(0x02) == PayloadType.TXT_MSG
|
|
assert PayloadType(0x04) == PayloadType.ADVERT
|
|
|
|
def test_all_members_unique(self):
|
|
values = [m.value for m in PayloadType]
|
|
assert len(values) == len(set(values))
|
|
|
|
|
|
class TestPayloadVersion:
|
|
"""Tests for PayloadVersion Enum."""
|
|
|
|
def test_versions(self):
|
|
assert PayloadVersion.VER_1.value == 0x00
|
|
assert PayloadVersion.VER_2.value == 0x01
|
|
assert PayloadVersion.VER_3.value == 0x02
|
|
assert PayloadVersion.VER_4.value == 0x03
|
|
|
|
def test_lookup(self):
|
|
assert PayloadVersion(0x00) == PayloadVersion.VER_1
|
|
|
|
|
|
class TestRouteType:
|
|
"""Tests for RouteType Enum."""
|
|
|
|
def test_values(self):
|
|
assert RouteType.TRANSPORT_FLOOD.value == 0x00
|
|
assert RouteType.FLOOD.value == 0x01
|
|
assert RouteType.DIRECT.value == 0x02
|
|
assert RouteType.TRANSPORT_DIRECT.value == 0x03
|
|
|
|
def test_lookup_by_value(self):
|
|
assert RouteType(0x01) == RouteType.FLOOD
|
|
|
|
|
|
class TestDeviceRole:
|
|
"""Tests for DeviceRole Enum."""
|
|
|
|
def test_values(self):
|
|
assert DeviceRole.Companion.value == "Companion"
|
|
assert DeviceRole.Repeater.value == "Repeater"
|
|
assert DeviceRole.RoomServer.value == "RoomServer"
|
|
|
|
def test_lookup_by_value(self):
|
|
assert DeviceRole("Repeater") == DeviceRole.Repeater
|
|
|
|
def test_all_members(self):
|
|
assert len(list(DeviceRole)) == 3
|