|
| 1 | +from datetime import datetime |
| 2 | + |
1 | 3 | from libecalc.domain.infrastructure.energy_components.legacy_consumer.tabulated import TabularConsumerFunction |
2 | 4 | from libecalc.domain.infrastructure.energy_components.legacy_consumer.tabulated.common import ( |
3 | 5 | Variable, |
4 | 6 | VariableExpression, |
5 | 7 | ) |
| 8 | +from libecalc.domain.regularity import Regularity |
6 | 9 | from libecalc.expression import Expression |
| 10 | +from libecalc.presentation.yaml.domain.expression_time_series_variable import ExpressionTimeSeriesVariable |
| 11 | +from libecalc.presentation.yaml.domain.time_series_expression import TimeSeriesExpression |
| 12 | +from tests.conftest import expression_evaluator_factory |
7 | 13 |
|
8 | 14 |
|
9 | | -def test_tabular_consumer_single_period_returns_list(): |
| 15 | +def test_tabular_consumer_single_period_returns_list(expression_evaluator_factory): |
| 16 | + test_time_vector = [datetime(2020, 1, 1), datetime(2030, 1, 1)] |
10 | 17 | # Minimal setup: one variable, one function value |
11 | 18 | headers = ["RATE", "FUEL"] |
12 | 19 | data = [[1.0], [10.0]] # Variable value and function value |
13 | | - variables_expressions = [VariableExpression(name="RATE", expression=Expression.setup_from_expression("RATE"))] |
| 20 | + |
| 21 | + expression_evaluator = expression_evaluator_factory.from_time_vector(test_time_vector) |
| 22 | + regularity = Regularity( |
| 23 | + expression_evaluator=expression_evaluator, target_period=expression_evaluator.get_period(), expression_input=1 |
| 24 | + ) |
| 25 | + |
| 26 | + variables = ExpressionTimeSeriesVariable( |
| 27 | + name="RATE", |
| 28 | + time_series_expression=TimeSeriesExpression(expressions="RATE", expression_evaluator=expression_evaluator), |
| 29 | + regularity=regularity, |
| 30 | + ) |
14 | 31 | consumer_function = TabularConsumerFunction( |
15 | 32 | headers=headers, |
16 | 33 | data=data, |
17 | 34 | energy_usage_adjustment_constant=0.0, |
18 | 35 | energy_usage_adjustment_factor=1.0, |
19 | | - variables_expressions=variables_expressions, |
20 | | - condition_expression=None, |
21 | | - power_loss_factor_expression=None, |
| 36 | + variables=[variables], |
22 | 37 | ) |
23 | 38 |
|
24 | 39 | # Test with a single variable and a single value (e.g. only one period). |
25 | 40 | # Ensures that the function returns a flat list (not a scalar) |
26 | 41 | # even when only one period and one value are present. |
27 | | - rate_input = [Variable(name="RATE", values=[1.0])] |
| 42 | + rate_input = ExpressionTimeSeriesVariable( |
| 43 | + name="RATE", |
| 44 | + time_series_expression=TimeSeriesExpression(expressions="1.0", expression_evaluator=expression_evaluator), |
| 45 | + regularity=regularity, |
| 46 | + ) |
28 | 47 |
|
29 | | - result = consumer_function.evaluate_variables(rate_input) |
| 48 | + result = consumer_function.evaluate_variables([rate_input]) |
30 | 49 | assert isinstance(result.energy_usage, list) |
31 | 50 | assert result.energy_usage == [10.0] |
0 commit comments