Coverage for test/unit/tasks/hvac/test_expansiontank.py: 100%
48 statements
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-12 17:09 +0000
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-12 17:09 +0000
1import unittest
3from bim2sim.kernel.decision.decisionhandler import DebugDecisionHandler
4from bim2sim.elements import hvac_elements as hvac
5from bim2sim.elements.graphs.hvac_graph import HvacGraph
6from bim2sim.tasks.hvac import expansiontanks
7from test.unit.elements.helper import SetupHelperHVAC
10class GeneratorHelper(SetupHelperHVAC):
12 def get_setup_circuit_with_expansion_tank(self):
13 """Simple circuit with one expansion tank"""
14 flags = {}
15 with self.flag_manager(flags):
16 strand_main = [
17 self.element_generator(hvac.Pipe, length=100, diameter=40)
18 for i in range(5)]
19 fitting = self.element_generator(hvac.PipeFitting, n_ports=3,
20 diameter=40, length=60)
21 strand_tank = [
22 self.element_generator(hvac.Pipe, length=100, diameter=40)
23 for i in range(2)]
24 tank = self.element_generator(hvac.Storage, n_ports=1)
26 self.connect_strait([*strand_main])
27 self.connect_strait([*strand_tank])
28 strand_main[0].ports[0].connect(fitting.ports[-1])
29 fitting.ports[1].connect(strand_tank[0].ports[0])
30 strand_tank[-1].ports[-1].connect(tank.ports[0])
31 fitting.ports[0].connect(strand_main[-1].ports[-1])
33 # full system
34 circuit = [
35 *strand_main, fitting, *strand_tank, tank]
37 return HvacGraph(circuit), flags
40class TestExpansionTank(unittest.TestCase):
41 helper: GeneratorHelper = None
43 @classmethod
44 def setUpClass(cls):
45 cls.helper = GeneratorHelper()
47 @classmethod
48 def tearDownClass(cls):
49 cls.helper.reset()
51 def tearDown(self):
52 self.helper.reset()
54 def test_expansion_tank_circuit_decision(self):
55 """Test performs search and remove of the expansion tanks by decision"""
57 graph, flags = self.helper.get_setup_circuit_with_expansion_tank()
58 pot_tanks = \
59 expansiontanks.ExpansionTanks.identify_expansion_tanks(graph)
60 self.assertEqual(
61 1, len(pot_tanks),
62 f"There is 1 expansion tank but {len(pot_tanks)} were identified."
63 )
64 handler = DebugDecisionHandler(answers=[])
65 handler.handle(
66 expansiontanks.ExpansionTanks.decide_expansion_tanks(
67 graph, pot_tanks, force=True))
68 graph, n_removed = handler.return_value
69 self.assertEqual(n_removed, 1)
71 def test_expansion_tank_circuit_forced(self):
72 """Test performs search and remove of the expansion tanks with forced
73 deletion
74 """
76 graph, flags = self.helper.get_setup_circuit_with_expansion_tank()
77 pot_tanks = \
78 expansiontanks.ExpansionTanks.identify_expansion_tanks(graph)
79 self.assertEqual(
80 1, len(pot_tanks),
81 f"There is 1 expansion tank but ony {len(pot_tanks)} was identified."
82 )
83 handler = DebugDecisionHandler(answers=[True])
84 handler.handle(
85 expansiontanks.ExpansionTanks.decide_expansion_tanks(
86 graph, pot_tanks, force=False))
87 graph, n_removed = handler.return_value
88 self.assertEqual(n_removed, 1)