aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/tests/test_renderers.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_renderers.py')
-rw-r--r--tests/test_renderers.py114
1 files changed, 114 insertions, 0 deletions
diff --git a/tests/test_renderers.py b/tests/test_renderers.py
new file mode 100644
index 0000000..13e4540
--- /dev/null
+++ b/tests/test_renderers.py
@@ -0,0 +1,114 @@
+#!/usr/bin/env python3
+"""
+Renderers 模块单元测试
+"""
+
+import unittest
+import json
+from conventionalrp.renderers.html_renderer import HTMLRenderer
+from conventionalrp.renderers.json_renderer import JSONRenderer
+from conventionalrp.renderers.markdown_renderer import MarkdownRenderer
+
+
+class TestRenderers(unittest.TestCase):
+ """测试所有渲染器"""
+
+ def setUp(self):
+ """设置测试数据"""
+ self.sample_data = [
+ {
+ "type": "metadata",
+ "timestamp": "2025-10-24 14:30:01",
+ "speaker": "艾莉娅",
+ "content": [
+ {"type": "dialogue", "content": "「测试对话」"}
+ ]
+ },
+ {
+ "type": "metadata",
+ "timestamp": "2025-10-24 14:30:05",
+ "speaker": "DM",
+ "content": [
+ {"type": "text", "content": "测试文本"}
+ ]
+ }
+ ]
+
+ self.dict_data = {
+ "title": "测试标题",
+ "content": "测试内容"
+ }
+
+ def test_html_renderer_basic(self):
+ """测试 HTML 渲染器基本功能"""
+ renderer = HTMLRenderer()
+ output = renderer.render(self.sample_data)
+
+ self.assertIsInstance(output, str)
+ self.assertIn("<html>", output)
+ self.assertIn("</html>", output)
+ self.assertIn("<title>", output)
+
+ def test_html_renderer_set_style(self):
+ """测试 HTML 渲染器设置样式"""
+ renderer = HTMLRenderer()
+ renderer.set_style("custom_style")
+ # 当前实现为占位符,仅测试不抛出异常
+ self.assertIsNotNone(renderer)
+
+ def test_json_renderer_basic(self):
+ """测试 JSON 渲染器基本功能"""
+ renderer = JSONRenderer()
+ output = renderer.render(self.sample_data)
+
+ self.assertIsInstance(output, str)
+
+ # 验证输出是有效的 JSON
+ parsed = json.loads(output)
+ self.assertIsInstance(parsed, list)
+ self.assertEqual(len(parsed), len(self.sample_data))
+
+ def test_json_renderer_unicode(self):
+ """测试 JSON 渲染器处理 Unicode"""
+ renderer = JSONRenderer()
+ output = renderer.render(self.sample_data)
+
+ # 应该保留中文字符
+ self.assertIn("艾莉娅", output)
+ self.assertIn("测试", output)
+
+ def test_markdown_renderer_basic(self):
+ """测试 Markdown 渲染器基本功能"""
+ renderer = MarkdownRenderer()
+ output = renderer.render(self.dict_data)
+
+ self.assertIsInstance(output, str)
+ self.assertIn("##", output) # 应该有标题标记
+ self.assertIn("测试标题", output)
+
+ def test_markdown_renderer_set_style(self):
+ """测试 Markdown 渲染器设置样式"""
+ renderer = MarkdownRenderer()
+ style = {"heading_level": 2}
+ renderer.set_style(style)
+ self.assertEqual(renderer.style, style)
+
+ def test_all_renderers_empty_data(self):
+ """测试所有渲染器处理空数据"""
+ empty_data = []
+
+ html_renderer = HTMLRenderer()
+ html_output = html_renderer.render(empty_data)
+ self.assertIsInstance(html_output, str)
+
+ json_renderer = JSONRenderer()
+ json_output = json_renderer.render(empty_data)
+ self.assertEqual(json_output, "[]")
+
+ md_renderer = MarkdownRenderer()
+ md_output = md_renderer.render({})
+ self.assertEqual(md_output, "")
+
+
+if __name__ == "__main__":
+ unittest.main()