54 lines
2.2 KiB
Python
54 lines
2.2 KiB
Python
from unittest.mock import patch, MagicMock
|
|
from src.markdown_helper import MarkdownRenderer
|
|
|
|
def test_bullet_list_renders_each_item_with_imgui_bullet():
|
|
chunk = "- one\n- two\n- three\n"
|
|
with patch("src.markdown_helper.imgui") as mock_imgui, patch("src.markdown_helper.imgui_md") as mock_md:
|
|
mock_imgui.bullet = MagicMock()
|
|
mock_imgui.same_line = MagicMock()
|
|
mock_imgui.spacing = MagicMock()
|
|
mock_imgui.indent = MagicMock()
|
|
mock_imgui.unindent = MagicMock()
|
|
mock_md.render = MagicMock()
|
|
MarkdownRenderer()._render_md_no_bullet_overlap(chunk)
|
|
assert mock_imgui.bullet.call_count >= 3
|
|
assert mock_imgui.same_line.call_count >= 3
|
|
assert mock_md.render.call_count >= 3
|
|
|
|
def test_bullet_list_with_blank_lines_uses_spacing():
|
|
chunk = "- one\n\n- two\n"
|
|
with patch("src.markdown_helper.imgui") as mock_imgui, patch("src.markdown_helper.imgui_md") as mock_md:
|
|
mock_imgui.bullet = MagicMock()
|
|
mock_imgui.same_line = MagicMock()
|
|
mock_imgui.spacing = MagicMock()
|
|
mock_imgui.indent = MagicMock()
|
|
mock_imgui.unindent = MagicMock()
|
|
mock_md.render = MagicMock()
|
|
MarkdownRenderer()._render_md_no_bullet_overlap(chunk)
|
|
assert mock_imgui.spacing.call_count >= 1
|
|
|
|
def test_non_bullet_markdown_routes_to_imgui_md():
|
|
chunk = "# Header\n\nSome prose."
|
|
with patch("src.markdown_helper.imgui") as mock_imgui, patch("src.markdown_helper.imgui_md") as mock_md:
|
|
mock_imgui.bullet = MagicMock()
|
|
mock_imgui.same_line = MagicMock()
|
|
mock_imgui.spacing = MagicMock()
|
|
mock_imgui.indent = MagicMock()
|
|
mock_imgui.unindent = MagicMock()
|
|
mock_md.render = MagicMock()
|
|
MarkdownRenderer()._render_md_no_bullet_overlap(chunk)
|
|
assert not mock_imgui.bullet.called
|
|
assert mock_md.render.call_count == 1
|
|
|
|
def test_mixed_bullets_and_prose_splits_correctly():
|
|
chunk = "Prose before.\n\n- b1\n- b2\n\nProse after."
|
|
with patch("src.markdown_helper.imgui") as mock_imgui, patch("src.markdown_helper.imgui_md") as mock_md:
|
|
mock_imgui.bullet = MagicMock()
|
|
mock_imgui.same_line = MagicMock()
|
|
mock_imgui.spacing = MagicMock()
|
|
mock_imgui.indent = MagicMock()
|
|
mock_imgui.unindent = MagicMock()
|
|
mock_md.render = MagicMock()
|
|
MarkdownRenderer()._render_md_no_bullet_overlap(chunk)
|
|
assert mock_imgui.bullet.call_count >= 2
|
|
assert mock_md.render.call_count >= 2 |