import pytest
import materials_for_mc as m4mc
@pytest.fixture(autouse=True)
def clear_config():
m4mc.Config.clear()
yield
def test_set_cross_sections_with_dict():
cross_sections = {
"Li6": "tendl-21",
"Li7": "../../tests/Li7.json"
}
m4mc.Config.set_cross_sections(cross_sections)
assert m4mc.Config.get_cross_section("Li6") == "tendl-21"
assert m4mc.Config.get_cross_section("Li7") == "../../tests/Li7.json"
def test_set_cross_sections_with_string():
m4mc.Config.set_cross_sections("tendl-21")
assert m4mc.Config.get_cross_section("Fe56") == "tendl-21"
assert m4mc.Config.get_cross_section("Li6") == "tendl-21"
def test_set_cross_section_single_nuclide_path():
m4mc.Config.set_cross_section("Fe56", "../../tests/Fe56.json")
assert m4mc.Config.get_cross_section("Fe56") == "../../tests/Fe56.json"
def test_set_cross_section_single_nuclide_keyword():
m4mc.Config.set_cross_section("Fe56", "tendl-21")
assert m4mc.Config.get_cross_section("Fe56") == "tendl-21"
def test_set_cross_section_global_keyword():
m4mc.Config.set_cross_section("tendl-21")
assert m4mc.Config.get_cross_section("Li6") == "tendl-21"
assert m4mc.Config.get_cross_section("Fe56") == "tendl-21"
def test_set_cross_sections_invalid_type():
with pytest.raises(TypeError):
m4mc.Config.set_cross_sections(123)
def test_mixed_global_and_specific_config():
m4mc.Config.set_cross_sections("tendl-21")
m4mc.Config.set_cross_section("Fe56", "fendl-3.2c")
m4mc.Config.set_cross_section("Li6", "tests/Li6.json")
assert m4mc.Config.get_cross_section("Fe56") == "fendl-3.2c"
assert m4mc.Config.get_cross_section("Li6") == "tests/Li6.json"
assert m4mc.Config.get_cross_section("Be9") == "tendl-21"
assert m4mc.Config.get_cross_section("U235") == "tendl-21"
def test_explicit_path_override_in_nuclide_loading():
m4mc.Config.set_cross_sections({
"Li6": "tendl-21",
"Be9": "fendl-3.2c"
})
li6_from_config = m4mc.Nuclide("Li6")
li6_from_config.read_nuclide_from_json()
li6_explicit = m4mc.Nuclide("Li6")
li6_explicit.read_nuclide_from_json("tests/Li6.json")
assert li6_from_config.name == "Li6"
assert li6_explicit.name == "Li6"
assert len(li6_from_config.available_temperatures) > 0
assert len(li6_explicit.available_temperatures) > 0