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

1import unittest 

2 

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 

8 

9 

10class GeneratorHelper(SetupHelperHVAC): 

11 

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) 

25 

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]) 

32 

33 # full system 

34 circuit = [ 

35 *strand_main, fitting, *strand_tank, tank] 

36 

37 return HvacGraph(circuit), flags 

38 

39 

40class TestExpansionTank(unittest.TestCase): 

41 helper: GeneratorHelper = None 

42 

43 @classmethod 

44 def setUpClass(cls): 

45 cls.helper = GeneratorHelper() 

46 

47 @classmethod 

48 def tearDownClass(cls): 

49 cls.helper.reset() 

50 

51 def tearDown(self): 

52 self.helper.reset() 

53 

54 def test_expansion_tank_circuit_decision(self): 

55 """Test performs search and remove of the expansion tanks by decision""" 

56 

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) 

70 

71 def test_expansion_tank_circuit_forced(self): 

72 """Test performs search and remove of the expansion tanks with forced 

73 deletion 

74 """ 

75 

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)