From f81be9963f25e7682d4e963c538deb3bfd9fe288 Mon Sep 17 00:00:00 2001 From: Arthur Maia Date: Mon, 29 Dec 2025 15:48:20 -0300 Subject: [PATCH] test done --- nodes/manager.py | 35 ++++++++++++++++++++++++++++++++--- nodes/node.py | 18 +++++++++++++++--- 2 files changed, 47 insertions(+), 6 deletions(-) diff --git a/nodes/manager.py b/nodes/manager.py index b3c1178..f2c52b3 100644 --- a/nodes/manager.py +++ b/nodes/manager.py @@ -1,5 +1,34 @@ -# Create here the NodeManager Class - +from nodes.node import Node +from typing import List class NodeManager: - pass + nodes: List[Node] + + def __init__(self, nodes: List[Node]): + if not isinstance(nodes, list): + raise ValueError("nodes must be a List of Nodes") + + self.nodes = nodes.copy() + + def __len__(self): + return len(self.nodes) + + def __getitem__(self, index): + return self.nodes[index] + + def remove(self, node: Node): + if node not in self.nodes: + raise ValueError("Node is not in the list of nodes") + + self.nodes.remove(node) + + def remove_cascade(self, node: Node): + if node not in self.nodes: + raise ValueError("Node is not in the list of nodes") + + children = [n for n in self.nodes if n.parent == node.id] + + for child in children: + self.remove_cascade(child) + + self.nodes.remove(node) \ No newline at end of file diff --git a/nodes/node.py b/nodes/node.py index 644ab4e..6dc9b53 100644 --- a/nodes/node.py +++ b/nodes/node.py @@ -1,5 +1,17 @@ -# Create here the Node Class +class Node: + id: int + parent: int + def __init__(self, id: int, parent: int): + if not isinstance(id, int) or not isinstance(parent, int): + raise ValueError("ID and Parent must be integers") + if parent > id: + raise ValueError("Parent must not be greater than ID") + if parent == id: + raise ValueError("Parent and ID must not be equal") + + self.id = id + self.parent = parent -class Node: - pass + def __repr__(self): + return f"Node({self.id}, {self.parent})"