mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-21 14:35:27 -04:00
61 lines
1.8 KiB
Python
61 lines
1.8 KiB
Python
import glob
|
|
import hashlib
|
|
import os
|
|
|
|
import h5py
|
|
import openmc
|
|
|
|
from tests.testing_harness import TestHarness
|
|
from tests.regression_tests import config
|
|
|
|
|
|
class PlotTestHarness(TestHarness):
|
|
"""Specialized TestHarness for running OpenMC plotting tests."""
|
|
def __init__(self, plot_names):
|
|
super().__init__(None)
|
|
self._plot_names = plot_names
|
|
|
|
def _run_openmc(self):
|
|
openmc.plot_geometry(openmc_exec=config['exe'])
|
|
|
|
def _test_output_created(self):
|
|
"""Make sure *.ppm has been created."""
|
|
for fname in self._plot_names:
|
|
assert os.path.exists(fname), 'Plot output file does not exist.'
|
|
|
|
def _cleanup(self):
|
|
super()._cleanup()
|
|
for fname in self._plot_names:
|
|
if os.path.exists(fname):
|
|
os.remove(fname)
|
|
|
|
def _get_results(self):
|
|
"""Return a string hash of the plot files."""
|
|
outstr = bytes()
|
|
|
|
for fname in self._plot_names:
|
|
if fname.endswith('.ppm'):
|
|
# Add PPM output to results
|
|
with open(fname, 'rb') as fh:
|
|
outstr += fh.read()
|
|
elif fname.endswith('.h5'):
|
|
# Add voxel data to results
|
|
with h5py.File(fname, 'r') as fh:
|
|
outstr += fh.attrs['filetype']
|
|
outstr += fh.attrs['num_voxels'].tostring()
|
|
outstr += fh.attrs['lower_left'].tostring()
|
|
outstr += fh.attrs['voxel_width'].tostring()
|
|
outstr += fh['data'].value.tostring()
|
|
|
|
# Hash the information and return.
|
|
sha512 = hashlib.sha512()
|
|
sha512.update(outstr)
|
|
outstr = sha512.hexdigest()
|
|
|
|
return outstr
|
|
|
|
|
|
def test_plot():
|
|
harness = PlotTestHarness(('plot_1.ppm', 'plot_2.ppm', 'plot_3.ppm',
|
|
'plot_4.h5'))
|
|
harness.main()
|