Files
Browser/tests/unit/test_renderers.py
2025-09-22 13:56:04 -05:00

129 lines
4.4 KiB
Python

import flet as ft
from ren_browser.renderer.micron import render_micron
from ren_browser.renderer.plaintext import render_plaintext
class TestPlaintextRenderer:
"""Test cases for the plaintext renderer."""
def test_render_plaintext_basic(self):
"""Test basic plaintext rendering."""
content = "Hello, world!"
result = render_plaintext(content)
assert isinstance(result, ft.Text)
assert result.value == "Hello, world!"
assert result.selectable is True
assert result.font_family == "monospace"
assert result.expand is True
def test_render_plaintext_multiline(self):
"""Test plaintext rendering with multiline content."""
content = "Line 1\nLine 2\nLine 3"
result = render_plaintext(content)
assert isinstance(result, ft.Text)
assert result.value == "Line 1\nLine 2\nLine 3"
assert result.selectable is True
def test_render_plaintext_empty(self):
"""Test plaintext rendering with empty content."""
content = ""
result = render_plaintext(content)
assert isinstance(result, ft.Text)
assert result.value == ""
assert result.selectable is True
def test_render_plaintext_special_chars(self):
"""Test plaintext rendering with special characters."""
content = "Special chars: !@#$%^&*()_+{}|:<>?[]\\;'\",./"
result = render_plaintext(content)
assert isinstance(result, ft.Text)
assert result.value == content
assert result.selectable is True
def test_render_plaintext_unicode(self):
"""Test plaintext rendering with Unicode characters."""
content = "Unicode: 你好 🌍 αβγ"
result = render_plaintext(content)
assert isinstance(result, ft.Text)
assert result.value == content
assert result.selectable is True
class TestMicronRenderer:
"""Test cases for the micron renderer.
Note: The micron renderer is currently a placeholder implementation
that displays raw content without markup processing.
"""
def test_render_micron_basic(self):
"""Test basic micron rendering (currently displays raw content)."""
content = "# Heading\n\nSome content"
result = render_micron(content)
assert isinstance(result, ft.Text)
assert result.value == "# Heading\n\nSome content"
assert result.selectable is True
assert result.font_family == "monospace"
assert result.expand is True
def test_render_micron_empty(self):
"""Test micron rendering with empty content."""
content = ""
result = render_micron(content)
assert isinstance(result, ft.Text)
assert result.value == ""
assert result.selectable is True
def test_render_micron_unicode(self):
"""Test micron rendering with Unicode characters."""
content = "Unicode content: 你好 🌍 αβγ"
result = render_micron(content)
assert isinstance(result, ft.Text)
assert result.value == content
assert result.selectable is True
class TestRendererComparison:
"""Test cases comparing both renderers."""
def test_renderers_return_same_type(self):
"""Test that both renderers return the same control type."""
content = "Test content"
plaintext_result = render_plaintext(content)
micron_result = render_micron(content)
assert type(plaintext_result) is type(micron_result)
assert isinstance(plaintext_result, ft.Text)
assert isinstance(micron_result, ft.Text)
def test_renderers_preserve_content(self):
"""Test that both renderers preserve the original content."""
content = "Test content with\nmultiple lines"
plaintext_result = render_plaintext(content)
micron_result = render_micron(content)
assert plaintext_result.value == content
assert micron_result.value == content
def test_renderers_same_properties(self):
"""Test that both renderers set the same basic properties."""
content = "Test content"
plaintext_result = render_plaintext(content)
micron_result = render_micron(content)
assert plaintext_result.selectable == micron_result.selectable
assert plaintext_result.font_family == micron_result.font_family
assert plaintext_result.expand == micron_result.expand