def test_has_labels_case_sensitivity(self): tns = TaxonNamespace(self.str_labels) labels_upper = [label.upper() for label in self.str_labels if label.upper() != label] assert labels_upper tns.is_case_sensitive = True self.assertFalse(tns.has_taxa_labels(labels_upper)) tns.is_case_sensitive = False self.assertTrue(tns.has_taxa_labels(labels_upper))
def test_case_insensitive_require_taxon_by_label2(self): tns = TaxonNamespace(self.str_labels) labels_upper = [label.upper() for label in self.str_labels if label.upper() != label] labels_upper = list(set(labels_upper)) assert labels_upper for label in labels_upper: tns.is_case_sensitive = True t = tns.require_taxon(label) self.assertEqual(t.label, label) self.validate_taxon_concepts(tns, self.str_labels + labels_upper)
def test_case_insensitive_require_taxon_by_label1(self): tns = TaxonNamespace(self.str_labels) labels_upper = [label.upper() for label in self.str_labels if label.upper() != label] assert labels_upper for label in labels_upper: tns.is_case_sensitive = False t = tns.require_taxon(label) self.assertEqual(t.label.lower(), label.lower()) self.assertEqual(len(tns), len(self.str_labels)) self.validate_taxon_concepts(tns, self.str_labels)
def test_findall_multiple(self): tns = TaxonNamespace(self.str_labels) multilabels= ["_", "z"] for label in multilabels: tns.is_case_sensitive=True taxa = tns.findall(label=label) self.assertTrue(isinstance(taxa, collections.Iterable)) self.assertEqual(len(taxa), len([s for s in self.str_labels if s == label])) for t in taxa: self.assertEqual(t.label, label)
def test_remove_taxon_label_case_insensitive(self): ucase_labels = [s.upper() for s in self.str_labels] assert ucase_labels assert ucase_labels != self.str_labels taxa = [Taxon(s) for s in self.str_labels] tns = TaxonNamespace(taxa) expected = taxa[:] for idx, label in enumerate(set(ucase_labels)): if label != label.lower(): with self.assertRaises(LookupError): tns.is_case_sensitive = True tns.remove_taxon_label(label) tns.is_case_sensitive = False tns.remove_taxon_label(label) for t in taxa: if t.label.upper() == label.upper() and t in expected: expected.remove(t) self.assertEqual(len(tns), len(expected)) for t1, t2 in zip(tns, expected): self.assertIs(t1, t2)
def test_case_insensitive_get_taxa_by_label(self): tns = TaxonNamespace(self.str_labels) labels_upper = [label.upper() for label in self.str_labels if label.upper() != label] assert labels_upper # default: case-insensitive t2 = tns.get_taxa(labels_upper) self.assertEqual(len(t2), len(labels_upper)) for t, label in zip(t2, labels_upper): self.assertEqual(t.label.lower(), label.lower()) # test: case sensitive tns.is_case_sensitive = True t1 = tns.get_taxa(labels_upper) self.assertEqual(len(t1), 0)
def test_case_insensitive_get_taxon_by_label(self): tns = TaxonNamespace(self.str_labels) labels_upper = [label.upper() for label in self.str_labels if label.upper() != label] assert labels_upper # default: case insensitive for label in labels_upper: t = tns.get_taxon(label) self.assertIsNot(t, None) self.assertEqual(t.label.lower(), label.lower()) # test: case sensitive tns.is_case_sensitive = True for label in labels_upper: t = tns.get_taxon(label) self.assertIs(t, None)
def test_discard_taxon_label_case_sensitive(self): ucase_labels = [s.upper() for s in self.str_labels] assert ucase_labels assert ucase_labels != self.str_labels taxa = [Taxon(s) for s in self.str_labels] tns = TaxonNamespace(taxa) expected = taxa[:] # test: case sensitive tns.is_case_sensitive = True for idx, label in enumerate(set(ucase_labels)): if label != label.lower(): x1 = len(tns) try: tns.discard_taxon_label(label) except LookupError: self.fail() else: self.assertEqual(len(tns), x1)
def test_findall_not_found(self): tns = TaxonNamespace(self.str_labels) tns.is_case_sensitive=True taxa = tns.findall(label="x") self.assertEqual(taxa, [])