| 140 | |
| 141 | class TestGetNodes: |
| 142 | def test_get_child(self) -> None: |
| 143 | john: TreeNode = TreeNode( |
| 144 | children={ |
| 145 | "Mary": TreeNode( |
| 146 | children={"Sue": TreeNode(children={"Steven": TreeNode()})} |
| 147 | ) |
| 148 | } |
| 149 | ) |
| 150 | mary = john.children["Mary"] |
| 151 | sue = mary.children["Sue"] |
| 152 | steven = sue.children["Steven"] |
| 153 | |
| 154 | # get child |
| 155 | assert john._get_item("Mary") is mary |
| 156 | assert mary._get_item("Sue") is sue |
| 157 | |
| 158 | # no child exists |
| 159 | with pytest.raises(KeyError): |
| 160 | john._get_item("Kate") |
| 161 | |
| 162 | # get grandchild |
| 163 | assert john._get_item("Mary/Sue") is sue |
| 164 | |
| 165 | # get great-grandchild |
| 166 | assert john._get_item("Mary/Sue/Steven") is steven |
| 167 | |
| 168 | # get from middle of tree |
| 169 | assert mary._get_item("Sue/Steven") is steven |
| 170 | |
| 171 | def test_get_upwards(self) -> None: |
| 172 | john: TreeNode = TreeNode( |