Binary Reader MCP
by berlinbra
Verified
- tests
import pytest
import os
from src.binary_reader import UnrealAssetReader, BinaryReader
@pytest.fixture
def test_unreal_asset_file(tmp_path):
# Create a mock .uasset file for testing
file_path = tmp_path / "test.uasset"
with open(file_path, "wb") as f:
# Write magic number
f.write(bytes.fromhex('C1832A9E'))
# Write mock version numbers
f.write(int(1).to_bytes(4, 'little')) # legacy_version
f.write(int(2).to_bytes(4, 'little')) # legacy_ue3_version
f.write(int(3).to_bytes(4, 'little')) # file_version_ue4
f.write(int(100).to_bytes(4, 'little')) # file_size
# Write mock metadata
f.write(int(1).to_bytes(4, 'little')) # flags
f.write(int(10).to_bytes(4, 'little')) # element_count
f.write(int(1000).to_bytes(4, 'little')) # bulk_data_size
return file_path
def test_unreal_asset_reader_header(test_unreal_asset_file):
with UnrealAssetReader(test_unreal_asset_file) as reader:
header = reader.read_header()
assert header['magic'] == '0xc1832a9e'
assert header['legacy_version'] == 1
assert header['legacy_ue3_version'] == 2
assert header['file_version_ue4'] == 3
assert header['file_size'] == 100
def test_unreal_asset_reader_metadata(test_unreal_asset_file):
with UnrealAssetReader(test_unreal_asset_file) as reader:
# Skip header
reader.read_header()
metadata = reader.read_metadata()
assert metadata['flags'] == 1
assert metadata['element_count'] == 10
assert metadata['bulk_data_size'] == 1000
def test_invalid_unreal_asset_file(tmp_path):
file_path = tmp_path / "invalid.uasset"
with open(file_path, "wb") as f:
f.write(b"invalid data")
with pytest.raises(ValueError, match="Not a valid .uasset file"):
with UnrealAssetReader(file_path) as reader:
reader.read_header()