def test_bag_alignment_is_optimal(self):
     assert get_metric_drop(
         ["Thomas Jefferson", "Thomas Davidson Arquette"], [["David Thomas", "Thomas Jefferson"]]
     ) == (0.0, 0.7)
     assert get_metric_drop(
         ["Thomas David Arquette"], [["David Thomas", "Thomas Jefferson"]]
     ) == (0.0, 0.4)
 def test_span_order_is_ignored(self):
     assert get_metric_drop(["athlete", "unprofessional"], [["unprofessional", "athlete"]]) == (
         1.0,
         1.0,
     )
     assert get_metric_drop(
         ["algebra", "arithmetic"], [["arithmetic", "algebra", "geometry"]]
     ) == (0.0, 0.67)
 def test_long_answers(self):
     assert (
         get_metric_drop(
             "David Thomas",
             [
                 "Thomas David Arquette Thomas David Arquette Thomas \
                 David Arquette Thomas David Arquette"
             ],
         )
         == (0.0, 0.8)
     )
 def test_long_gold_spans(self):
     assert get_metric_drop(
         ["Thomas David Arquette"], [["David Thomas was eating an apple and fell to the ground"]]
     ) == (0.0, 0.33)
 def test_multiple_gold_spans(self):
     assert get_metric_drop(
         ["Thomas David Arquette"],
         [["David Thomas"], ["Thomas Jefferson"], ["David Thomas"], ["Thomas David"]],
     ) == (0.0, 0.8)
 def test_word_order_is_not_ignored(self):
     assert get_metric_drop(["athlete unprofessional"], [["unprofessional athlete"]]) == (
         0.0,
         1.0,
     )
 def test_casing_is_ignored(self):
     assert get_metric_drop("This was a triumph", ["tHIS Was A TRIUMPH"]) == (1.0, 1.0)
 def test_articles_are_ignored(self):
     assert get_metric_drop("td", ["the td"]) == (1.0, 1.0)
     assert get_metric_drop("the a NOT an ARTICLE the an a", ["NOT ARTICLE"]) == (1.0, 1.0)