from textwrap import dedent
|
|
import pytest
|
|
from pandas import DataFrame
|
|
pytest.importorskip("jinja2")
|
from pandas.io.formats.style import Styler
|
|
|
@pytest.fixture
|
def df():
|
return DataFrame({"A": [0, 1], "B": [-0.61, -1.22], "C": ["ab", "cd"]})
|
|
|
@pytest.fixture
|
def styler(df):
|
return Styler(df, uuid_len=0, precision=2)
|
|
|
def test_basic_string(styler):
|
result = styler.to_string()
|
expected = dedent(
|
"""\
|
A B C
|
0 0 -0.61 ab
|
1 1 -1.22 cd
|
"""
|
)
|
assert result == expected
|
|
|
def test_string_delimiter(styler):
|
result = styler.to_string(delimiter=";")
|
expected = dedent(
|
"""\
|
;A;B;C
|
0;0;-0.61;ab
|
1;1;-1.22;cd
|
"""
|
)
|
assert result == expected
|
|
|
def test_concat(styler):
|
result = styler.concat(styler.data.agg(["sum"]).style).to_string()
|
expected = dedent(
|
"""\
|
A B C
|
0 0 -0.61 ab
|
1 1 -1.22 cd
|
sum 1 -1.830000 abcd
|
"""
|
)
|
assert result == expected
|
|
|
def test_concat_recursion(styler):
|
df = styler.data
|
styler1 = styler
|
styler2 = Styler(df.agg(["sum"]), uuid_len=0, precision=3)
|
styler3 = Styler(df.agg(["sum"]), uuid_len=0, precision=4)
|
result = styler1.concat(styler2.concat(styler3)).to_string()
|
expected = dedent(
|
"""\
|
A B C
|
0 0 -0.61 ab
|
1 1 -1.22 cd
|
sum 1 -1.830 abcd
|
sum 1 -1.8300 abcd
|
"""
|
)
|
assert result == expected
|
|
|
def test_concat_chain(styler):
|
df = styler.data
|
styler1 = styler
|
styler2 = Styler(df.agg(["sum"]), uuid_len=0, precision=3)
|
styler3 = Styler(df.agg(["sum"]), uuid_len=0, precision=4)
|
result = styler1.concat(styler2).concat(styler3).to_string()
|
expected = dedent(
|
"""\
|
A B C
|
0 0 -0.61 ab
|
1 1 -1.22 cd
|
sum 1 -1.830 abcd
|
sum 1 -1.8300 abcd
|
"""
|
)
|
assert result == expected
|