"""examples to check summary, not converted to tests yet


"""

import numpy as np
from numpy.testing import assert_equal
import pytest

from statsmodels.datasets import macrodata
from statsmodels.regression.linear_model import OLS
from statsmodels.tools.tools import add_constant


def test_escaped_variable_name():
    # Rename 'cpi' column to 'CPI_'
    data = macrodata.load().data
    data.rename(columns={"cpi": "CPI_"}, inplace=True)

    mod = OLS.from_formula("CPI_ ~ 1 + np.log(realgdp)", data=data)
    res = mod.fit()
    assert "CPI\\_" in res.summary().as_latex()
    assert "CPI_" in res.summary().as_text()


def test_wrong_len_xname(reset_randomstate):
    y = np.random.randn(100)
    x = np.random.randn(100, 2)
    res = OLS(y, x).fit()
    with pytest.raises(ValueError):
        res.summary(xname=["x1"])
    with pytest.raises(ValueError):
        res.summary(xname=["x1", "x2", "x3"])


class TestSummaryLatex:
    def test__repr_latex_(self):
        desired = r"""
\begin{center}
\begin{tabular}{lcccccc}
\toprule
               & \textbf{coef} & \textbf{std err} & \textbf{t} & \textbf{P$> |$t$|$} & \textbf{[0.025} & \textbf{0.975]}  \\
\midrule
\textbf{const} &       7.2248  &        0.866     &     8.346  &         0.000        &        5.406    &        9.044     \\
\textbf{x1}    &      -0.6609  &        0.177     &    -3.736  &         0.002        &       -1.033    &       -0.289     \\
\bottomrule
\end{tabular}
\end{center}
"""
        x = [1, 5, 7, 3, 5, 5, 8, 3, 3, 4, 6, 4, 2, 7, 4, 2, 1, 9, 2, 6]
        x = add_constant(x)
        y = [6, 4, 2, 7, 4, 2, 1, 9, 2, 6, 1, 5, 7, 3, 5, 5, 8, 3, 3, 4]
        reg = OLS(y, x).fit()

        actual = reg.summary().tables[1]._repr_latex_()
        actual = "\n%s\n" % actual
        assert_equal(actual, desired)


if __name__ == "__main__":

    from statsmodels.regression.tests.test_regression import TestOLS

    # def mytest():
    aregression = TestOLS()
    TestOLS.setup_class()
    results = aregression.res1
    r_summary = str(results.summary_old())
    print(r_summary)
    olsres = results

    print("\n\n")

    r_summary = str(results.summary())
    print(r_summary)
    print("\n\n")

    from statsmodels.discrete.tests.test_discrete import TestProbitNewton

    aregression = TestProbitNewton()
    TestProbitNewton.setup_class()
    results = aregression.res1
    r_summary = str(results.summary())
    print(r_summary)
    print("\n\n")

    probres = results

    from statsmodels.robust.tests.test_rlm import TestHampel

    aregression = TestHampel()
    # TestHampel.setup_class()
    results = aregression.res1
    r_summary = str(results.summary())
    print(r_summary)
    rlmres = results

    print("\n\n")

    from statsmodels.genmod.tests.test_glm import TestGlmBinomial

    aregression = TestGlmBinomial()
    # TestGlmBinomial.setup_class()
    results = aregression.res1
    r_summary = str(results.summary())
    print(r_summary)

    # print(results.summary2(return_fmt='latex'))
    # print(results.summary2(return_fmt='csv'))

    smry = olsres.summary()
    print(smry.as_csv())

#    import matplotlib.pyplot as plt
#    plt.plot(rlmres.model.endog,'o')
#    plt.plot(rlmres.fittedvalues,'-')
#
#    plt.show()
