mirror of
https://github.com/triqs/dft_tools
synced 2024-10-31 11:13:46 +01:00
11d394fd5b
* moved the plovasp C++ code to c++/triqs_dft_tools/converters/vasp * added global header triqs_dft_tools/triqs_dft_tools.hpp * python dir based on single cmakelist file * registered C++ tests for plovasp * corrected imports for py3 tests for plovasp * corrected block order in sigma_from_file and srvo3_Gloc * exchanged ref files for sigma_from_file, srvo3_Gloc, SrVO3.ref.h5 * moved vasp converter bash scripts from dir shells to bin dir
71 lines
2.2 KiB
Python
71 lines
2.2 KiB
Python
r"""
|
|
Module defining a custom TestCase with extra functionality.
|
|
"""
|
|
|
|
import unittest
|
|
import numpy as np
|
|
import difflib
|
|
from triqs.utility.h5diff import h5diff
|
|
|
|
class MyTestCase(unittest.TestCase):
|
|
"""
|
|
Custom TestCase class supporting additional equality checks:
|
|
- numpy array equality
|
|
- file equality
|
|
"""
|
|
def __init__(self, *args, **kwargs):
|
|
"""
|
|
Initializes a custom equality function for comparing numpy arrays.
|
|
"""
|
|
super(MyTestCase, self).__init__(*args, **kwargs)
|
|
np.set_printoptions(suppress=True)
|
|
self.addTypeEqualityFunc(np.ndarray, self.is_arrays_equal)
|
|
|
|
def is_arrays_equal(self, arr1, arr2, msg=None):
|
|
"""
|
|
Raises self.failureException is arrays arr1 and arr2
|
|
are not equal.
|
|
"""
|
|
if not np.allclose(arr1, arr2):
|
|
raise self.failureException(msg)
|
|
|
|
def assertFileEqual(self, file1, file2):
|
|
"""
|
|
Compares two files using difflib.
|
|
Empty lines are ignored.
|
|
Files are assumed to be relatively small;
|
|
the data is truncated for files larger than MAX_SIZE bytes.
|
|
"""
|
|
MAX_SIZE = 100000
|
|
with open(file1, 'r') as f1:
|
|
str1 = f1.read(MAX_SIZE)
|
|
with open(file2, 'r') as f2:
|
|
str2 = f2.read(MAX_SIZE)
|
|
#
|
|
# Make a diff
|
|
#
|
|
# Remove empty lines
|
|
lstr1 = [s for s in str1.splitlines(True) if s.strip() != '']
|
|
lstr2 = [s for s in str2.splitlines(True) if s.strip() != '']
|
|
# diff
|
|
delta = difflib.unified_diff(lstr1, lstr2)
|
|
# combine delta's to a string
|
|
diff = ''.join(delta)
|
|
# if 'diff' is non-empty, files are different
|
|
if diff:
|
|
return self.fail("Files '%s' and '%s' differ"%(file1, file2))
|
|
|
|
def assertH5FileEqual(self, file1, file2):
|
|
"""
|
|
Compares two files using difflib.
|
|
Empty lines are ignored.
|
|
Files are assumed to be relatively small;
|
|
the data is truncated for files larger than MAX_SIZE bytes.
|
|
"""
|
|
try:
|
|
h5diff(file1, file2, precision=1e-6)
|
|
except RuntimeError as err:
|
|
if "FAILED" in err:
|
|
return self.fail("Files '%s' and '%s' differ"%(file1, file2))
|
|
|