|
31 | 31 | } else { |
32 | 32 | graph.find_all( |
33 | 33 | graph.root_id, |
34 | | - |node| node.is_battery_inverter(), |
| 34 | + |node| node.is_battery_inverter(&graph.config), |
35 | 35 | petgraph::Direction::Outgoing, |
36 | 36 | false, |
37 | 37 | )? |
|
91 | 91 | mod tests { |
92 | 92 | use std::collections::BTreeSet; |
93 | 93 |
|
94 | | - use crate::{graph::test_utils::ComponentGraphBuilder, Error}; |
| 94 | + use crate::{ |
| 95 | + graph::test_utils::ComponentGraphBuilder, ComponentGraphConfig, Error, InverterType, |
| 96 | + }; |
95 | 97 |
|
96 | 98 | #[test] |
97 | 99 | fn test_battery_formula() -> Result<(), Error> { |
@@ -188,12 +190,23 @@ mod tests { |
188 | 190 | assert_eq!(meter.component_id(), 17); |
189 | 191 | assert_eq!(inv_bat_chain.component_id(), 18); |
190 | 192 |
|
191 | | - let inv_bat_chain = builder.inv_bat_chain(1); |
192 | | - builder.connect(meter, inv_bat_chain); |
| 193 | + let unspec_inverter = builder.add_component(crate::ComponentCategory::Inverter( |
| 194 | + InverterType::Unspecified, |
| 195 | + )); |
| 196 | + let battery = builder.battery(); |
| 197 | + builder.connect(unspec_inverter, battery); |
| 198 | + builder.connect(meter, unspec_inverter); |
193 | 199 |
|
194 | | - assert_eq!(inv_bat_chain.component_id(), 20); |
| 200 | + assert_eq!(unspec_inverter.component_id(), 20); |
195 | 201 |
|
196 | | - let graph = builder.build(None)?; |
| 202 | + assert!(builder |
| 203 | + .build(None) |
| 204 | + .is_err_and(|x| x.to_string() |
| 205 | + == "InvalidComponent: InverterType not specified for inverter: 20")); |
| 206 | + |
| 207 | + let graph = builder.build(Some(ComponentGraphConfig { |
| 208 | + allow_unspecified_inverters: true, |
| 209 | + }))?; |
197 | 210 | let formula = graph.battery_formula(None)?; |
198 | 211 | assert_eq!( |
199 | 212 | formula, |
|
0 commit comments