2020-03-05 17:31:40 +00:00
import io
from rich . console import Console
2020-11-25 17:54:16 +00:00
from rich . measure import Measurement
2020-03-05 17:31:40 +00:00
from rich . panel import Panel
import pytest
tests = [
2020-10-15 20:17:03 +00:00
Panel ( " Hello, World " , padding = 0 ) ,
Panel ( " Hello, World " , expand = False , padding = 0 ) ,
Panel . fit ( " Hello, World " , padding = 0 ) ,
Panel ( " Hello, World " , width = 8 , padding = 0 ) ,
Panel ( Panel ( " Hello, World " , padding = 0 ) , padding = 0 ) ,
Panel ( " Hello, World " , title = " FOO " , padding = 0 ) ,
2021-08-23 01:49:28 +00:00
Panel ( " Hello, World " , footer = " FOO " , padding = 0 ) ,
2020-03-05 17:31:40 +00:00
]
expected = [
" ╭────────────────────────────────────────────────╮ \n │Hello, World │ \n ╰────────────────────────────────────────────────╯ \n " ,
" ╭────────────╮ \n │Hello, World│ \n ╰────────────╯ \n " ,
2020-07-10 16:09:41 +00:00
" ╭────────────╮ \n │Hello, World│ \n ╰────────────╯ \n " ,
2020-03-05 17:31:40 +00:00
" ╭──────╮ \n │Hello,│ \n │World │ \n ╰──────╯ \n " ,
" ╭────────────────────────────────────────────────╮ \n │╭──────────────────────────────────────────────╮│ \n ││Hello, World ││ \n │╰──────────────────────────────────────────────╯│ \n ╰────────────────────────────────────────────────╯ \n " ,
2020-07-12 15:17:36 +00:00
" ╭───────────────────── FOO ──────────────────────╮ \n │Hello, World │ \n ╰────────────────────────────────────────────────╯ \n " ,
2021-08-23 01:49:28 +00:00
" ╭────────────────────────────────────────────────╮ \n │Hello, World │ \n ╰───────────────────── FOO ──────────────────────╯ \n " ,
2020-03-05 17:31:40 +00:00
]
def render ( panel , width = 50 ) - > str :
2020-06-20 16:51:53 +00:00
console = Console ( file = io . StringIO ( ) , width = 50 , legacy_windows = False )
2020-03-05 17:31:40 +00:00
console . print ( panel )
return console . file . getvalue ( )
@pytest.mark.parametrize ( " panel,expected " , zip ( tests , expected ) )
def test_render_panel ( panel , expected ) :
assert render ( panel ) == expected
def test_console_width ( ) :
2020-06-20 16:51:53 +00:00
console = Console ( file = io . StringIO ( ) , width = 50 , legacy_windows = False )
2020-03-05 17:31:40 +00:00
panel = Panel ( " Hello, World " , expand = False )
2021-03-25 21:08:36 +00:00
min_width , max_width = panel . __rich_measure__ ( console , console . options )
2020-10-15 20:17:03 +00:00
assert min_width == 16
assert max_width == 16
2020-03-05 17:31:40 +00:00
2020-11-25 17:54:16 +00:00
def test_fixed_width ( ) :
console = Console ( file = io . StringIO ( ) , width = 50 , legacy_windows = False )
panel = Panel ( " Hello World " , width = 20 )
2021-03-25 21:08:36 +00:00
min_width , max_width = panel . __rich_measure__ ( console , console . options )
2020-11-25 17:54:16 +00:00
assert min_width == 20
assert max_width == 20
2020-03-05 17:31:40 +00:00
if __name__ == " __main__ " :
expected = [ ]
for panel in tests :
result = render ( panel )
print ( result )
expected . append ( result )
print ( " -- " )
print ( )
print ( f " expected= { repr ( expected ) } " )