def test_fill(self):
        array = np.array([[np.NaN] * 4 + [1., 2., 3., 4.] + [np.NaN] * 3,
                          [
                              1., np.NaN, np.NaN, 2., 3., np.NaN, np.NaN,
                              np.NaN, 4., np.NaN, 5.
                          ]])

        array_ffill = ValueFilloutTask.fill(array, operation='f')
        array_bfill = ValueFilloutTask.fill(array, operation='b')
        array_fbfill = ValueFilloutTask.fill(array_ffill, operation='b')

        self.assertTrue(
            np.array_equal(array_ffill,
                           np.array(
                               [[np.NaN] * 4 + [1., 2., 3., 4., 4., 4., 4.],
                                [1., 1., 1., 2., 3., 3., 3., 3., 4., 4., 5.]]),
                           equal_nan=True))

        self.assertTrue(
            np.array_equal(
                array_bfill,
                np.array([[1., 1., 1., 1., 1., 2., 3., 4.] + [np.NaN] * 3,
                          [1., 2., 2., 2., 3., 4., 4., 4., 4., 5., 5.]]),
                equal_nan=True))

        self.assertTrue(
            np.array_equal(array_fbfill,
                           np.array(
                               [[1., 1., 1., 1., 1., 2., 3., 4., 4., 4., 4.],
                                [1., 1., 1., 2., 3., 3., 3., 3., 4., 4., 5.]]),
                           equal_nan=True))
def test_fill():
    array = np.array([
        [np.NaN] * 4 + [1.0, 2.0, 3.0, 4.0] + [np.NaN] * 3,
        [
            1.0, np.NaN, np.NaN, 2.0, 3.0, np.NaN, np.NaN, np.NaN, 4.0, np.NaN,
            5.0
        ],
    ])

    array_ffill = ValueFilloutTask.fill(array, operation="f")
    array_bfill = ValueFilloutTask.fill(array, operation="b")
    array_fbfill = ValueFilloutTask.fill(array_ffill, operation="b")

    assert_allclose(
        array_ffill,
        np.array([
            [np.NaN] * 4 + [1.0, 2.0, 3.0, 4.0, 4.0, 4.0, 4.0],
            [1.0, 1.0, 1.0, 2.0, 3.0, 3.0, 3.0, 3.0, 4.0, 4.0, 5.0],
        ]),
        equal_nan=True,
    )

    assert_allclose(
        array_bfill,
        np.array([
            [1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 3.0, 4.0] + [np.NaN] * 3,
            [1.0, 2.0, 2.0, 2.0, 3.0, 4.0, 4.0, 4.0, 4.0, 5.0, 5.0],
        ]),
        equal_nan=True,
    )

    assert_allclose(
        array_fbfill,
        np.array([
            [1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 3.0, 4.0, 4.0, 4.0, 4.0],
            [1.0, 1.0, 1.0, 2.0, 3.0, 3.0, 3.0, 3.0, 4.0, 4.0, 5.0],
        ]),
        equal_nan=True,
    )