|
| 1 | +import tarfile |
| 2 | +import unittest |
| 3 | +import urllib.request |
| 4 | +from pathlib import Path |
| 5 | + |
| 6 | +import openmc |
| 7 | +import openmc_dagmc_wrapper as odw |
| 8 | + |
| 9 | + |
| 10 | +class TestSettings(unittest.TestCase): |
| 11 | + """Tests the geometry.py file functionality""" |
| 12 | + |
| 13 | + def setUp(self): |
| 14 | + |
| 15 | + if not Path("tests/v0.0.2.tar.gz").is_file(): |
| 16 | + url = "https://github.com/fusion-energy/neutronics_workflow/archive/refs/tags/v0.0.2.tar.gz" |
| 17 | + urllib.request.urlretrieve(url, "tests/v0.0.2.tar.gz") |
| 18 | + |
| 19 | + tar = tarfile.open("tests/v0.0.2.tar.gz", "r:gz") |
| 20 | + tar.extractall("tests") |
| 21 | + tar.close() |
| 22 | + |
| 23 | + self.h5m_filename_smaller = "tests/neutronics_workflow-0.0.2/example_01_single_volume_cell_tally/stage_2_output/dagmc.h5m" |
| 24 | + self.h5m_filename_bigger = "tests/neutronics_workflow-0.0.2/example_02_multi_volume_cell_tally/stage_2_output/dagmc.h5m" |
| 25 | + |
| 26 | + self.material_description_bigger = { |
| 27 | + "pf_coil_case_mat": "Be", |
| 28 | + "center_column_shield_mat": "Be", |
| 29 | + "blanket_rear_wall_mat": "Be", |
| 30 | + "divertor_mat": "Be", |
| 31 | + "tf_coil_mat": "Be", |
| 32 | + "pf_coil_mat": "Be", |
| 33 | + "inboard_tf_coils_mat": "Be", |
| 34 | + "blanket_mat": "Be", |
| 35 | + "firstwall_mat": "Be", |
| 36 | + } |
| 37 | + |
| 38 | + def test_attributes(self): |
| 39 | + my_geometry = odw.Geometry(h5m_filename=self.h5m_filename_smaller) |
| 40 | + assert my_geometry.reflective_angles is None |
| 41 | + assert my_geometry.graveyard_box is None |
| 42 | + |
| 43 | + def test_corners_types(self): |
| 44 | + """checks the corner method returns the correct types""" |
| 45 | + my_geometry = odw.Geometry(h5m_filename=self.h5m_filename_smaller) |
| 46 | + assert isinstance(my_geometry.corners(), tuple) |
| 47 | + assert isinstance(my_geometry.corners()[0], tuple) |
| 48 | + assert isinstance(my_geometry.corners()[1], tuple) |
| 49 | + assert isinstance(my_geometry.corners()[0][0], float) |
| 50 | + assert isinstance(my_geometry.corners()[0][1], float) |
| 51 | + assert isinstance(my_geometry.corners()[0][2], float) |
| 52 | + assert isinstance(my_geometry.corners()[1][0], float) |
| 53 | + assert isinstance(my_geometry.corners()[1][1], float) |
| 54 | + assert isinstance(my_geometry.corners()[1][2], float) |
| 55 | + |
| 56 | + def test_corners_dimensions(self): |
| 57 | + """checks length of tuples returned""" |
| 58 | + my_geometry = odw.Geometry(h5m_filename=self.h5m_filename_smaller) |
| 59 | + assert len(my_geometry.corners()) == 2 |
| 60 | + assert len(my_geometry.corners()[0]) == 3 |
| 61 | + assert len(my_geometry.corners()[1]) == 3 |
| 62 | + |
| 63 | + def test_corners_expand_increases_size(self): |
| 64 | + """checks the expand increases the value returned""" |
| 65 | + my_geometry = odw.Geometry(h5m_filename=self.h5m_filename_smaller) |
| 66 | + small_corners = my_geometry.corners() |
| 67 | + big_corners = my_geometry.corners(expand=(1, 2, 3)) |
| 68 | + |
| 69 | + assert small_corners[0][0] - 1 == big_corners[0][0] |
| 70 | + assert small_corners[0][1] - 2 == big_corners[0][1] |
| 71 | + assert small_corners[0][2] - 3 == big_corners[0][2] |
| 72 | + |
| 73 | + assert small_corners[1][0] + 1 == big_corners[1][0] |
| 74 | + assert small_corners[1][1] + 2 == big_corners[1][1] |
| 75 | + assert small_corners[1][2] + 3 == big_corners[1][2] |
0 commit comments