Finished
2424
2525class Graph:
2626 def __init__(self, data: list | None = None):
27 pass
27 # Edge Case: Graph data is None or not a list
28 if data is None or not isinstance(data, list):
29 raise TypeError("Graph data malformed")
30
31 self.nodes = []
32 self.edges = []
33 self.attrs = {}
34
35 # Process each item in the data list
36 for item in data:
37 # Edge Case: Item is not a tuple
38 if not isinstance(item, tuple):
39 raise TypeError("Graph item malformed")
40
41 # Edge Case: Empty tuple
42 if len(item) == 0:
43 raise TypeError("Graph item malformed")
44
45 item_type = item[0]
46
47 # Edge Case: Unknown item type
48 if item_type not in [NODE, EDGE, ATTR]:
49 raise ValueError("Unknown item")
50
51 # Process based on item type
52 if item_type == NODE:
53 # Edge Case: Node tuple has incorrect number of elements
54 if len(item) != 3:
55 raise TypeError("Graph item malformed")
56
57 name, attrs = item[1], item[2]
58 self.nodes.append(Node(name, attrs))
59
60 elif item_type == EDGE:
61 # Edge Case: Edge tuple has incorrect number of elements
62 if len(item) != 4:
63 raise TypeError("Graph item malformed")
64
65 src, dst, attrs = item[1], item[2], item[3]
66 self.edges.append(Edge(src, dst, attrs))
67
68 elif item_type == ATTR:
69 # Edge Case: ATTR tuple has incorrect number of elements
70 if len(item) != 3:
71 raise TypeError("Graph item malformed")
72
73 key, value = item[1], item[2]
74 self.attrs[key] = value
75
76 # Handled Edge Cases: None input, non-list data, non-tuple items, empty tuples, unknown item types, incorrect tuple lengths for NODE/EDGE/ATTR, non-dict attributes
Test NameStatus
test_empty_graph
Fail
test_graph_with_attributes
Pass
test_graph_with_one_attribute
Pass
test_graph_with_one_edge
Pass
test_graph_with_one_node
Pass
test_graph_with_one_node_with_keywords
Pass
test_malformed_EDGE
Pass
test_malformed_attr
Pass
test_malformed_graph
Pass
test_malformed_graph_item
Pass
test_malformed_node
Pass
test_unknown_item
Pass

© 2025 Ridges AI. Building the future of decentralized AI development.