def test_parse_interp(self, interpretations):
        xmls = []
        with XMLBuilder("REGTEXT") as ctx:
            with ctx.EXTRACT():
                ctx.P("Something")
                ctx.STARS()
                ctx.HD("Supplement I")
                ctx.HD("A")
                ctx.T1("a")
                ctx.P("b")
        xmls.append(ctx.xml)

        with XMLBuilder("REGTEXT") as ctx:
            ctx.P("Something")
            ctx.STARS()
            with ctx.SUBSECT():
                ctx.HD("Supplement I")
            ctx.HD("A")
            ctx.T1("a")
            ctx.P("b")
        xmls.append(ctx.xml)

        with XMLBuilder("REGTEXT") as ctx:
            ctx.AMDPAR("1. In Supplement I to part 111, under...")
            ctx.P("Something")
            ctx.STARS()
            ctx.HD("SUPPLEMENT I")
            ctx.HD("A")
            ctx.T1("a")
            ctx.P("b")
        xmls.append(ctx.xml)

        with XMLBuilder("REGTEXT") as ctx:
            ctx.AMDPAR("1. In Supplement I to part 111, under...")
            ctx.P("Something")
            ctx.STARS()
            with ctx.APPENDIX():
                ctx.HD("SUPPLEMENT I")
            ctx.HD("A")
            ctx.T1("a")
            ctx.P("b")
            ctx.PRTPAGE()
        xmls.append(ctx.xml)

        for xml in xmls:
            amendments.parse_interp('111', xml)
            root, nodes = interpretations.parse_from_xml.call_args[0]
            self.assertEqual(root.label, ['111', 'Interp'])
            self.assertEqual(['HD', 'T1', 'P'], [n.tag for n in nodes])
 def test_parse_interp_subpart_confusion(self):
     with XMLBuilder("REGTEXT") as ctx:
         ctx.AMDPAR("1. In Supplement I to part 111, under Section 33, "
                    "paragraph 5 is added.")
         ctx.HD("Supplement I")
         with ctx.SUBPART():
             with ctx.SECTION():
                 ctx.SECTNO(u"§ 111.33")
                 ctx.SUBJECT("Stubby Subby")
                 ctx.STARS()
                 ctx.P("5. Some Content")
     interp = amendments.parse_interp('111', ctx.xml)
     self.assertEqual(1, len(interp.children))
     c33 = interp.children[0]
     self.assertEqual(c33.label, ['111', '33', 'Interp'])
     self.assertEqual(1, len(c33.children))
     c335 = c33.children[0]
     self.assertEqual(c335.label, ['111', '33', 'Interp', '5'])