def test_neighbours_3d():
    neighbour2d = lambda (x, y, z): [
        (x - 1, y - 1, z - 1),
        (x - 1, y - 1, z),
        (x - 1, y - 1, z + 1),
        (x - 1, y, z - 1),
        (x - 1, y, z),
        (x - 1, y, z + 1),
        (x - 1, y + 1, z - 1),
        (x - 1, y + 1, z),
        (x - 1, y + 1, z + 1),
        (x, y - 1, z - 1),
        (x, y - 1, z),
        (x, y - 1, z + 1),
        (x, y, z - 1),
        (x, y, z + 1),
        (x, y + 1, z - 1),
        (x, y + 1, z),
        (x, y + 1, z + 1),
        (x + 1, y - 1, z - 1),
        (x + 1, y - 1, z),
        (x + 1, y - 1, z + 1),
        (x + 1, y, z - 1),
        (x + 1, y, z),
        (x + 1, y, z + 1),
        (x + 1, y + 1, z - 1),
        (x + 1, y + 1, z),
        (x + 1, y + 1, z + 1),
    ]
    for coordinates2d in [(5, 5, 5), (10, 10, 0), (0, 0, 0), (-1, 5, 0), (-1, 43, -5)]:
        np.testing.assert_array_equal(neighbours(coordinates2d), neighbour2d(coordinates2d))
def test_neighbours_1d():
    neighbour1d = lambda x: [[x[0] - 1], [x[0] + 1]]
    for coordinates1d in [[5], [10], [0], [-1]]:
        np.testing.assert_array_equal(neighbours(coordinates1d), neighbour1d(coordinates1d))