|
10 | 10 | import polars as pl |
11 | 11 | import pytest |
12 | 12 | import xarray as xr |
13 | | -from test_linear_expression import m, u, x # noqa: F401 |
14 | 13 | from xarray import DataArray |
15 | 14 | from xarray.testing.assertions import assert_equal |
16 | 15 |
|
17 | | -from linopy import LinearExpression, Variable |
| 16 | +from linopy import LinearExpression, Model, Variable |
18 | 17 | from linopy.common import ( |
19 | 18 | align, |
20 | 19 | as_dataarray, |
21 | 20 | assign_multiindex_safe, |
22 | 21 | best_int, |
23 | 22 | get_dims_with_index_levels, |
| 23 | + is_a_constant, |
24 | 24 | iterate_slices, |
25 | 25 | ) |
26 | 26 | from linopy.testing import assert_linequal, assert_varequal |
@@ -711,3 +711,27 @@ def test_align(x: Variable, u: Variable) -> None: # noqa: F811 |
711 | 711 | assert expr_obs.shape == (1, 1) # _term dim |
712 | 712 | assert isinstance(expr_obs, LinearExpression) |
713 | 713 | assert_linequal(expr_obs, expr.loc[[1]]) |
| 714 | + |
| 715 | + |
| 716 | +def test_is_a_constant() -> None: |
| 717 | + m = Model() |
| 718 | + index = pd.Index(range(10), name="t") |
| 719 | + a = m.add_variables(name="a", coords=[index]) |
| 720 | + b = a.sel(t=1) |
| 721 | + c = a * 2 |
| 722 | + d = a * a |
| 723 | + |
| 724 | + non_constant = [a, b, c, d] |
| 725 | + for nc in non_constant: |
| 726 | + assert not is_a_constant(nc) |
| 727 | + |
| 728 | + constant_values = [ |
| 729 | + 5, |
| 730 | + 3.14, |
| 731 | + np.int32(7), |
| 732 | + np.float64(2.71), |
| 733 | + pd.Series([1, 2, 3]), |
| 734 | + np.array([4, 5, 6], xr.DataArray([k for k in range(10)], coords=[index])), |
| 735 | + ] |
| 736 | + for cv in constant_values: |
| 737 | + assert is_a_constant(cv) |
0 commit comments