def test_parallel_mesh_gen(self, data_field_class): r""" only testing initializtion and merge_queue generation. The other functions are exercised during integration testing """ # # testing ParallelMeshGen init method # field = data_field_class() # testing defaults first pmg = ParallelMeshGen(field, 'system-test') assert pmg.system_dir == 'system-test' assert pmg.nprocs == 4 assert pmg.mesh_params == {} assert pmg.merge_groups == [] assert pmg.avg_fact == 1.0 assert pmg.nx == field.nx assert pmg.nz == field.nz assert sp.all(pmg._mask) # # checking pmg only has references to data initially, new references are # created if the 'threashold' method was used because it resets the arrays # using the internal _field which was cloned and independent of the original assert id(pmg.data_map) == id(field.data_map) assert id(pmg.data_vector) == id(field.data_vector) assert id(pmg.point_data) == id(field.point_data) assert id(pmg._field) != id(field) # # testing non default values params = {'test-key': 'test-value'} pmg = ParallelMeshGen(field, 'system-test', nprocs=15, avg_fact=7.0, mesh_params=params) assert pmg.nprocs == 15 assert pmg.avg_fact == 7.0 assert pmg.mesh_params == params # # Testing ParaMeshGen _create_merge_queue method # # testing merge queue for (2**, 2**n) grid shapes grid = sp.reshape(sp.arange(4, dtype=int), (2, 2)) queue, new_grid = pmg._create_merge_queue(grid, 'right') assert queue.qsize() == 2 pairs = [] while queue.qsize(): pairs.append(queue.get()) assert pairs == [(0, 1), (2, 3)] assert sp.all(new_grid == sp.array([[0], [2]], ndmin=2, dtype=int)) # grid = sp.reshape(sp.arange(4, dtype=int), (2, 2)) queue, new_grid = pmg._create_merge_queue(grid, 'top') assert queue.qsize() == 2 pairs = [] while queue.qsize(): pairs.append(queue.get()) assert pairs == [(0, 2), (1, 3)] assert sp.all(new_grid == sp.array([[0, 1]], ndmin=2, dtype=int)) # # testing merge queue for (n x n) grid shapes grid = sp.reshape(sp.arange(6, dtype=int), (2, 3)) queue, new_grid = pmg._create_merge_queue(grid, 'right') assert queue.qsize() == 2 pairs = [] while queue.qsize(): pairs.append(queue.get()) assert pairs == [(0, 1), (3, 4)] assert sp.all(new_grid == sp.array([[0, 2], [3, 5]], ndmin=2, dtype=int)) # grid = sp.reshape(sp.arange(6, dtype=int), (3, 2)) queue, new_grid = pmg._create_merge_queue(grid, 'top') assert queue.qsize() == 2 pairs = [] while queue.qsize(): pairs.append(queue.get()) assert pairs == [(0, 2), (1, 3)] assert sp.all(new_grid == sp.array([[0, 1], [4, 5]], ndmin=2, dtype=int))