Some checks failed
Build Simulation and Test / Run All Tests (push) Failing after 1m46s
111 lines
3.8 KiB
Python
111 lines
3.8 KiB
Python
"""Tests for configuration system."""
|
|
|
|
import pytest
|
|
import json
|
|
import tempfile
|
|
import os
|
|
|
|
from config.simulation_config import SimulationConfig, HeadlessConfig, InteractiveConfig, ExperimentConfig
|
|
from config.config_loader import ConfigLoader
|
|
|
|
|
|
class TestSimulationConfig:
|
|
"""Test simulation configuration."""
|
|
|
|
def test_custom_values(self):
|
|
"""Test custom configuration values."""
|
|
config = SimulationConfig(
|
|
grid_width=50,
|
|
grid_height=40,
|
|
cell_size=15,
|
|
initial_cells=100,
|
|
initial_food=200,
|
|
food_spawning=False,
|
|
random_seed=999,
|
|
default_tps=120.0
|
|
)
|
|
|
|
assert config.grid_width == 50
|
|
assert config.grid_height == 40
|
|
assert config.cell_size == 15
|
|
assert config.initial_cells == 100
|
|
assert config.initial_food == 200
|
|
assert config.food_spawning == False
|
|
assert config.random_seed == 999
|
|
assert config.default_tps == 120.0
|
|
|
|
|
|
class TestConfigLoader:
|
|
"""Test configuration loader."""
|
|
|
|
def test_load_headless_config(self):
|
|
"""Test loading headless configuration from file."""
|
|
# Create a temporary file
|
|
with tempfile.NamedTemporaryFile(mode='w', suffix='.json', delete=False) as f:
|
|
temp_file = f.name
|
|
json.dump({
|
|
"max_ticks": 10000,
|
|
"max_duration": 300.0,
|
|
"output": {
|
|
"enabled": True,
|
|
"directory": "test_output",
|
|
"formats": ["json", "csv"]
|
|
},
|
|
"simulation": {
|
|
"grid_width": 50,
|
|
"grid_height": 40,
|
|
"initial_cells": 100,
|
|
"default_tps": 60.0
|
|
}
|
|
}, f)
|
|
|
|
try:
|
|
config = ConfigLoader.load_headless_config(temp_file)
|
|
|
|
assert config.max_ticks == 10000
|
|
assert config.max_duration == 300.0
|
|
assert config.output.enabled == True
|
|
assert config.output.directory == "test_output"
|
|
assert config.output.formats == ["json", "csv"]
|
|
assert config.simulation.grid_width == 50
|
|
assert config.simulation.grid_height == 40
|
|
assert config.simulation.initial_cells == 100
|
|
assert config.simulation.default_tps == 60.0
|
|
finally:
|
|
os.unlink(temp_file)
|
|
|
|
def test_save_load_json(self):
|
|
"""Test saving and loading configuration from JSON file."""
|
|
# Create a temporary file
|
|
with tempfile.NamedTemporaryFile(mode='w', suffix='.json', delete=False) as f:
|
|
temp_file = f.name
|
|
|
|
try:
|
|
# Create test configuration
|
|
original_config = HeadlessConfig(
|
|
max_ticks=5000,
|
|
simulation=SimulationConfig(
|
|
grid_width=25,
|
|
grid_height=20,
|
|
initial_cells=75,
|
|
default_tps=90.0
|
|
)
|
|
)
|
|
|
|
# Save to JSON
|
|
ConfigLoader.save_config(original_config, temp_file)
|
|
|
|
# Load from JSON
|
|
loaded_config = ConfigLoader.load_headless_config(temp_file)
|
|
|
|
# Verify loaded config matches original
|
|
assert loaded_config.max_ticks == original_config.max_ticks
|
|
assert loaded_config.simulation.grid_width == original_config.simulation.grid_width
|
|
assert loaded_config.simulation.grid_height == original_config.simulation.grid_height
|
|
assert loaded_config.simulation.initial_cells == original_config.simulation.initial_cells
|
|
assert loaded_config.simulation.default_tps == original_config.simulation.default_tps
|
|
|
|
finally:
|
|
# Clean up temporary file
|
|
if os.path.exists(temp_file):
|
|
os.unlink(temp_file) |