示例#1
0
def test_environment_board_backend_mapping() -> None:
    """Test that the board_backend_mapping works."""
    environment = Environment("MockEnv")
    environment.register_backend(MockBackend)
    assert type(environment.board_backend_mapping) == dict
    assert len(environment.supported_boards) == 1
    assert environment.board_backend_mapping[MockBoard] == MockBackend
示例#2
0
def test_environment_check_multiple_backends_same_env() -> None:
    """Test that we can't define two backends for the same board/environment combo."""
    test_environment = Environment("test_environment")

    class BackendOne(Backend):
        board = MockBoard

        @classmethod
        def discover(cls) -> Set[Board]:
            return set()

        @property
        def firmware_version(self) -> Optional[str]:
            return None

    class BackendTwo(Backend):

        board = MockBoard

        @classmethod
        def discover(cls) -> Set[Board]:
            return set()

        @property
        def firmware_version(self) -> Optional[str]:
            return None

    test_environment.register_backend(BackendOne)

    with pytest.raises(RuntimeError):
        test_environment.register_backend(BackendTwo)
示例#3
0
def test_environment_get_board_group() -> None:
    """Test that we can create a boardgroup from an environment."""
    env = Environment("TestEnv")
    env.register_backend(MockBackend)

    bg = env.get_board_group(MockBoard)

    assert bg.backend_class is MockBackend
示例#4
0
def test_get_boardgroup_from_environment() -> None:
    """Test that we can create a boardgroup from an environment."""
    env = Environment("TestEnv")
    env.register_backend(OneBoardMockBackend)

    # See https://github.com/j5api/j5/issues/408
    bg = MockBoard.get_board_group_from_environment(env)  # type: ignore

    assert bg.backend_class is OneBoardMockBackend
    assert len(bg) == 1
示例#5
0
def test_environment_merge_duplicate() -> None:
    """Test that the correct exception is thrown if duplicate entries exist."""
    env1 = Environment("Env1")
    env2 = Environment("Env2")

    env1.register_backend(MockBackend)
    env2.register_backend(MockBackend)

    with pytest.raises(RuntimeError) as e:
        env1.merge(env2)
    assert e is not None
    assert str(e.value) == \
        "Attempted to merge two Environments that both contain: MockBoard"
示例#6
0
def test_environment_merge() -> None:
    """Test that we can merge environments."""
    env1 = Environment("Env1")
    env2 = Environment("Env2")

    assert len(env1.supported_boards) == 0
    assert len(env2.supported_boards) == 0

    env1.merge(env2)
    assert len(env1.supported_boards) == 0
    assert len(env2.supported_boards) == 0

    env2.register_backend(MockBackend)
    assert len(env2.supported_boards) == 1

    env1.merge(env2)
    assert len(env1.supported_boards) == 1
    assert len(env2.supported_boards) == 1
示例#7
0
def test_environment_board_get_backend_unknown() -> None:
    """Test that we can't get the backend of an unknown board."""
    environment = Environment("MockEnv")
    environment.register_backend(MockBackend)
    with pytest.raises(NotImplementedError):
        assert environment.get_backend(Mock2Board)
示例#8
0
def test_environment_board_get_backend() -> None:
    """Test that we can get the backend of a board."""
    environment = Environment("MockEnv")
    environment.register_backend(MockBackend)
    assert issubclass(environment.get_backend(MockBoard), MockBackend)
示例#9
0
def test_environment_supported_boards() -> None:
    """Test that we can get the supported boards for a environment."""
    environment = Environment("MockEnv")
    environment.register_backend(MockBackend)
    assert type(environment.supported_boards) is set
    assert len(environment.supported_boards) == 1
示例#10
0
)
from j5.backends.console.sr.v4.servo_board import SRV4ServoBoardConsoleBackend
from j5.backends.hardware.sb.arduino import SBArduinoHardwareBackend
from j5.backends.hardware.sr.v4 import (
    SRV4MotorBoardHardwareBackend,
    SRV4PowerBoardHardwareBackend,
    SRV4ServoBoardHardwareBackend,
)

__all__ = [
    "HardwareEnvironment",
]

HardwareEnvironment = Environment("Hardware Environment")

HardwareEnvironment.register_backend(
    cast(Type[Backend], SRV4PowerBoardHardwareBackend))
HardwareEnvironment.register_backend(
    cast(Type[Backend], SRV4ServoBoardHardwareBackend))
HardwareEnvironment.register_backend(
    cast(Type[Backend], SRV4MotorBoardHardwareBackend))
HardwareEnvironment.register_backend(
    cast(Type[Backend], SBArduinoHardwareBackend))

ConsoleEnvironment = Environment("Console Environment")

ConsoleEnvironment.register_backend(
    cast(Type[Backend], SRV4PowerBoardConsoleBackend))
ConsoleEnvironment.register_backend(
    cast(Type[Backend], SRV4ServoBoardConsoleBackend))
ConsoleEnvironment.register_backend(
    cast(Type[Backend], SRV4MotorBoardConsoleBackend))
示例#11
0
文件: env.py 项目: sourcebots/sbot
from j5.backends.hardware.sb.arduino import SBArduinoHardwareBackend
from j5.backends.hardware.sr.v4 import (
    SRV4MotorBoardHardwareBackend,
    SRV4PowerBoardHardwareBackend,
    SRV4ServoBoardHardwareBackend,
)

from sbot.vision.backend import SBZolotoSingleHardwareBackend

__all__ = [
    "HardwareEnvironment",
]

HardwareEnvironment = Environment("Hardware Environment")

HardwareEnvironment.register_backend(SRV4PowerBoardHardwareBackend)
HardwareEnvironment.register_backend(SRV4ServoBoardHardwareBackend)
HardwareEnvironment.register_backend(SRV4MotorBoardHardwareBackend)
HardwareEnvironment.register_backend(SBArduinoHardwareBackend)
HardwareEnvironment.register_backend(SBZolotoSingleHardwareBackend)

ConsoleEnvironment = Environment("Console Environment")

ConsoleEnvironment.register_backend(SRV4PowerBoardConsoleBackend)
ConsoleEnvironment.register_backend(SRV4ServoBoardConsoleBackend)
ConsoleEnvironment.register_backend(SRV4MotorBoardConsoleBackend)
ConsoleEnvironment.register_backend(SBArduinoConsoleBackend)

CONSOLE_ENVIRONMENT_WITH_VISION = Environment(
    "Console Environment with Vision")