import numpy as np

from statsmodels.tsa.interp import dentonm


def test_denton_quarterly():
    # Data and results taken from IMF paper
    indicator = np.array([
        98.2, 100.8, 102.2, 100.8, 99.0, 101.6,
        102.7, 101.5, 100.5, 103.0, 103.5, 101.5
    ])
    benchmark = np.array([4000., 4161.4])
    x_imf = dentonm(indicator, benchmark, freq="aq")
    imf_stata = np.array([
        969.8, 998.4, 1018.3, 1013.4, 1007.2, 1042.9,
        1060.3, 1051.0, 1040.6, 1066.5, 1071.7, 1051.0
    ])
    np.testing.assert_almost_equal(imf_stata, x_imf, 1)


def test_denton_quarterly2():
    # Test denton vs stata. Higher precision than other test.
    zQ = np.array([50, 100, 150, 100] * 5)
    Y = np.array([500, 400, 300, 400, 500])
    x_denton = dentonm(zQ, Y, freq="aq")
    x_stata = np.array([
        64.334796, 127.80616, 187.82379, 120.03526, 56.563894,
        105.97568, 147.50144, 89.958987, 40.547201, 74.445963,
        108.34473, 76.66211, 42.763347, 94.14664, 153.41596,
        109.67405, 58.290761, 122.62556, 190.41409, 128.66959
    ])
    np.testing.assert_almost_equal(x_denton, x_stata, 5)


if __name__ == "__main__":
    import pytest
    pytest.main([__file__, "-vvs", "-x", "--pdb"])
