Add basic test suite
This commit is contained in:
128
tests/unit/test_renderers.py
Normal file
128
tests/unit/test_renderers.py
Normal file
@@ -0,0 +1,128 @@
|
||||
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
|
||||
Reference in New Issue
Block a user