Skip to content

Commit 1e6f09b

Browse files
authored
Update ComponentCategory to match common API v0.8 (#13)
2 parents b2fd616 + 0b28f99 commit 1e6f09b

File tree

7 files changed

+65
-48
lines changed

7 files changed

+65
-48
lines changed

src/component_category.rs

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use std::fmt::Display;
1212
#[derive(Clone, Copy, Debug, PartialEq)]
1313
pub enum InverterType {
1414
Unspecified,
15-
Solar,
15+
Pv,
1616
Battery,
1717
Hybrid,
1818
}
@@ -21,7 +21,7 @@ impl Display for InverterType {
2121
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2222
match self {
2323
InverterType::Unspecified => write!(f, "Unspecified"),
24-
InverterType::Solar => write!(f, "Solar"),
24+
InverterType::Pv => write!(f, "Pv"),
2525
InverterType::Battery => write!(f, "Battery"),
2626
InverterType::Hybrid => write!(f, "Hybrid"),
2727
}
@@ -74,27 +74,31 @@ impl Display for EvChargerType {
7474
#[derive(Clone, Copy, Debug, PartialEq)]
7575
pub enum ComponentCategory {
7676
Unspecified,
77-
Grid,
77+
GridConnectionPoint,
7878
Meter,
79-
Battery(BatteryType),
8079
Inverter(InverterType),
81-
EvCharger(EvChargerType),
8280
Converter,
83-
CryptoMiner,
84-
Electrolyzer,
85-
Chp,
81+
Battery(BatteryType),
82+
EvCharger(EvChargerType),
83+
Breaker,
8684
Precharger,
87-
Fuse,
88-
VoltageTransformer,
85+
Chp,
86+
Electrolyzer,
87+
PowerTransformer,
8988
Hvac,
90-
Relay,
89+
Plc,
90+
CryptoMiner,
91+
StaticTransferSwitch,
92+
UninterruptiblePowerSupply,
93+
CapacitorBank,
94+
WindTurbine,
9195
}
9296

9397
impl Display for ComponentCategory {
9498
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
9599
match self {
96100
ComponentCategory::Unspecified => write!(f, "Unspecified"),
97-
ComponentCategory::Grid => write!(f, "Grid"),
101+
ComponentCategory::GridConnectionPoint => write!(f, "GridConnectionPoint"),
98102
ComponentCategory::Meter => write!(f, "Meter"),
99103
ComponentCategory::Battery(battery_type) => write!(f, "Battery({battery_type})"),
100104
ComponentCategory::Inverter(inverter_type) => write!(f, "{inverter_type}Inverter"),
@@ -106,10 +110,16 @@ impl Display for ComponentCategory {
106110
ComponentCategory::Electrolyzer => write!(f, "Electrolyzer"),
107111
ComponentCategory::Chp => write!(f, "CHP"),
108112
ComponentCategory::Precharger => write!(f, "Precharger"),
109-
ComponentCategory::Fuse => write!(f, "Fuse"),
110-
ComponentCategory::VoltageTransformer => write!(f, "VoltageTransformer"),
111113
ComponentCategory::Hvac => write!(f, "HVAC"),
112-
ComponentCategory::Relay => write!(f, "Relay"),
114+
ComponentCategory::Breaker => write!(f, "Breaker"),
115+
ComponentCategory::PowerTransformer => write!(f, "PowerTransformer"),
116+
ComponentCategory::Plc => write!(f, "PLC"),
117+
ComponentCategory::StaticTransferSwitch => write!(f, "StaticTransferSwitch"),
118+
ComponentCategory::UninterruptiblePowerSupply => {
119+
write!(f, "UninterruptiblePowerSupply")
120+
}
121+
ComponentCategory::CapacitorBank => write!(f, "CapacitorBank"),
122+
ComponentCategory::WindTurbine => write!(f, "WindTurbine"),
113123
}
114124
}
115125
}
@@ -121,7 +131,7 @@ pub(crate) trait CategoryPredicates: Node {
121131
}
122132

123133
fn is_grid(&self) -> bool {
124-
self.category() == ComponentCategory::Grid
134+
self.category() == ComponentCategory::GridConnectionPoint
125135
}
126136

127137
fn is_meter(&self) -> bool {
@@ -147,7 +157,7 @@ pub(crate) trait CategoryPredicates: Node {
147157
}
148158

149159
fn is_pv_inverter(&self) -> bool {
150-
self.category() == ComponentCategory::Inverter(InverterType::Solar)
160+
self.category() == ComponentCategory::Inverter(InverterType::Pv)
151161
}
152162

153163
fn is_hybrid_inverter(&self) -> bool {

src/graph/creation.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ mod tests {
185185
.unwrap()
186186
.is_battery_inverter(&unspec_inv_config));
187187
builder.pop_connection();
188-
builder.add_component(ComponentCategory::Grid);
188+
builder.add_component(ComponentCategory::GridConnectionPoint);
189189
assert!(builder
190190
.build(None)
191191
.is_err_and(|e| e == Error::invalid_graph("Multiple grid components found.")));

src/graph/meter_roles.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ mod tests {
9999

100100
fn nodes_and_edges() -> (Vec<TestComponent>, Vec<TestConnection>) {
101101
let components = vec![
102-
TestComponent::new(1, ComponentCategory::Grid),
102+
TestComponent::new(1, ComponentCategory::GridConnectionPoint),
103103
TestComponent::new(2, ComponentCategory::Meter),
104104
TestComponent::new(3, ComponentCategory::Meter),
105105
TestComponent::new(4, ComponentCategory::Inverter(InverterType::Battery)),
@@ -108,13 +108,13 @@ mod tests {
108108
TestComponent::new(7, ComponentCategory::Inverter(InverterType::Battery)),
109109
TestComponent::new(8, ComponentCategory::Battery(BatteryType::Unspecified)),
110110
TestComponent::new(9, ComponentCategory::Meter),
111-
TestComponent::new(10, ComponentCategory::Inverter(InverterType::Solar)),
112-
TestComponent::new(11, ComponentCategory::Inverter(InverterType::Solar)),
111+
TestComponent::new(10, ComponentCategory::Inverter(InverterType::Pv)),
112+
TestComponent::new(11, ComponentCategory::Inverter(InverterType::Pv)),
113113
TestComponent::new(12, ComponentCategory::Meter),
114114
TestComponent::new(13, ComponentCategory::Chp),
115115
TestComponent::new(14, ComponentCategory::Meter),
116116
TestComponent::new(15, ComponentCategory::Chp),
117-
TestComponent::new(16, ComponentCategory::Inverter(InverterType::Solar)),
117+
TestComponent::new(16, ComponentCategory::Inverter(InverterType::Pv)),
118118
TestComponent::new(17, ComponentCategory::Inverter(InverterType::Battery)),
119119
TestComponent::new(18, ComponentCategory::Battery(BatteryType::LiIon)),
120120
];
@@ -177,7 +177,7 @@ mod tests {
177177
components.push(TestComponent::new(24, ComponentCategory::Meter));
178178
components.push(TestComponent::new(
179179
25,
180-
ComponentCategory::Inverter(InverterType::Solar),
180+
ComponentCategory::Inverter(InverterType::Pv),
181181
));
182182
connections.push(TestConnection::new(20, 24));
183183
connections.push(TestConnection::new(24, 25));

src/graph/retrieval.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ mod tests {
157157
fn nodes_and_edges() -> (Vec<TestComponent>, Vec<TestConnection>) {
158158
let components = vec![
159159
TestComponent::new(6, ComponentCategory::Meter),
160-
TestComponent::new(1, ComponentCategory::Grid),
160+
TestComponent::new(1, ComponentCategory::GridConnectionPoint),
161161
TestComponent::new(7, ComponentCategory::Inverter(InverterType::Battery)),
162162
TestComponent::new(3, ComponentCategory::Meter),
163163
TestComponent::new(5, ComponentCategory::Battery(BatteryType::Unspecified)),
@@ -186,7 +186,10 @@ mod tests {
186186

187187
assert_eq!(
188188
graph.component(1),
189-
Ok(&TestComponent::new(1, ComponentCategory::Grid))
189+
Ok(&TestComponent::new(
190+
1,
191+
ComponentCategory::GridConnectionPoint
192+
))
190193
);
191194
assert_eq!(
192195
graph.component(5),

src/graph/test_utils.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ impl ComponentGraphBuilder {
117117

118118
/// Adds a grid component to the graph and returns its handle.
119119
pub(super) fn grid(&mut self) -> ComponentHandle {
120-
self.add_component(ComponentCategory::Grid)
120+
self.add_component(ComponentCategory::GridConnectionPoint)
121121
}
122122

123123
/// Adds a meter to the graph and returns its handle.
@@ -137,7 +137,7 @@ impl ComponentGraphBuilder {
137137

138138
/// Adds a solar inverter to the graph and returns its handle.
139139
pub(super) fn solar_inverter(&mut self) -> ComponentHandle {
140-
self.add_component(ComponentCategory::Inverter(InverterType::Solar))
140+
self.add_component(ComponentCategory::Inverter(InverterType::Pv))
141141
}
142142

143143
/// Adds an EV charger to the graph and returns its handle.

src/graph/validation/validate_graph.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,9 +91,9 @@ mod tests {
9191
fn nodes_and_edges() -> (Vec<TestComponent>, Vec<TestConnection>) {
9292
let components = vec![
9393
TestComponent::new(6, ComponentCategory::Meter),
94-
TestComponent::new(1, ComponentCategory::Grid),
94+
TestComponent::new(1, ComponentCategory::GridConnectionPoint),
9595
TestComponent::new(7, ComponentCategory::Inverter(InverterType::Battery)),
96-
TestComponent::new(10, ComponentCategory::Inverter(InverterType::Solar)),
96+
TestComponent::new(10, ComponentCategory::Inverter(InverterType::Pv)),
9797
TestComponent::new(3, ComponentCategory::Meter),
9898
TestComponent::new(5, ComponentCategory::Battery(BatteryType::Unspecified)),
9999
TestComponent::new(8, ComponentCategory::Battery(BatteryType::Unspecified)),

src/graph/validation/validate_neighbors.rs

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ where
7272
self.ensure_not_leaf(inverter)?;
7373
self.ensure_on_successors(inverter, |n| n.is_battery(), "Batteries")?;
7474
}
75-
InverterType::Solar => {
75+
InverterType::Pv => {
7676
self.ensure_leaf(inverter)?;
7777
}
7878
InverterType::Hybrid => {
@@ -161,22 +161,25 @@ mod tests {
161161
fn test_validate_root() {
162162
let config = ComponentGraphConfig::default();
163163
let components = vec![
164-
TestComponent::new(1, ComponentCategory::Grid),
164+
TestComponent::new(1, ComponentCategory::GridConnectionPoint),
165165
TestComponent::new(2, ComponentCategory::Meter),
166166
];
167167
let connections = vec![TestConnection::new(1, 2)];
168168
assert!(ComponentGraph::try_new(components, connections, config.clone()).is_ok());
169169

170-
let components = vec![TestComponent::new(1, ComponentCategory::Grid)];
170+
let components = vec![TestComponent::new(
171+
1,
172+
ComponentCategory::GridConnectionPoint,
173+
)];
171174
let connections: Vec<TestConnection> = vec![];
172175
assert!(
173176
ComponentGraph::try_new(components, connections, config.clone()).is_err_and(|e| {
174-
e == Error::invalid_graph("Grid:1 must have at least one successor.")
177+
e == Error::invalid_graph("GridConnectionPoint:1 must have at least one successor.")
175178
}),
176179
);
177180

178181
let components = vec![
179-
TestComponent::new(1, ComponentCategory::Grid),
182+
TestComponent::new(1, ComponentCategory::GridConnectionPoint),
180183
TestComponent::new(2, ComponentCategory::Meter),
181184
TestComponent::new(3, ComponentCategory::Meter),
182185
];
@@ -188,9 +191,10 @@ mod tests {
188191

189192
assert!(
190193
ComponentGraph::try_new(components, connections, config.clone()).is_err_and(|e| {
191-
e == Error::invalid_graph(
192-
"Grid:1 can't have successors with multiple predecessors. Found Meter:3.",
193-
)
194+
e == Error::invalid_graph(concat!(
195+
"GridConnectionPoint:1 can't have successors with ",
196+
"multiple predecessors. Found Meter:3."
197+
))
194198
}),
195199
);
196200
}
@@ -199,7 +203,7 @@ mod tests {
199203
fn test_validate_meter() {
200204
let config = ComponentGraphConfig::default();
201205
let components = vec![
202-
TestComponent::new(1, ComponentCategory::Grid),
206+
TestComponent::new(1, ComponentCategory::GridConnectionPoint),
203207
TestComponent::new(2, ComponentCategory::Meter),
204208
TestComponent::new(3, ComponentCategory::Battery(BatteryType::LiIon)),
205209
];
@@ -217,7 +221,7 @@ r#"InvalidGraph: Multiple validation failures:
217221
fn test_validate_battery_inverter() {
218222
let config = ComponentGraphConfig::default();
219223
let mut components = vec![
220-
TestComponent::new(1, ComponentCategory::Grid),
224+
TestComponent::new(1, ComponentCategory::GridConnectionPoint),
221225
TestComponent::new(2, ComponentCategory::Meter),
222226
TestComponent::new(3, ComponentCategory::Inverter(InverterType::Battery)),
223227
TestComponent::new(4, ComponentCategory::Electrolyzer),
@@ -265,9 +269,9 @@ r#"InvalidGraph: Multiple validation failures:
265269
fn test_validate_pv_inverter() {
266270
let config = ComponentGraphConfig::default();
267271
let mut components = vec![
268-
TestComponent::new(1, ComponentCategory::Grid),
272+
TestComponent::new(1, ComponentCategory::GridConnectionPoint),
269273
TestComponent::new(2, ComponentCategory::Meter),
270-
TestComponent::new(3, ComponentCategory::Inverter(InverterType::Solar)),
274+
TestComponent::new(3, ComponentCategory::Inverter(InverterType::Pv)),
271275
TestComponent::new(4, ComponentCategory::Electrolyzer),
272276
];
273277
let mut connections = vec![
@@ -280,7 +284,7 @@ r#"InvalidGraph: Multiple validation failures:
280284
ComponentGraph::try_new(components.clone(), connections.clone(), config.clone())
281285
.is_err_and(|e| {
282286
e == Error::invalid_graph(
283-
"SolarInverter:3 can't have any successors. Found Electrolyzer:4.",
287+
"PvInverter:3 can't have any successors. Found Electrolyzer:4.",
284288
)
285289
}),
286290
);
@@ -305,7 +309,7 @@ r#"InvalidGraph: Multiple validation failures:
305309
fn test_validate_hybrid_inverter() {
306310
let config = ComponentGraphConfig::default();
307311
let mut components = vec![
308-
TestComponent::new(1, ComponentCategory::Grid),
312+
TestComponent::new(1, ComponentCategory::GridConnectionPoint),
309313
TestComponent::new(2, ComponentCategory::Meter),
310314
TestComponent::new(3, ComponentCategory::Inverter(InverterType::Hybrid)),
311315
TestComponent::new(4, ComponentCategory::Electrolyzer),
@@ -346,7 +350,7 @@ r#"InvalidGraph: Multiple validation failures:
346350
fn test_validate_batteries() {
347351
let config = ComponentGraphConfig::default();
348352
let mut components = vec![
349-
TestComponent::new(1, ComponentCategory::Grid),
353+
TestComponent::new(1, ComponentCategory::GridConnectionPoint),
350354
TestComponent::new(2, ComponentCategory::Meter),
351355
TestComponent::new(3, ComponentCategory::Inverter(InverterType::Battery)),
352356
TestComponent::new(4, ComponentCategory::Battery(BatteryType::NaIon)),
@@ -393,7 +397,7 @@ r#"InvalidGraph: Multiple validation failures:
393397
);
394398

395399
let components = vec![
396-
TestComponent::new(1, ComponentCategory::Grid),
400+
TestComponent::new(1, ComponentCategory::GridConnectionPoint),
397401
TestComponent::new(2, ComponentCategory::Battery(BatteryType::LiIon)),
398402
];
399403
let connections = vec![TestConnection::new(1, 2)];
@@ -402,7 +406,7 @@ r#"InvalidGraph: Multiple validation failures:
402406
ComponentGraph::try_new(components, connections, config.clone()).is_err_and(|e| {
403407
e == Error::invalid_graph(concat!(
404408
"Battery(LiIon):2 can only have predecessors that are ",
405-
"BatteryInverters or HybridInverters. Found Grid:1."
409+
"BatteryInverters or HybridInverters. Found GridConnectionPoint:1."
406410
))
407411
}),
408412
);
@@ -412,7 +416,7 @@ r#"InvalidGraph: Multiple validation failures:
412416
fn test_validate_ev_chargers() {
413417
let config = ComponentGraphConfig::default();
414418
let mut components = vec![
415-
TestComponent::new(1, ComponentCategory::Grid),
419+
TestComponent::new(1, ComponentCategory::GridConnectionPoint),
416420
TestComponent::new(2, ComponentCategory::Meter),
417421
TestComponent::new(3, ComponentCategory::EvCharger(EvChargerType::Dc)),
418422
TestComponent::new(4, ComponentCategory::Electrolyzer),
@@ -441,7 +445,7 @@ r#"InvalidGraph: Multiple validation failures:
441445
fn test_validate_chps() {
442446
let config = ComponentGraphConfig::default();
443447
let mut components = vec![
444-
TestComponent::new(1, ComponentCategory::Grid),
448+
TestComponent::new(1, ComponentCategory::GridConnectionPoint),
445449
TestComponent::new(2, ComponentCategory::Meter),
446450
TestComponent::new(3, ComponentCategory::Chp),
447451
TestComponent::new(4, ComponentCategory::Electrolyzer),

0 commit comments

Comments
 (0)