def test_build_supplement_intro_section(): """Integration test""" with XMLBuilder('APPENDIX') as ctx: ctx.HD("Supplement I to Part 737-Official Interpretations", SOURCE='HED') ctx.HD("Introduction", SOURCE='HD1') ctx.P("1. Some content. (a) Badly named") ctx.P("(b) Badly named") ctx.HD("Subpart A", SOURCE='HD1') ctx.HD("Section 737.13", SOURCE='HD2') ctx.child_from_string("<P><E>13(a) Some Stuff!</E></P>") ctx.P("1. 131313") ctx.HD("Appendix G", SOURCE='HD2') ctx.P("1. G") tree = gpo_cfr.build_supplement_tree('737', ctx.xml) assert tree.label == ['737', 'Interp'] assert len(tree.children) == 3 h1, s13, g = tree.children assert h1.label == ['737', 'Interp', 'h1'] assert s13.label == ['737', '13', 'Interp'] assert g.label == ['737', 'G', 'Interp'] assert len(h1.children) == 1 assert h1.children[0].text == ('1. Some content. (a) Badly named\n\n' '(b) Badly named') assert h1.children[0].children == [] assert len(s13.children) == 1 assert s13.children[0].title == '13(a) Some Stuff!'
def test_build_supplement_tree_skip_levels(): with XMLBuilder('APPENDIX') as ctx: ctx.HD("Supplement I to Part 737-Official Interpretations", SOURCE='HED') ctx.HD("Section 737.5 NASCAR", SOURCE='HD2') ctx.HD("5(a)(1)(i) Access Device", SOURCE='HD2') ctx.P("1. Paragraph 111") ctx.HD("5(b) Other Devices", SOURCE='HD2') ctx.P("1. Paragraph 222") tree = gpo_cfr.build_supplement_tree('737', ctx.xml) assert tree.label == ['737', 'Interp'] assert len(tree.children) == 1 i5 = tree.children[0] assert i5.label == ['737', '5', 'Interp'] assert len(i5.children) == 2 i5a, i5b = i5.children assert i5a.label == ['737', '5', 'a', 'Interp'] assert len(i5a.children) == 1 i5a1 = i5a.children[0] assert i5a1.label == ['737', '5', 'a', '1', 'Interp'] assert len(i5a1.children) == 1 i5a1i = i5a1.children[0] assert i5a1i.label == ['737', '5', 'a', '1', 'i', 'Interp'] assert len(i5a1i.children) == 1 assert i5b.label == ['737', '5', 'b', 'Interp'] assert len(i5b.children) == 1
def test_build_supplement_tree_spacing(): """Integration test""" with XMLBuilder('APPENDIX') as ctx: ctx.HD("Supplement I to Part 737-Official Interpretations", SOURCE='HED') ctx.HD("Section 737.5 NASCAR", SOURCE='HD2') ctx.child_from_string('<P>1.<E T="03">Phrase</E>. More Content</P>') ctx.child_from_string('<P>i. I like<PRTPAGE />ice cream</P>') ctx.P("A. Aaaaah") ctx.child_from_string('<P><E T="03">1.</E>More info</P>') tree = gpo_cfr.build_supplement_tree('737', ctx.xml) assert tree.label == ['737', 'Interp'] assert len(tree.children) == 1 s5 = tree.children[0] assert len(s5.children) == 1 s51 = s5.children[0] assert s51.text == "1. Phrase. More Content" assert len(s51.children) == 1 s51i = s51.children[0] assert s51i.text == "i. I like ice cream" assert len(s51i.children) == 1 s51ia = s51i.children[0] assert s51ia.text == "A. Aaaaah" assert len(s51ia.children) == 1 s51ia1 = s51ia.children[0] assert s51ia1.text == "1. More info" assert s51ia1.children == []
def test_build_supplement_tree(): """Integration test""" with XMLBuilder('APPENDIX') as ctx: ctx.HD("Supplement I to Part 737-Official Interpretations", SOURCE='HED') ctx.HD("Section 737.5 NASCAR", SOURCE='HD2') ctx.P("1. Paragraph 1") ctx.P("i. Paragraph i; A. Start of A") ctx.HD("5(a) Access Device", SOURCE='HD2') ctx.P("1. Paragraph 111") ctx.P("i. Content content") ctx.P("ii. More content") ctx.P("A. Aaaaah") ctx.child_from_string('<P><E T="03">1.</E> More info</P>') ctx.child_from_string('<P><E T="03">2.</E> Second info</P>') ctx.child_from_string('<P><E T="03">3. Keyterms</E></P>') tree = gpo_cfr.build_supplement_tree('737', ctx.xml) assert tree.label == ['737', 'Interp'] assert len(tree.children) == 1 i5 = tree.children[0] assert i5.label == ['737', '5', 'Interp'] assert len(i5.children) == 2 i51, i5a = i5.children assert i51.label == ['737', '5', 'Interp', '1'] assert len(i51.children) == 1 i51i = i51.children[0] assert i51i.label == ['737', '5', 'Interp', '1', 'i'] assert len(i51i.children) == 1 i51ia = i51i.children[0] assert i51ia.label == ['737', '5', 'Interp', '1', 'i', 'A'] assert i51ia.children == [] assert i5a.label == ['737', '5', 'a', 'Interp'] assert len(i5a.children) == 1 i5a1 = i5a.children[0] assert i5a1.label == ['737', '5', 'a', 'Interp', '1'] assert len(i5a1.children) == 2 i5a1i, i5a1ii = i5a1.children assert i5a1i.label == ['737', '5', 'a', 'Interp', '1', 'i'] assert i5a1i.children == [] assert i5a1ii.label == ['737', '5', 'a', 'Interp', '1', 'ii'] assert len(i5a1ii.children) == 1 i5a1iia = i5a1ii.children[0] assert i5a1iia.label == ['737', '5', 'a', 'Interp', '1', 'ii', 'A'] assert len(i5a1iia.children) == 3 i5a1iia1, i5a1iia2, i5a1iia3 = i5a1iia.children assert i5a1iia1.label == ['737', '5', 'a', 'Interp', '1', 'ii', 'A', '1'] assert i5a1iia1.tagged_text == '<E T="03">1.</E> More info' assert i5a1iia1.children == [] assert i5a1iia2.label == ['737', '5', 'a', 'Interp', '1', 'ii', 'A', '2'] assert i5a1iia2.tagged_text == '<E T="03">2.</E> Second info' assert i5a1iia2.children == [] assert i5a1iia3.label == ['737', '5', 'a', 'Interp', '1', 'ii', 'A', '3'] assert i5a1iia3.tagged_text == '<E T="03">3. Keyterms</E>' assert i5a1iia3.children == []
def test_build_supplement_tree_repeats(): """Integration test""" with XMLBuilder('APPENDIX') as ctx: ctx.HD("Supplement I to Part 737-Official Interpretations", SOURCE='HED') ctx.HD("Appendices G and H-Content</HD>", SOURCE='HD2') ctx.P("1. G:H") ctx.HD("Appendix G", SOURCE='HD2') ctx.P("1. G") ctx.HD("Appendix H", SOURCE='HD2') ctx.P("1. H") tree = gpo_cfr.build_supplement_tree('737', ctx.xml) assert tree.label == ['737', 'Interp'] assert len(tree.children) == 3 aGH, aG, aH = tree.children assert aGH.label == ['737', 'G_H', 'Interp'] assert aG.label == ['737', 'G', 'Interp'] assert aH.label == ['737', 'H', 'Interp']
def test_build_supplement_tree_appendix_paragraphs(): with XMLBuilder('APPENDIX') as ctx: ctx.HD("Supplement I to Part 737-Official Interpretations", SOURCE='HED') ctx.HD("Appendix H", SOURCE='HD2') ctx.HD("(b) bbbbbbb", SOURCE='HD3') ctx.P("1. Paragraph b") ctx.HD("(b)(5) b5b5b5", SOURCE='HD3') ctx.P("1. Paragraph b5") tree = gpo_cfr.build_supplement_tree('737', ctx.xml) assert tree.label == ['737', 'Interp'] assert len(tree.children) == 1 ih = tree.children[0] assert ih.label == ['737', 'H', 'Interp'] assert len(ih.children) == 1 ihb = ih.children[0] assert ihb.label == ['737', 'H', 'b', 'Interp'] assert len(ihb.children) == 2 ihb1, ihb5 = ihb.children assert ihb1.label == ['737', 'H', 'b', 'Interp', '1'] assert ihb5.label == ['737', 'H', 'b', '5', 'Interp']