File: test_text_opacity.py

package info (click to toggle)
textual 2.1.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 55,084 kB
  • sloc: python: 85,423; lisp: 1,669; makefile: 101
file content (44 lines) | stat: -rw-r--r-- 1,300 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import pytest
from rich.text import Text

from tests.utilities.render import render
from textual.renderables.text_opacity import TextOpacity

STOP = "\x1b[0m"


@pytest.fixture
def text():
    return Text("Hello, world!", style="#ff0000 on #00ff00", end="")


def test_simple_text_opacity(text):
    blended_red_on_green = "\x1b[38;2;127;127;0;48;2;0;255;0m"
    assert render(TextOpacity(text, opacity=0.5)) == (
        f"{blended_red_on_green}Hello, world!{STOP}"
    )


def test_value_zero_doesnt_render_the_text(text):
    assert render(TextOpacity(text, opacity=0)) == (
        f"\x1b[48;2;0;255;0m             {STOP}"
    )


def test_text_opacity_value_of_one_noop(text):
    assert render(TextOpacity(text, opacity=1)) == render(text)


def test_text_opacity_no_style_noop():
    text_no_style = Text("Hello, world!", end="")
    assert render(TextOpacity(text_no_style, opacity=0.2)) == render(text_no_style)


def test_text_opacity_only_fg_noop():
    text_only_fg = Text("Hello, world!", style="#ff0000", end="")
    assert render(TextOpacity(text_only_fg, opacity=0.5)) == render(text_only_fg)


def test_text_opacity_only_bg_noop():
    text_only_bg = Text("Hello, world!", style="on #ff0000", end="")
    assert render(TextOpacity(text_only_bg, opacity=0.5)) == render(text_only_bg)