def test_multi_block_clean(rectilinear, uniform, ant): # now test a clean of the null values multi = MultiBlock() multi[1, 'rect'] = rectilinear multi[2, 'empty'] = PolyData() multi[3, 'mempty'] = MultiBlock() multi[5, 'uni'] = uniform # perform the clean to remove all Null elements multi.clean() assert multi.n_blocks == 2 assert multi.GetNumberOfBlocks() == 2 assert isinstance(multi[0], RectilinearGrid) assert isinstance(multi[1], UniformGrid) assert multi.get_block_name(0) == 'rect' assert multi.get_block_name(1) == 'uni' # Test a nested data struct foo = MultiBlock() foo[3] = ant assert foo.n_blocks == 4 multi = MultiBlock() multi[1, 'rect'] = rectilinear multi[5, 'multi'] = foo # perform the clean to remove all Null elements assert multi.n_blocks == 6 multi.clean() assert multi.n_blocks == 2 assert multi.GetNumberOfBlocks() == 2 assert isinstance(multi[0], RectilinearGrid) assert isinstance(multi[1], MultiBlock) assert multi.get_block_name(0) == 'rect' assert multi.get_block_name(1) == 'multi' assert foo.n_blocks == 1
def test_multi_block_init_dict(rectilinear, airplane): data = {'grid': rectilinear, 'poly': airplane} multi = MultiBlock(data) assert isinstance(multi, MultiBlock) assert multi.n_blocks == 2 # Note that dictionaries do not maintain order assert isinstance(multi.GetBlock(0), (RectilinearGrid, PolyData)) assert multi.get_block_name(0) in ['grid', 'poly'] assert isinstance(multi.GetBlock(1), (RectilinearGrid, PolyData)) assert multi.get_block_name(1) in ['grid', 'poly']
def test_multi_block_set_get_ers(): """This puts all of the example data objects into a a MultiBlock container""" multi = MultiBlock() # Set the number of blocks multi.n_blocks = 6 assert multi.GetNumberOfBlocks() == 6 # Check that VTK side registered it assert multi.n_blocks == 6 # Check pyvista side registered it # Add data to the MultiBlock data = ex.load_rectilinear() multi[1, 'rect'] = data # Make sure number of blocks is constant assert multi.n_blocks == 6 # Check content assert isinstance(multi[1], RectilinearGrid) for i in [0, 2, 3, 4, 5]: assert multi[i] is None # Check the bounds assert multi.bounds == list(data.bounds) multi[5] = ex.load_uniform() multi.set_block_name(5, 'uni') multi.set_block_name(5, None) # Make sure it doesn't get overwritten assert isinstance(multi.get(5), UniformGrid) # Test get by name assert isinstance(multi['uni'], UniformGrid) assert isinstance(multi['rect'], RectilinearGrid) # Test the del operator del multi[0] assert multi.n_blocks == 5 # Make sure the rect grid was moved up assert isinstance(multi[0], RectilinearGrid) assert multi.get_block_name(0) == 'rect' assert multi.get_block_name(2) == None # test del by name del multi['uni'] assert multi.n_blocks == 4 # test the pop operator pop = multi.pop(0) assert isinstance(pop, RectilinearGrid) assert multi.n_blocks == 3 assert multi.get_block_name(10) is None with pytest.raises(KeyError): _ = multi.get_index_by_name('foo') # allow Sequence but not Iterable in setitem with pytest.raises(TypeError): multi[{1, 'foo'}] = data