diff --git a/.gitattributes b/.gitattributes index c2785cf15..1437f7412 100644 --- a/.gitattributes +++ b/.gitattributes @@ -9,10 +9,11 @@ *.hdf5 binary *.pdf binary *.dream3d binary +*.pbz2 binary # ignore files from MSC.Marc in language statistics installation/mods_MarcMentat/20*/* linguist-vendored -src/marc/include/* linguist-vendored +src/Marc/include/* linguist-vendored # ignore reference files for tests in language statistics python/tests/reference/* linguist-vendored diff --git a/python/tests/reference/Result/read_0.pbz2 b/python/tests/reference/Result/read_0.pbz2 new file mode 100644 index 000000000..6649f9994 Binary files /dev/null and b/python/tests/reference/Result/read_0.pbz2 differ diff --git a/python/tests/reference/Result/read_1.pbz2 b/python/tests/reference/Result/read_1.pbz2 new file mode 100644 index 000000000..c1963d4ea Binary files /dev/null and b/python/tests/reference/Result/read_1.pbz2 differ diff --git a/python/tests/reference/Result/read_2.pbz2 b/python/tests/reference/Result/read_2.pbz2 new file mode 100644 index 000000000..c8398ab2f Binary files /dev/null and b/python/tests/reference/Result/read_2.pbz2 differ diff --git a/python/tests/reference/Result/read_3.pbz2 b/python/tests/reference/Result/read_3.pbz2 new file mode 100644 index 000000000..d2eb08545 Binary files /dev/null and b/python/tests/reference/Result/read_3.pbz2 differ diff --git a/python/tests/reference/Result/read_4.pbz2 b/python/tests/reference/Result/read_4.pbz2 new file mode 100644 index 000000000..c10fa916b Binary files /dev/null and b/python/tests/reference/Result/read_4.pbz2 differ diff --git a/python/tests/reference/Result/read_5.pbz2 b/python/tests/reference/Result/read_5.pbz2 new file mode 100644 index 000000000..c1963d4ea Binary files /dev/null and b/python/tests/reference/Result/read_5.pbz2 differ diff --git a/python/tests/reference/Result/read_6.pbz2 b/python/tests/reference/Result/read_6.pbz2 new file mode 100644 index 000000000..4459d2e59 Binary files /dev/null and b/python/tests/reference/Result/read_6.pbz2 differ diff --git a/python/tests/reference/Result/read_7.pbz2 b/python/tests/reference/Result/read_7.pbz2 new file mode 100644 index 000000000..ef25acbf9 Binary files /dev/null and b/python/tests/reference/Result/read_7.pbz2 differ diff --git a/python/tests/test_Result.py b/python/tests/test_Result.py index 3ab5338ea..38c2cb4ee 100644 --- a/python/tests/test_Result.py +++ b/python/tests/test_Result.py @@ -1,3 +1,5 @@ +import bz2 +import pickle import time import shutil import os @@ -36,6 +38,17 @@ def ref_path(ref_path_base): """Directory containing reference results.""" return ref_path_base/'Result' +def dict_equal(d1, d2): + for k in d1: + if (k not in d2): + return False + else: + if type(d1[k]) is dict: + return dict_equal(d1[k],d2[k]) + else: + if not np.allclose(d1[k],d2[k]): + return False + return True class TestResult: @@ -387,3 +400,29 @@ class TestResult: def test_XDMF_invalid(self,default): with pytest.raises(TypeError): default.save_XDMF() + + @pytest.mark.parametrize('view,labels,compress,strip', + [({},['F','P','F','L_p','F_e','F_p'],True,True), + ({'increments':3},'F',True,True), + ({'increments':[1,8,3,4,5,6,7]},['F','P'],True,True), + ({'phases':['A','B']},['F','P'],True,True), + ({'phases':['A','C'],'homogenizations':False},['F','P','O'],True,True), + ({'phases':False,'homogenizations':False},['F','P','O'],True,True), + ({'phases':False},['Delta_V'],True,True), + ({},['u_p','u_n'],False,False)], + ids=list(range(8))) + def test_read(self,update,request,ref_path,view,labels,compress,strip): + result = Result(ref_path/'4grains2x4x3_compressionY.hdf5') + for key,value in view.items(): + result.view(key,value) + + N = request.node.name[8:].split('[')[1].split(']')[0] + cur = result.read(labels,compress,strip) + if update: + with bz2.BZ2File(ref_path/f'read_{N}.pbz2','w') as f: + pickle.dump(cur,f) + + with bz2.BZ2File(ref_path/f'read_{N}.pbz2') as f: + ref = pickle.load(f) + + assert dict_equal(cur,ref)