import os import pytest import numpy as np from damask import VTK @pytest.fixture def reference_dir(reference_dir_base): """Directory containing reference results.""" return os.path.join(reference_dir_base,'Result') class TestVTK: def test_rectilinearGrid(self,tmp_path): grid = np.random.randint(5,10,3)*2 size = np.random.random(3) + 1.0 origin = np.random.random(3) v = VTK.from_rectilinearGrid(grid,size,origin) string = v.__repr__() v.write(os.path.join(tmp_path,'rectilinearGrid')) vtr = VTK.from_file(os.path.join(tmp_path,'rectilinearGrid.vtr')) with open(os.path.join(tmp_path,'rectilinearGrid.vtk'),'w') as f: f.write(string) vtk = VTK.from_file(os.path.join(tmp_path,'rectilinearGrid.vtk'),'VTK_rectilinearGrid') assert(string == vtr.__repr__() == vtk.__repr__()) def test_polyData(self,tmp_path): points = np.random.rand(3,100) v = VTK.from_polyData(points) string = v.__repr__() v.write(os.path.join(tmp_path,'polyData')) vtp = VTK.from_file(os.path.join(tmp_path,'polyData.vtp')) with open(os.path.join(tmp_path,'polyData.vtk'),'w') as f: f.write(string) vtk = VTK.from_file(os.path.join(tmp_path,'polyData.vtk'),'polyData') assert(string == vtp.__repr__() == vtk.__repr__()) @pytest.mark.parametrize('cell_type,n',[ ('VTK_hexahedron',8), ('TETRA',4), ('quad',4), ('VTK_TRIANGLE',3) ] ) def test_unstructuredGrid(self,tmp_path,cell_type,n): nodes = np.random.rand(n,3) connectivity = np.random.choice(np.arange(n),n,False).reshape(-1,n) v = VTK.from_unstructuredGrid(nodes,connectivity,cell_type) string = v.__repr__() v.write(os.path.join(tmp_path,'unstructuredGrid')) vtu = VTK.from_file(os.path.join(tmp_path,'unstructuredGrid.vtu')) with open(os.path.join(tmp_path,'unstructuredGrid.vtk'),'w') as f: f.write(string) vtk = VTK.from_file(os.path.join(tmp_path,'unstructuredGrid.vtk'),'unstructuredgrid') assert(string == vtu.__repr__() == vtk.__repr__()) @pytest.mark.parametrize('name,dataset_type',[('this_file_does_not_exist.vtk',None), ('this_file_does_not_exist.vtk','vtk'), ('this_file_does_not_exist.vtx', None)]) def test_invalid_dataset_type(self,dataset_type,name): with pytest.raises(TypeError): VTK.from_file('this_file_does_not_exist.vtk',dataset_type)