Skip to content

Commit f3e7c23

Browse files
committed
Update the functional test for comprehensions aswell
1 parent 9677666 commit f3e7c23

File tree

2 files changed

+51
-11
lines changed

2 files changed

+51
-11
lines changed

tests/pyreverse/functional/class_diagrams/associations/comprehensions.mmd

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,33 @@ classDiagram
22
class Component {
33
name : str
44
}
5-
class Container {
5+
class AssociationContainer {
6+
components : list[Component]
67
component_dict : dict[int, Component]
8+
components_set : set[Component]
9+
lazy_components : Generator[Component]
10+
}
11+
class AggregationContainer {
712
components : list[Component]
13+
component_dict : dict[str, Component]
14+
components_set : set[Component]
15+
lazy_components : Generator[Component]
16+
}
17+
class CompositionContainer {
18+
components : list[Component]
19+
component_dict : dict[int, Component]
820
components_set : set[Component]
921
lazy_components : Generator[Component]
1022
}
11-
Component --o Container : components
12-
Component --o Container : component_dict
13-
Component --o Container : components_set
14-
Component --o Container : lazy_components
23+
Component --> AssociationContainer : components
24+
Component --> AssociationContainer : component_dict
25+
Component --> AssociationContainer : components_set
26+
Component --> AssociationContainer : lazy_components
27+
Component --o AggregationContainer : components
28+
Component --o AggregationContainer : component_dict
29+
Component --o AggregationContainer : components_set
30+
Component --o AggregationContainer : lazy_components
31+
Component --* CompositionContainer : components
32+
Component --* CompositionContainer : component_dict
33+
Component --* CompositionContainer : components_set
34+
Component --* CompositionContainer : lazy_components

tests/pyreverse/functional/class_diagrams/associations/comprehensions.py

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,30 @@ def __init__(self, name: str):
88
self.name = name
99

1010

11-
class Container:
12-
"""A container class that uses comprehension to create components."""
11+
class AssociationContainer:
12+
"""Type hints only - no ownership."""
13+
# Association: just type hints, no actual assignment
14+
components: list[Component]
15+
component_dict: dict[int, Component]
16+
components_set: set[Component]
17+
lazy_components: Generator[Component]
18+
19+
20+
class AggregationContainer:
21+
"""Comprehensions using existing objects - aggregation."""
22+
def __init__(self, existing_components: list[Component]):
23+
# Aggregation: comprehensions using existing objects (not creating)
24+
self.components: list[Component] = [comp for comp in existing_components]
25+
self.component_dict: dict[str, Component] = {f"key_{i}": comp for i, comp in enumerate(existing_components)}
26+
self.components_set: set[Component] = {comp for comp in existing_components}
27+
self.lazy_components: Generator[Component] = (comp for comp in existing_components)
28+
29+
30+
class CompositionContainer:
31+
"""Comprehensions creating new objects - composition."""
1332
def __init__(self):
14-
self.components: list[Component] = [Component(f"component_{i}") for i in range(3)] # list
15-
self.component_dict: dict[int, Component] = {i: Component(f"dict_component_{i}") for i in range(2)} # dict
16-
self.components_set: set[Component] = {Component(f"set_component_{i}") for i in range(2)} # set
17-
self.lazy_components: Generator[Component] = (Component(f"lazy_{i}") for i in range(2)) # generator
33+
# Composition: comprehensions creating new objects
34+
self.components: list[Component] = [Component(f"component_{i}") for i in range(3)]
35+
self.component_dict: dict[int, Component] = {i: Component(f"dict_component_{i}") for i in range(2)}
36+
self.components_set: set[Component] = {Component(f"set_component_{i}") for i in range(2)}
37+
self.lazy_components: Generator[Component] = (Component(f"lazy_{i}") for i in range(2))

0 commit comments

Comments
 (0)