30 lines
1.0 KiB
Python
30 lines
1.0 KiB
Python
"""Tests for the Cartesian product combinator."""
|
|
|
|
import pytest
|
|
|
|
from physcom.engine.combinator import generate_combinations
|
|
from physcom.models.entity import Entity
|
|
|
|
|
|
def test_generates_cartesian_product(seeded_repo):
|
|
from physcom.seed.transport_example import PLATFORMS, ACTUATORS, ENERGY_STORAGES
|
|
|
|
combos = generate_combinations(seeded_repo, ["platform", "actuator", "energy_storage"])
|
|
expected = len(PLATFORMS) * len(ACTUATORS) * len(ENERGY_STORAGES)
|
|
assert len(combos) == expected
|
|
|
|
|
|
def test_each_combo_has_one_per_dimension(seeded_repo):
|
|
combos = generate_combinations(seeded_repo, ["platform", "actuator", "energy_storage"])
|
|
for combo in combos:
|
|
dims = [e.dimension for e in combo.entities]
|
|
assert "platform" in dims
|
|
assert "actuator" in dims
|
|
assert "energy_storage" in dims
|
|
assert len(combo.entities) == 3
|
|
|
|
|
|
def test_missing_dimension_raises(seeded_repo):
|
|
with pytest.raises(ValueError, match="No entities found"):
|
|
generate_combinations(seeded_repo, ["platform", "nonexistent"])
|