import lib def test_taxonomiclookup_empty(): lookup = lib.TaxonomicTree() assert lookup.size == 0 def test_taxonomiclookup_kingdom_size(): lookup = lib.TaxonomicTree() lookup.add(("Animalia",)) assert lookup.size == 1 def test_taxonomiclookup_genus_size(): lookup = lib.TaxonomicTree() lookup.add( ( "Animalia", "Chordata", "Aves", "Accipitriformes", "Accipitridae", "Halieaeetus", ) ) assert lookup.size == 6 def test_taxonomictree_kingdom_children(): lookup = lib.TaxonomicTree() lookup.add( ( "Animalia", "Chordata", "Aves", "Accipitriformes", "Accipitridae", "Halieaeetus", ) ) expected = set([("Animalia", 0)]) actual = lookup.children() assert actual == expected def test_taxonomiclookup_children_of_animal_only_birds(): lookup = lib.TaxonomicTree() lookup.add( ( "Animalia", "Chordata", "Aves", "Accipitriformes", "Accipitridae", "Halieaeetus", "leucocephalus", ) ) lookup.add( ( "Animalia", "Chordata", "Aves", "Strigiformes", "Strigidae", "Ninox", "scutulata", ) ) lookup.add( ( "Animalia", "Chordata", "Aves", "Strigiformes", "Strigidae", "Ninox", "plesseni", ) ) actual = lookup.children(("Animalia",)) expected = set([("Chordata", 1)]) assert actual == expected def test_taxonomiclookup_children_of_animal(): lookup = lib.TaxonomicTree() lookup.add( ( "Animalia", "Chordata", "Aves", "Accipitriformes", "Accipitridae", "Halieaeetus", "leucocephalus", ) ) lookup.add( ( "Animalia", "Chordata", "Aves", "Strigiformes", "Strigidae", "Ninox", "scutulata", ) ) lookup.add( ( "Animalia", "Chordata", "Aves", "Strigiformes", "Strigidae", "Ninox", "plesseni", ) ) lookup.add( ( "Animalia", "Chordata", "Mammalia", "Primates", "Hominidae", "Gorilla", "gorilla", ) ) lookup.add( ( "Animalia", "Arthropoda", "Insecta", "Hymenoptera", "Apidae", "Bombus", "balteatus", ) ) actual = lookup.children(("Animalia",)) expected = set([("Chordata", 1), ("Arthropoda", 17)]) assert actual == expected def test_taxonomiclookup_children_of_chordata(): lookup = lib.TaxonomicTree() lookup.add( ( "Animalia", "Chordata", "Aves", "Accipitriformes", "Accipitridae", "Halieaeetus", "leucocephalus", ) ) lookup.add( ( "Animalia", "Chordata", "Aves", "Strigiformes", "Strigidae", "Ninox", "scutulata", ) ) lookup.add( ( "Animalia", "Chordata", "Aves", "Strigiformes", "Strigidae", "Ninox", "plesseni", ) ) lookup.add( ( "Animalia", "Chordata", "Mammalia", "Primates", "Hominidae", "Gorilla", "gorilla", ) ) lookup.add( ( "Animalia", "Arthropoda", "Insecta", "Hymenoptera", "Apidae", "Bombus", "balteatus", ) ) actual = lookup.children(("Animalia", "Chordata")) expected = set([("Aves", 2), ("Mammalia", 12)]) assert actual == expected def test_taxonomiclookup_children_of_strigiformes(): lookup = lib.TaxonomicTree() lookup.add( ( "Animalia", "Chordata", "Aves", "Accipitriformes", "Accipitridae", "Halieaeetus", "leucocephalus", ) ) lookup.add( ( "Animalia", "Chordata", "Aves", "Strigiformes", "Strigidae", "Ninox", "scutulata", ) ) lookup.add( ( "Animalia", "Chordata", "Aves", "Strigiformes", "Strigidae", "Ninox", "plesseni", ) ) lookup.add( ( "Animalia", "Chordata", "Mammalia", "Primates", "Hominidae", "Gorilla", "gorilla", ) ) lookup.add( ( "Animalia", "Arthropoda", "Insecta", "Hymenoptera", "Apidae", "Bombus", "balteatus", ) ) actual = lookup.children(("Animalia", "Chordata", "Aves", "Strigiformes")) expected = set([("Strigidae", 8)]) assert actual == expected def test_taxonomiclookup_children_of_ninox(): lookup = lib.TaxonomicTree() lookup.add( ( "Animalia", "Chordata", "Aves", "Accipitriformes", "Accipitridae", "Halieaeetus", "leucocephalus", ) ) lookup.add( ( "Animalia", "Chordata", "Aves", "Strigiformes", "Strigidae", "Ninox", "scutulata", ) ) lookup.add( ( "Animalia", "Chordata", "Aves", "Strigiformes", "Strigidae", "Ninox", "plesseni", ) ) lookup.add( ( "Animalia", "Chordata", "Mammalia", "Primates", "Hominidae", "Gorilla", "gorilla", ) ) lookup.add( ( "Animalia", "Arthropoda", "Insecta", "Hymenoptera", "Apidae", "Bombus", "balteatus", ) ) actual = lookup.children( ("Animalia", "Chordata", "Aves", "Strigiformes", "Strigidae", "Ninox") ) expected = set([("scutulata", 10), ("plesseni", 11)]) assert actual == expected def test_taxonomiclookup_children_of_gorilla(): lookup = lib.TaxonomicTree() lookup.add( ( "Animalia", "Chordata", "Aves", "Accipitriformes", "Accipitridae", "Halieaeetus", "leucocephalus", ) ) lookup.add( ( "Animalia", "Chordata", "Aves", "Strigiformes", "Strigidae", "Ninox", "scutulata", ) ) lookup.add( ( "Animalia", "Chordata", "Aves", "Strigiformes", "Strigidae", "Ninox", "plesseni", ) ) lookup.add( ( "Animalia", "Chordata", "Mammalia", "Primates", "Hominidae", "Gorilla", "gorilla", ) ) lookup.add( ( "Animalia", "Arthropoda", "Insecta", "Hymenoptera", "Apidae", "Bombus", "balteatus", ) ) actual = lookup.children( ( "Animalia", "Chordata", "Mammalia", "Primates", "Hominidae", "Gorilla", "gorilla", ) ) expected = set() assert actual == expected def test_taxonomictree_descendants_last(): lookup = lib.TaxonomicTree() lookup.add(("A", "B", "C", "D", "E", "F", "G")) actual = list(lookup.descendants(("A", "B", "C", "D", "E", "F", "G"))) expected = [ (("A", "B", "C", "D", "E", "F", "G"), 6), ] assert actual == expected def test_taxonomictree_descendants_entire_tree(): lookup = lib.TaxonomicTree() lookup.add(("A", "B")) actual = list(lookup.descendants()) expected = [ (("A",), 0), (("A", "B"), 1), ] assert actual == expected def test_taxonomictree_descendants_entire_tree_with_prefix(): lookup = lib.TaxonomicTree() lookup.add(("A", "B")) actual = list(lookup.descendants(prefix=("A",))) expected = [ (("A",), 0), (("A", "B"), 1), ] assert actual == expected def test_taxonomictree_descendants_general(): lookup = lib.TaxonomicTree() lookup.add(("A", "B", "C", "D", "E", "F", "G")) actual = list(lookup.descendants(("A", "B", "C", "D"))) expected = [ (("A", "B", "C", "D"), 3), (("A", "B", "C", "D", "E"), 4), (("A", "B", "C", "D", "E", "F"), 5), (("A", "B", "C", "D", "E", "F", "G"), 6), ] assert actual == expected