"""附件类章节识别与单图/单表类型选择。""" import unittest from utils import attachment_section as att class TestIsAttachment(unittest.TestCase): def test_positive(self): r = att.load_attachment_rules() self.assertTrue(att.is_attachment_only_section('附件一:施工平面布置', r)) self.assertTrue(att.is_attachment_only_section('附图 组织机构', r)) self.assertTrue(att.is_attachment_only_section('附表 人员一览', r)) def test_negative(self): r = att.load_attachment_rules() self.assertFalse(att.is_attachment_only_section('施工组织设计', r)) self.assertFalse(att.is_attachment_only_section('', r)) class TestPickKind(unittest.TestCase): def test_only_figure_switch(self): r = att.DEFAULT_ATTACHMENT_RULES self.assertEqual( att.pick_single_figure_or_table('附件一:xxx', True, False, r), 'figure', ) def test_only_table_switch(self): r = att.DEFAULT_ATTACHMENT_RULES self.assertEqual( att.pick_single_figure_or_table('附件一:xxx', False, True, r), 'table', ) def test_both_off(self): self.assertIsNone( att.pick_single_figure_or_table('附件一', False, False, None), ) def test_table_hint(self): r = att.DEFAULT_ATTACHMENT_RULES k = att.pick_single_figure_or_table('附件三 工程量一览表', True, True, r) self.assertEqual(k, 'table') def test_figure_hint(self): r = att.DEFAULT_ATTACHMENT_RULES k = att.pick_single_figure_or_table('附图 施工平面示意图', True, True, r) self.assertEqual(k, 'figure') def test_default_ambiguous(self): r = dict(att.DEFAULT_ATTACHMENT_RULES) r['default_kind_when_ambiguous'] = 'table' k = att.pick_single_figure_or_table('附件五 其他资料', True, True, r) self.assertEqual(k, 'table') class TestAttachmentBodyMode(unittest.TestCase): def test_default_stack_charts_only(self): r = att.DEFAULT_ATTACHMENT_RULES self.assertEqual(att.attachment_leaf_body_mode(r), 'stack_charts_only') self.assertTrue(att.use_attachment_stack_charts_body(r)) self.assertFalse(att.use_attachment_single_chart_only_body(r)) self.assertFalse(att.use_attachment_full_body(r)) def test_full_mode(self): r = dict(att.DEFAULT_ATTACHMENT_RULES) r['attachment_leaf_body_mode'] = 'full' self.assertEqual(att.attachment_leaf_body_mode(r), 'full') self.assertTrue(att.use_attachment_full_body(r)) self.assertFalse(att.use_attachment_stack_charts_body(r)) def test_single_chart_only(self): r = dict(att.DEFAULT_ATTACHMENT_RULES) r['attachment_leaf_body_mode'] = 'single_chart_only' self.assertTrue(att.use_attachment_single_chart_only_body(r)) self.assertTrue(att.use_attachment_stack_charts_body(r)) class TestExpandOutlineSkip(unittest.TestCase): def test_should_skip_attachment(self): self.assertTrue(att.should_skip_expand_subchapters('附件一:平面图')) self.assertTrue(att.should_skip_expand_subchapters('附图 示意')) def test_should_skip_normal_chapter(self): self.assertFalse(att.should_skip_expand_subchapters('施工组织设计')) self.assertFalse(att.should_skip_expand_subchapters('质量管理体系与措施')) def test_parse_attachment_label(self): self.assertEqual(att.parse_attachment_label('附件一:平面图'), '一') self.assertEqual(att.parse_attachment_label('附件2 承诺书'), '2') self.assertEqual(att.parse_attachment_label('附图 总平面'), '附图') if __name__ == '__main__': unittest.main()