| 168 | |
| 169 | |
| 170 | class Label: |
| 171 | def __init__(self, name): |
| 172 | # Label name |
| 173 | self.name = name |
| 174 | # Current receiving address associated with this label. |
| 175 | self.receive_address = None |
| 176 | # List of all addresses assigned with this label |
| 177 | self.addresses = [] |
| 178 | # Map of address to address purpose |
| 179 | self.purpose = defaultdict(lambda: "receive") |
| 180 | |
| 181 | def add_address(self, address): |
| 182 | assert_equal(address not in self.addresses, True) |
| 183 | self.addresses.append(address) |
| 184 | |
| 185 | def add_receive_address(self, address): |
| 186 | self.add_address(address) |
| 187 | |
| 188 | def verify(self, node): |
| 189 | if self.receive_address is not None: |
| 190 | assert self.receive_address in self.addresses |
| 191 | for address in self.addresses: |
| 192 | test_address(node, address, labels=[self.name]) |
| 193 | assert self.name in node.listlabels() |
| 194 | assert_equal( |
| 195 | node.getaddressesbylabel(self.name), |
| 196 | {address: {"purpose": self.purpose[address]} for address in self.addresses}) |
| 197 | |
| 198 | def change_label(node, address, old_label, new_label): |
| 199 | assert_equal(address in old_label.addresses, True) |