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