from pathlib import Path from gausse.components.database import ComponentDatabase FIXTURES = Path(__file__).parent / "fixtures" / "data" def test_loads_all_component_types(): db = ComponentDatabase.load(FIXTURES) assert len(db.wires) == 2 assert len(db.capacitors) == 1 assert len(db.switches) == 1 assert len(db.sensors) == 2 assert len(db.projectile_materials) == 1 def test_wires_by_material_filters_correctly(): db = ComponentDatabase.load(FIXTURES) copper = db.wires_by_material("copper") assert len(copper) == 1 assert copper[0].part_id == "test-cu-0.5" def test_capacitors_rated_at_least_filters_by_voltage(): db = ComponentDatabase.load(FIXTURES) assert len(db.capacitors_rated_at_least(400.0)) == 1 assert len(db.capacitors_rated_at_least(500.0)) == 0 def test_switches_rated_for_current_and_voltage(): db = ComponentDatabase.load(FIXTURES) assert len(db.switches_rated_for(20.0, 500.0)) == 1 assert len(db.switches_rated_for(30.0, 500.0)) == 0 def test_sensors_by_kind(): db = ComponentDatabase.load(FIXTURES) assert len(db.sensors_by_kind("optical")) == 1 assert len(db.sensors_by_kind("inductive")) == 1 def test_missing_data_dir_returns_empty_database(tmp_path): db = ComponentDatabase.load(tmp_path) assert db.wires == [] assert db.capacitors == []