import unittest import render_skill CARD = """## 語氣與口癖 - 例 (v1c01-0001) ## 精選對白 - [v1c01-0001] greet/joy:「好久不見了,艾基爾」 - [v1c01-0002] tease/neutral:「你穿得一身黑有什麼理由嗎?」 """ ROWS = [{"id": "v1c01-0001", "text": "好久不見了,艾基爾"}, {"id": "v1c01-0002", "text": "你穿得一身黑有什麼理由嗎?"}] class Render(unittest.TestCase): def test_selected_quotes(self): self.assertEqual(render_skill.selected_quotes(CARD)[0], ("v1c01-0001", "好久不見了,艾基爾")) self.assertEqual(len(render_skill.selected_quotes(CARD)), 2) def test_check_quotes_accepts_verbatim_and_flags_changes(self): self.assertEqual(render_skill.check_quotes(CARD, ROWS), []) self.assertEqual(len(render_skill.check_quotes(CARD, [ROWS[0], {"id": "v1c01-0002", "text": "改過的句子"}])), 1) self.assertEqual(len(render_skill.check_quotes(CARD, ROWS[:1])), 1) def test_render_has_frontmatter_demotes_headings_and_keeps_rules(self): out = render_skill.render(CARD, "sao-suguha") self.assertTrue(out.startswith("---\nname: sao-suguha\n")) self.assertIn("### 語氣與口癖", out) self.assertNotIn("\n## 精選對白", out) self.assertIn("哥哥", out) self.assertIn("先用一句清楚的話說完", out) if __name__ == "__main__": unittest.main()