def test_extrude(): annotation = Annotation() annotation[Segment(0, 10)] = "A" annotation[Segment(15, 20)] = "A" annotation[Segment(20, 35)] = "B" annotation[Segment(15, 25)] = "C" annotation[Segment(30, 35)] = "C" extrusion_tl = Timeline([Segment(5, 12), Segment(14, 25)]) intersection_expected = Annotation() intersection_expected[Segment(0, 5)] = "A" intersection_expected[Segment(25, 35)] = "B" intersection_expected[Segment(30, 35)] = "C" assert (annotation.extrude(extrusion_tl, mode="intersection") == intersection_expected) loose_expected = Annotation() loose_expected[Segment(30, 35)] = "C" assert (annotation.extrude(extrusion_tl, mode="loose") == loose_expected) strict_expected = Annotation() strict_expected[Segment(0, 10)] = "A" strict_expected[Segment(20, 35)] = "B" strict_expected[Segment(30, 35)] = "C" assert (annotation.extrude(extrusion_tl, mode="strict") == strict_expected)