Example #1
0
 def test_line_to_law_node(self):
     self.assertEqual(
         Article(title='第一条',
                 children=Paragraph(title='第一項',
                                    number=1,
                                    sentence='これは第一項です。')),
         line_to_law_node('第一条 これは第一項です。'))
     self.assertEqual(Paragraph(number=2, sentence='これは第二項です。'),
                      line_to_law_node('2 これは第二項です。'))
     self.assertEqual(Article(caption='(テスト)'), line_to_law_node('(テスト)'))
     self.assertEqual(Item(title='一の二', sentence='これは第一の二号です。'),
                      line_to_law_node('一の二 これは第一の二号です。'))
Example #2
0
 def build_sample_law_tree():
     input_nodes = [
         Chapter(title='第一章'),
         Article(caption='テスト'),
         Article(title='第一条',
                 children=[Paragraph(title='第一項', sentence='第一条第一項')]),
         Item(title='第一号', sentence='第一条第一項第一号'),
         Item(title='第二号', sentence='第一条第一項第二号'),
         Paragraph(title='第二項', sentence='第一条第二項'),
         Article(title='第二条'),
         Paragraph(title='第一項', sentence='第二条第一項')
     ]
     builder = LawTreeBuilder()
     for node in input_nodes[::-1]:
         builder.add(node)
     return builder.build()
Example #3
0
    def test_apply_replace(self):
        node = Paragraph(title='第一項', sentence='私はネコです')
        node_finder = LawNodeFinder([node])
        action = parse_action_text('第一項中「ネコ」を「イヌ」に改める')

        apply_replace(action, node_finder)
        self.assertEqual('私はイヌです', node.sentence)
Example #4
0
    def test_apply_delete(self):
        node = Paragraph(title='第一項', sentence='私はネコです')
        node_finder = LawNodeFinder([node])
        action = parse_action_text('第一項中「私は」及び「です」を削る')

        apply_delete(action, node_finder)
        self.assertEqual('ネコ', node.sentence)
Example #5
0
    def test_apply_add_word_fail(self):
        node = Paragraph(title='第一項', sentence='私はネコです')
        node_finder = LawNodeFinder([node])
        action = parse_action_text('第一項中「サル」の下に「ザメ」を加える')

        with self.assertRaises(TextNotFoundError):
            apply_add_word(action, node_finder)
Example #6
0
    def test_apply_add_word(self):
        node = Paragraph(title='第一項', sentence='私はネコです')
        node_finder = LawNodeFinder([node])
        action = parse_action_text('第一項中「ネコ」の下に「ザメ」を加える')

        apply_add_word(action, node_finder)
        self.assertEqual('私はネコザメです', node.sentence)
Example #7
0
    def test_apply_replace_multiple_fail(self):
        node = Paragraph(title='第一項', sentence='私はネコネコです')
        node_finder = LawNodeFinder([node])
        action = parse_action_text('第一項中「ネコ」を「イヌ」に改める')

        with self.assertRaises(MultipleTextFoundError):
            apply_replace(action, node_finder)
Example #8
0
    def test_apply_delete_fail(self):
        node = Paragraph(title='第一項', sentence='私はネコです')
        node_finder = LawNodeFinder([node])
        action = parse_action_text('第一項中「私は」及び「でした」を削る')

        with self.assertRaises(TextNotFoundError):
            apply_delete(action, node_finder)
        self.assertEqual('私はネコです', node.sentence)  # not changed
Example #9
0
    def test_law_tree_biulder(self):
        input_nodes = [
            Chapter(title='第一章'),
            Article(caption='テスト'),
            Article(title='第一条',
                    children=[Paragraph(title='第一項', sentence='第一条第一項')]),
            Item(title='第一号', sentence='第一条第一項第一号'),
            Item(title='第二号', sentence='第一条第一項第二号'),
            Paragraph(title='第二項', sentence='第一条第二項'),
            Article(title='第二条'),
            Paragraph(title='第一項', sentence='第二条第一項')
        ]

        builder = LawTreeBuilder()
        for node in input_nodes[::-1]:
            builder.add(node)
        output_nodes = builder.build()

        self.assertEqual(1, len(output_nodes))
        chapter = output_nodes[0]
        self.assertEqual('第一章', chapter.title)
        self.assertEqual(2, len(chapter.children))
        article1 = chapter.children[0]
        self.assertEqual('第一条', article1.title)
        self.assertEqual('テスト', article1.caption)
        self.assertEqual(2, len(article1.children))
        paragraph1 = article1.children[0]
        self.assertEqual('第一条第一項', paragraph1.sentence)
        self.assertEqual(2, len(paragraph1.children))
        item1 = paragraph1.children[0]
        self.assertEqual('第一条第一項第一号', item1.sentence)
        self.assertEqual(0, len(item1.children))
        item2 = paragraph1.children[1]
        self.assertEqual('第一条第一項第二号', item2.sentence)
        self.assertEqual(0, len(item2.children))
        paragraph2 = article1.children[1]
        self.assertEqual('第一条第二項', paragraph2.sentence)
        self.assertEqual(0, len(paragraph2.children))
        article2 = chapter.children[1]
        self.assertEqual('第二条', article2.title)
        self.assertEqual('', article2.caption)
        self.assertEqual(1, len(article2.children))
        paragraph3 = article2.children[0]
        self.assertEqual('第二条第一項', paragraph3.sentence)
        self.assertEqual(0, len(paragraph3.children))
Example #10
0
    def test_law_tree_builder_add_fail(self):
        article = Article(title='第一条')
        item = Item(title='第一号')
        paragraph = Paragraph(title='第一項')

        law_tree_builder = LawTreeBuilder()
        law_tree_builder.add(paragraph)
        law_tree_builder.add(item)
        with self.assertRaises(ValueError):
            law_tree_builder.add(
                article
            )  # failed to add as multiple children exists at different hierarchy (=paragraph and item)