144 lines
4.5 KiB
Python
144 lines
4.5 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Simple test for binary file handling functionality (without ComfyUI dependencies)
|
|
"""
|
|
|
|
import os
|
|
import tempfile
|
|
|
|
|
|
def test_binary_file_operations():
|
|
"""Test basic binary file operations"""
|
|
|
|
print("Testing Binary File Operations")
|
|
print("=" * 40)
|
|
|
|
# Create test binary data (simulating DCI file content)
|
|
test_data = b"DCI\x00\x01\x00\x00\x00This is test DCI binary data\x00\x01\x02\x03"
|
|
test_filename = "test_icon.dci"
|
|
|
|
# Test 1: Create and write binary file
|
|
print("\n1. Creating test binary file...")
|
|
with tempfile.NamedTemporaryFile(delete=False, suffix=".dci") as temp_file:
|
|
temp_file.write(test_data)
|
|
temp_file_path = temp_file.name
|
|
|
|
print(f"✓ Created test file: {os.path.basename(temp_file_path)}")
|
|
print(f"✓ File size: {len(test_data)} bytes")
|
|
|
|
# Test 2: Read binary file
|
|
print("\n2. Reading binary file...")
|
|
try:
|
|
with open(temp_file_path, 'rb') as f:
|
|
read_data = f.read()
|
|
|
|
print(f"✓ Read {len(read_data)} bytes")
|
|
print(f"✓ Content matches: {read_data == test_data}")
|
|
|
|
# Simulate binary data structure
|
|
binary_data = {
|
|
'content': read_data,
|
|
'filename': os.path.basename(temp_file_path),
|
|
'size': len(read_data),
|
|
'source_path': temp_file_path
|
|
}
|
|
|
|
print(f"✓ Binary data structure created")
|
|
|
|
except Exception as e:
|
|
print(f"✗ Failed to read file: {e}")
|
|
return False
|
|
|
|
# Test 3: Save binary data to new file
|
|
print("\n3. Saving binary data to new file...")
|
|
try:
|
|
output_dir = tempfile.mkdtemp()
|
|
output_path = os.path.join(output_dir, "saved_test.dci")
|
|
|
|
with open(output_path, 'wb') as f:
|
|
f.write(binary_data['content'])
|
|
|
|
print(f"✓ Saved to: {output_path}")
|
|
|
|
# Verify saved content
|
|
with open(output_path, 'rb') as f:
|
|
saved_content = f.read()
|
|
|
|
print(f"✓ Saved content matches: {saved_content == test_data}")
|
|
|
|
except Exception as e:
|
|
print(f"✗ Failed to save file: {e}")
|
|
return False
|
|
|
|
# Test 4: File discovery (simulating upload functionality)
|
|
print("\n4. Testing file discovery...")
|
|
try:
|
|
import glob
|
|
|
|
search_dir = os.path.dirname(temp_file_path)
|
|
pattern = os.path.join(search_dir, "*.dci")
|
|
matching_files = glob.glob(pattern)
|
|
|
|
print(f"✓ Found {len(matching_files)} DCI files")
|
|
print(f"✓ Files: {[os.path.basename(f) for f in matching_files]}")
|
|
|
|
except Exception as e:
|
|
print(f"✗ Failed file discovery: {e}")
|
|
return False
|
|
|
|
# Cleanup
|
|
try:
|
|
os.unlink(temp_file_path)
|
|
os.unlink(output_path)
|
|
os.rmdir(output_dir)
|
|
except:
|
|
pass
|
|
|
|
print("\n" + "=" * 40)
|
|
print("All binary file operations completed successfully! ✓")
|
|
return True
|
|
|
|
|
|
def demonstrate_dci_workflow():
|
|
"""Demonstrate how the binary nodes would work with DCI files"""
|
|
|
|
print("\n\nDCI Binary File Workflow Demonstration")
|
|
print("=" * 50)
|
|
|
|
print("\nWorkflow Steps:")
|
|
print("1. BinaryFileLoader: Load existing DCI file from disk")
|
|
print(" - Input: file_path (STRING)")
|
|
print(" - Output: binary_data (BINARY_DATA)")
|
|
|
|
print("\n2. BinaryFileSaver: Save DCI binary data to disk")
|
|
print(" - Input: binary_data (BINARY_DATA), file_path (STRING)")
|
|
print(" - Output: saved_path (STRING)")
|
|
|
|
print("\n3. BinaryFileUploader: Browse and select DCI files")
|
|
print(" - Input: search_directory (STRING), file_pattern (STRING)")
|
|
print(" - Output: binary_data (BINARY_DATA), file_path (STRING)")
|
|
|
|
print("\nBINARY_DATA Structure:")
|
|
print("- content: bytes (the actual binary file content)")
|
|
print("- filename: str (original filename)")
|
|
print("- size: int (file size in bytes)")
|
|
print("- source_path: str (original file path)")
|
|
|
|
print("\nUse Cases:")
|
|
print("- Load DCI icon files created outside ComfyUI")
|
|
print("- Save DCI files generated by other nodes")
|
|
print("- Browse and import DCI files from directories")
|
|
print("- Chain with existing DCI nodes for complete workflows")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
success = test_binary_file_operations()
|
|
demonstrate_dci_workflow()
|
|
|
|
if success:
|
|
print("\n🎉 Binary file handling functionality verified!")
|
|
print("\nThe new nodes are ready for integration with ComfyUI.")
|
|
print("They provide essential binary file I/O capabilities for DCI icon files.")
|
|
else:
|
|
print("\n❌ Some operations failed.")
|