def METHOD_NAME(self):
    add_layer = GroupPointsByBoundingBoxes(
        label_index=1,
        min_points_per_bounding_boxes=1,
        max_points_per_bounding_boxes=2,
    )
    point_clouds = np.array(
        [
            [
                [0, 1, 2, 3, 4],
                [10, 1, 2, 3, 4],
                [0, -1, 2, 3, 4],
                [100, 100, 2, 3, 4],
            ]
        ]
        * 2
    ).astype("float32")
    bounding_boxes = np.array(
        [
            [
                [0, 0, 0, 4, 4, 4, 0, 1],
                [10, 1, 2, 2, 2, 2, 0, 1],
                [20, 20, 20, 1, 1, 1, 0, 1],
            ]
        ]
        * 2
    ).astype("float32")
    inputs = {
        POINT_CLOUDS: point_clouds,
        BOUNDING_BOXES: bounding_boxes,
        "dummy_item": np.random.uniform(size=(2, 2, 2)),
    }
    outputs = add_layer(inputs)
    object_point_clouds = np.array(
        [
            [
                [[0, 1, 2, 3, 4], [0, -1, 2, 3, 4]],
                [[10, 1, 2, 3, 4], [0, 0, 0, 0, 0]],
            ]
        ]
        * 2
    ).astype("float32")
    object_bounding_boxes = np.array(
        [[[0, 0, 0, 4, 4, 4, 0, 1], [10, 1, 2, 2, 2, 2, 0, 1]]] * 2
    ).astype("float32")
    self.assertAllClose(inputs[POINT_CLOUDS], outputs[POINT_CLOUDS])
    self.assertAllClose(inputs[BOUNDING_BOXES], outputs[BOUNDING_BOXES])
    self.assertAllClose(inputs["dummy_item"], outputs["dummy_item"])
    # Sort the point clouds due to the orders of points are different when
    # using Tensorflow and Metal+Tensorflow (MAC).
    outputs[OBJECT_POINT_CLOUDS] = tf.sort(
        outputs[OBJECT_POINT_CLOUDS], axis=-2
    )
    object_point_clouds = tf.sort(object_point_clouds, axis=-2)
    self.assertAllClose(outputs[OBJECT_POINT_CLOUDS], object_point_clouds)
    self.assertAllClose(
        outputs[OBJECT_BOUNDING_BOXES], object_bounding_boxes
    )