import struct import tempfile import time import unittest import zlib from pathlib import Path from unittest.mock import patch import nand_put as x class FakePort: def __init__(self, callback): self.callback = callback self.rx = bytearray() self.requests = [] def write(self, data): self.requests.append(data) reply = self.callback(data, len(self.requests)) if reply: self.rx.extend(reply) return len(data) def read(self, size): data = self.rx[:size] del self.rx[:size] return bytes(data) def reply(request, status=0, payload=b""): magic, _, cmd, _, seq, size = x.HEADER.unpack(request[:16]) assert magic == x.MAGIC and len(request) == 20 + size assert zlib.crc32(request[:-4]) == struct.unpack("