"""Schema-based diagnostic rendering with synthetic data only.""" import importlib.util from pathlib import Path import re import struct import pytest from bmspy.ecoflow_proto import ( decode_payload, decode_schema_protobuf, describe_protobuf_field, ) from bmspy.ecoflow_river3 import decode_river3_payload from bmspy.ecoflow_river3_schema import ENUMS, MESSAGES, SCHEMA_COMMIT def varint(value): value &= (1 << 64) - 1 result = bytearray() while value > 127: result.append((value & 127) | 128) value >>= 7 result.append(value) return bytes(result) def integer(number, value): return varint(number << 3) + varint(value) def blob(number, data): return varint(number << 3 | 2) + varint(len(data)) + data def floating(number, value): return varint(number << 3 | 5) + struct.pack(' unsupported = 1;', 'message Nested {} optional Nested value = 1;', ]) def test_generator_rejects_unsupported_or_incomplete_reachable_types(generator, body): with pytest.raises(ValueError): generator.parse_schema('message DisplayPropertyUpload {' + body + '} message RuntimePropertyUpload {}')