Testing: Start rewrite

This commit is contained in:
2025-05-15 17:27:05 +02:00
parent 987b0016c3
commit a77cc41b60

View File

@@ -6,7 +6,6 @@ It simulates the behviour of an actual microcontroller being connected
from typing import Optional from typing import Optional
import queue import queue
import random import random
import serial
import time import time
import struct import struct
@@ -51,9 +50,6 @@ class Com(ComSuperClass):
"""Set the port override, to disable port search""" """Set the port override, to disable port search"""
self._port_override = override self._port_override = override
def get_error(self) -> serial.SerialException | None:
pass
def get_comport(self) -> str: def get_comport(self) -> str:
return "test" if self._port_override != "" else self._port_override return "test" if self._port_override != "" else self._port_override
@@ -104,37 +100,49 @@ class Com(ComSuperClass):
for byte in ba: for byte in ba:
self.__simulated_data.put(byte.to_bytes()) self.__simulated_data.put(byte.to_bytes())
def __fill_queue(self): def __fill_queue_alternative(self):
# Add some dummy data. The data is randomized and is *not*
# an accurate simulation of what the microcontroller will return
# It only serves to check if the protocol handling works as expected
for _ in range(4): for _ in range(4):
self.__add_to_queue(self.__generate_int_as_bytes(200)) for _ in range(4):
self.__simulated_data.put(random.randbytes(1))
self.__simulated_data.put(bytes(" ", "ascii")) self.__simulated_data.put(bytes(" ", "ascii"))
self.__add_to_queue(self.__generate_float_as_bytes(size = 6)) for _ in range(6):
self.__simulated_data.put(random.randbytes(1))
self.__simulated_data.put(bytes(" ", "ascii"))
for _ in range(3):
for _ in range(4):
self.__simulated_data.put(random.randbytes(1))
self.__simulated_data.put(bytes(" ", "ascii"))
for _ in range(4):
self.__simulated_data.put(random.randbytes(1))
self.__simulated_data.put(bytes("\n", "ascii"))
self.__simulated_data_remaining = 68
def __fill_queue(self):
for _ in range(4):
self.__add_integer_as_hex(self.__generate_random_int(200))
self.__simulated_data.put(bytes(" ", "ascii"))
self.__add_float_as_hex(self.__generate_random_float(50))
self.__simulated_data.put(bytes(" ", "ascii")) self.__simulated_data.put(bytes(" ", "ascii"))
self.__simulated_data_remaining += 2 self.__simulated_data_remaining += 2
for _ in range(3): for _ in range(3):
self.__add_to_queue(self.__generate_int_as_bytes(65535)) self.__add_integer_as_hex(self.__generate_random_int(65535))
self.__simulated_data.put(bytes(" ", "ascii")) self.__simulated_data.put(bytes(" ", "ascii"))
self.__add_to_queue(self.__generate_int_as_bytes(65535)) self.__add_integer_as_hex(self.__generate_random_int(65535))
self.__simulated_data.put(bytes("\n", "ascii")) self.__simulated_data.put(bytes("\n", "ascii"))
self.__simulated_data_remaining += 4 self.__simulated_data_remaining += 4
print("Length:", self.__simulated_data_remaining) print("Length:", self.__simulated_data_remaining)
def __generate_int_as_bytes(self, upper_limit: int) -> list[bytes]: def __generate_random_int(self, max: int) -> int:
byte_array = random.randint(0, upper_limit).to_bytes(4, "big") return random.randint(0, max)
return [byte.to_bytes() for byte in byte_array]
def __generate_float_as_bytes(self, upper_limit: int = 200, size: int = 4) -> list[bytes]: def __generate_random_float(self, max: int) -> float:
random_float = random.random() * upper_limit return random.random() * max
byte_data = struct.pack(">f", random_float)
data = [byte.to_bytes() for byte in byte_data]
for _ in range(size - len(data)):
data.append(b'\x00')
return data
def __add_to_queue(self, data: list[bytes]): def __add_character_as_hex(self, data: str):
for value in data: pass
self.__simulated_data_remaining += 1
self.__simulated_data.put(value) def __add_integer_as_hex(self, data: int):
pass
def __add_float_as_hex(self, data: float):
pass