tech-bid-manage20260423A/tests/test_outline_numbering.py
2026-04-23 17:10:38 +08:00

45 lines
1.7 KiB
Python

"""目录号格式化与大纲带号写回。"""
import os
import sys
import unittest
_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
if _ROOT not in sys.path:
sys.path.insert(0, _ROOT)
from modules.generator import _parse_outline, _sections_to_outline_text # noqa: E402
from utils.outline_numbering import format_heading_display, int_to_chinese_numeral # noqa: E402
class TestOutlineNumbering(unittest.TestCase):
def test_int_to_chinese(self):
self.assertEqual(int_to_chinese_numeral(1), "")
self.assertEqual(int_to_chinese_numeral(10), "")
self.assertEqual(int_to_chinese_numeral(11), "十一")
self.assertEqual(int_to_chinese_numeral(23), "二十三")
def test_format_heading(self):
self.assertEqual(format_heading_display(1, "3", "总体"), "三、总体")
self.assertEqual(format_heading_display(2, "1.2", "子节"), "1.2 子节")
def test_sections_to_outline_text_has_numbers(self):
sections = [
{"level": 1, "title": "第一章", "number": "1"},
{"level": 2, "title": "小节", "number": "1.1"},
]
text = _sections_to_outline_text("某项目技术标书", sections)
self.assertIn("某项目技术标书", text)
self.assertIn("一、第一章", text)
self.assertIn("1.1 小节", text)
def test_parse_roundtrip_numbered_outline(self):
raw = "标书标题\n一、第一章\n1.1 节A\n"
_, sections, normalized = _parse_outline(raw)
self.assertGreaterEqual(len(sections), 2)
self.assertIn("一、第一章", normalized)
self.assertIn("1.1 节A", normalized)
if __name__ == "__main__":
unittest.main()