import pytest

import pandas as pd
import pandas.util.testing as tm


class TestDatetimeIndex(object):

    @pytest.mark.parametrize('tz', ['US/Eastern', 'Asia/Tokyo'])
    def test_fillna_datetime64(self, tz):
        # GH 11343
        idx = pd.DatetimeIndex(['2011-01-01 09:00', pd.NaT,
                                '2011-01-01 11:00'])

        exp = pd.DatetimeIndex(['2011-01-01 09:00', '2011-01-01 10:00',
                                '2011-01-01 11:00'])
        tm.assert_index_equal(
            idx.fillna(pd.Timestamp('2011-01-01 10:00')), exp)

        # tz mismatch
        exp = pd.Index([pd.Timestamp('2011-01-01 09:00'),
                        pd.Timestamp('2011-01-01 10:00', tz=tz),
                        pd.Timestamp('2011-01-01 11:00')], dtype=object)
        tm.assert_index_equal(
            idx.fillna(pd.Timestamp('2011-01-01 10:00', tz=tz)), exp)

        # object
        exp = pd.Index([pd.Timestamp('2011-01-01 09:00'), 'x',
                        pd.Timestamp('2011-01-01 11:00')], dtype=object)
        tm.assert_index_equal(idx.fillna('x'), exp)

        idx = pd.DatetimeIndex(['2011-01-01 09:00', pd.NaT,
                                '2011-01-01 11:00'], tz=tz)

        exp = pd.DatetimeIndex(['2011-01-01 09:00', '2011-01-01 10:00',
                                '2011-01-01 11:00'], tz=tz)
        tm.assert_index_equal(
            idx.fillna(pd.Timestamp('2011-01-01 10:00', tz=tz)), exp)

        exp = pd.Index([pd.Timestamp('2011-01-01 09:00', tz=tz),
                        pd.Timestamp('2011-01-01 10:00'),
                        pd.Timestamp('2011-01-01 11:00', tz=tz)],
                       dtype=object)
        tm.assert_index_equal(
            idx.fillna(pd.Timestamp('2011-01-01 10:00')), exp)

        # object
        exp = pd.Index([pd.Timestamp('2011-01-01 09:00', tz=tz),
                        'x',
                        pd.Timestamp('2011-01-01 11:00', tz=tz)],
                       dtype=object)
        tm.assert_index_equal(idx.fillna('x'), exp)
