Commit a470e1e9 authored by Marek Vrbk's avatar Marek Vrbk
Browse files

Fixture test

parent a63f08ec
Loading
Loading
Loading
Loading

conftest.py

0 → 100644
+17 −0
Original line number Diff line number Diff line
import pytest

from emtest import EmTest


@pytest.fixture(scope="session")
def emtest_session() -> EmTest:
    emtest = EmTest()
    emtest.setup_class()
    yield emtest
    emtest.teardown_class()


@pytest.fixture
def emtest(emtest_session: EmTest) -> EmTest:
    emtest_session.reset_peripherals()
    return emtest_session
+1 −9
Original line number Diff line number Diff line
@@ -33,14 +33,6 @@ def setup_serial_contains(device_string: str):
class EmTest:

    def setup_class(self):
        try:
            week_branch = self.week_branch
        except AttributeError:
            assert False
        try:
            replacements = self.replacements
        except AttributeError:
            replacements = []
        try:
            generated_replacements = self.generated_replacements
        except AttributeError:
@@ -49,7 +41,7 @@ class EmTest:
            to_delete = self.to_delete
        except AttributeError:
            to_delete = []
        self.session, self.file = loader.load_and_open_session(week_branch, replacements, generated_replacements, to_delete)
        self.session, self.file = loader.load_and_open_session(generated_replacements, to_delete)
        self.digilent_device = dwf.Dwf()
        self.leds = Leds(self.digilent_device)
        self.buttons = Buttons(self.digilent_device)
+9 −14
Original line number Diff line number Diff line
@@ -41,10 +41,7 @@ class EnvironmentVariableNotSet(BaseException):
    pass


def copy_replacements(replacements: [str], filepath: str, generated_replacements: [(str, str)]):
    emtest_folder = get_emtest_folder()
    for replacement in replacements:
        shutil.copy2(f'{emtest_folder}/replacements/{replacement}', f'{filepath}/{replacement}')
def copy_replacements(filepath: str, generated_replacements: [(str, str)]):
    for path, file_string in generated_replacements:
        with open(f'{filepath}/{path}', 'w') as file:
            file.write(file_string)
@@ -87,7 +84,7 @@ def load_repository(week_branch: str):
    repo.git.checkout(week_branch)


def prepare_build_files(replacements: [str], gen_replacements: [(str, str)], to_delete: [str]) -> str:
def prepare_build_files(gen_replacements: [(str, str)], to_delete: [str]) -> str:
    emtest_folder = get_emtest_folder()
    repo_folder = get_repository_folder()
    folder_name = find_project_folder(repo_folder)
@@ -95,7 +92,7 @@ def prepare_build_files(replacements: [str], gen_replacements: [(str, str)], to_
        print(f'{emtest_folder}, {repo_folder}, {folder_name}')
        raise FileNotFoundError
    copy_files(f'{emtest_folder}/build_files', f'{repo_folder}/{folder_name}/')
    copy_replacements(replacements, f'{repo_folder}/{folder_name}', gen_replacements)
    copy_replacements(f'{repo_folder}/{folder_name}', gen_replacements)
    delete_folders(to_delete, f'{repo_folder}/{folder_name}')
    return folder_name

@@ -111,9 +108,9 @@ def get_emtest_folder():
    return os.getenv("EMTEST_FOLDER")


def handle_session(replacements: [str], gen_replacements: [(str, str)], to_delete: [str]) -> (Session, io.BytesIO):
def handle_session(gen_replacements: [(str, str)], to_delete: [str]) -> (Session, io.BytesIO):
    repo_folder = get_repository_folder()
    folder_name = prepare_build_files(replacements, gen_replacements, to_delete)
    folder_name = prepare_build_files(gen_replacements, to_delete)
    build_binary(repo_folder, folder_name)
    # Auto open does not work for some odd reason
    session = ConnectHelper.session_with_chosen_probe(return_first=True, auto_open=False)
@@ -124,17 +121,15 @@ def handle_session(replacements: [str], gen_replacements: [(str, str)], to_delet
    return session, open(f'{repo_folder}/{folder_name}/debug/StudentTest.elf', 'rb')


def load_and_open_session(week_branch: str, replacements=None, gen_replacements=None, to_delete=None) -> (Session, io.BytesIO):
    if replacements is None:
        replacements = []
def load_and_open_session(gen_replacements=None, to_delete=None) -> (Session, io.BytesIO):
    if gen_replacements is None:
        gen_replacements = []
    if to_delete is None:
        to_delete = []
    load_dotenv()
    if os.getenv("CI") != "true":
        load_repository(week_branch)
    return handle_session(replacements, gen_replacements, to_delete)
    if len(os.getenv("OVERRIDE_BRANCH")) != 0:
        load_repository(os.getenv("OVERRIDE_BRANCH"))
    return handle_session(gen_replacements, to_delete)


# ARMGCC_DIR=/home/vrbkam/Downloads/gcc-arm-none-eabi-10.3-2021.10/ ./build_debug_cpp.sh
+35 −37
Original line number Diff line number Diff line
@@ -11,43 +11,41 @@ def sin_waveform(samples: int = 32) -> [float]:
    return [math.cos((i / samples) * 2 * math.pi) * 0.5 + 0.5 for i in range(samples)]


class TestADC(EmTest):

    def setup_class(self):
        self.week_branch = "Week_05"
        super().setup_class(self)

    def set_and_test_values(self, red: float, green: float):
        self.analog.output[0].set_value(green)
        self.analog.output[1].set_value(red)
def _set_and_test_values(emtest: EmTest, red: float, green: float):
    emtest.analog.output[0].set_value(green)
    emtest.analog.output[1].set_value(red)
    time.sleep(0.2)
        assert self.leds.green() == pytest.approx(green, abs=0.25)
        assert self.leds.red() == pytest.approx(red, abs=0.25)
    assert emtest.leds.green() == pytest.approx(green, abs=0.25)
    assert emtest.leds.red() == pytest.approx(red, abs=0.25)


    def test_x_coordinate(self):
def test_x_coordinate(emtest: EmTest):
    waveform = sin_waveform(32)
        self.analog.output[1].set_value(0)
    emtest.analog.output[1].set_value(0)
    for i in waveform:
            self.analog.output[0].set_value(i)
        emtest.analog.output[0].set_value(i)
        time.sleep(0.2)
            assert self.leds.green() == pytest.approx(i, abs=0.25)
        assert emtest.leds.green() == pytest.approx(i, abs=0.25)

    def test_y_coordinate(self):

def test_y_coordinate(emtest: EmTest):
    waveform = sin_waveform(32)
        self.analog.output[0].set_value(0)
    emtest.analog.output[0].set_value(0)
    for i in waveform:
            self.analog.output[1].set_value(i)
        emtest.analog.output[1].set_value(i)
        time.sleep(0.2)
            assert self.leds.red() == pytest.approx(i, abs=0.25)
        assert emtest.leds.red() == pytest.approx(i, abs=0.25)


    def test_both_coordinates(self):
def test_both_coordinates(emtest: EmTest):
    waveform = sin_waveform(64)
    for i in waveform:
            self.set_and_test_values(i, 1 - i)
        _set_and_test_values(emtest, i, 1 - i)


    def test_random_values(self):
def test_random_values(emtest: EmTest):
    random.seed(42)
    for _ in range(64):
        green = random.uniform(0.0, 1.0)
        red = random.uniform(0.0, 1.0)
            self.set_and_test_values(red, green)
        _set_and_test_values(emtest, red, green)
+0 −2
Original line number Diff line number Diff line
@@ -36,8 +36,6 @@ class RGBStateMachine:

class TestGPIO(EmTest):
    def setup_class(self):
        self.replacements = []
        self.week_branch = "Week_02"
        super().setup_class(self)

    def led_switch(self, led_val: Callable):
Loading