Skip to content
Snippets Groups Projects
Commit f5a91e38 authored by Udo Eisenbarth's avatar Udo Eisenbarth :speech_balloon:
Browse files

Improve OpossumError

connect_nodes correctly sets the ports in Light structure.
Further checks necessary.
parent d9c77b2f
No related branches found
No related tags found
No related merge requests found
...@@ -12,16 +12,22 @@ impl Display for OpossumError { ...@@ -12,16 +12,22 @@ impl Display for OpossumError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self { match self {
OpossumError::OpticScenery(m) => { OpossumError::OpticScenery(m) => {
f.write_fmt(format_args!("Opossum Error::OpticScenery::{}", m)) write!(f, "Opossum Error::OpticScenery::{}", m)
} }
OpossumError::OpticGroup(m) => { OpossumError::OpticGroup(m) => {
f.write_fmt(format_args!("Opossum Error::OpticGroup::{}", m)) write!(f, "Opossum Error::OpticGroup::{}", m)
} }
OpossumError::OpticPort(m) => { OpossumError::OpticPort(m) => {
f.write_fmt(format_args!("Opossum Error::OpticPort::{}", m)) write!(f, "Opossum Error::OpticPort::{}", m)
} }
OpossumError::Other(m) => f.write_fmt(format_args!("Opossum Error::Other::{}", m)), OpossumError::Other(m) => write!(f, "Opossum Error::Other::{}", m),
} }
} }
} }
impl Error for OpossumError {} impl Error for OpossumError {}
impl std::convert::From<String> for OpossumError {
fn from(msg: String) -> Self {
Self::Other(msg)
}
}
\ No newline at end of file
...@@ -56,12 +56,12 @@ impl OpticScenery { ...@@ -56,12 +56,12 @@ impl OpticScenery {
target_port: &str, target_port: &str,
) -> Result<EdgeIndex> { ) -> Result<EdgeIndex> {
if let Some(source) = self.g.node_weight(src_node) { if let Some(source) = self.g.node_weight(src_node) {
if source.ports().outputs().contains(&src_port.into()) { if !source.ports().outputs().contains(&src_port.into()) {
return Err(OpossumError::OpticScenery(format!(
} else { "source node {} does not have a port {}",
return Err(OpossumError::OpticScenery( source.name(),
format!("source node {} does not have a port {}", source.name(), src_port), src_port
)); )));
} }
} else { } else {
return Err(OpossumError::OpticScenery( return Err(OpossumError::OpticScenery(
...@@ -69,19 +69,21 @@ impl OpticScenery { ...@@ -69,19 +69,21 @@ impl OpticScenery {
)); ));
} }
if let Some(target) = self.g.node_weight(target_node) { if let Some(target) = self.g.node_weight(target_node) {
if target.ports().inputs().contains(&target_port.into()) { if !target.ports().inputs().contains(&target_port.into()) {
return Err(OpossumError::OpticScenery(format!(
} else { "target node {} does not have a port {}",
return Err(OpossumError::OpticScenery( target.name(),
format!("target node {} does not have a port {}", target.name(), target_port), target_port
)); )));
} }
} else { } else {
return Err(OpossumError::OpticScenery( return Err(OpossumError::OpticScenery(
"target node with given index does not exist".into(), "target node with given index does not exist".into(),
)); ));
} }
let edge_index = self.g.add_edge(src_node, target_node, Light::new("", "")); // TODO: Check if src_node,src_port combination already exists in the graph
// TODO: Checl if target_not/target_port combination already exists in the graph
let edge_index = self.g.add_edge(src_node, target_node, Light::new(src_port, target_port));
if is_cyclic_directed(&self.g) { if is_cyclic_directed(&self.g) {
self.g.remove_edge(edge_index); self.g.remove_edge(edge_index);
return Err(OpossumError::OpticScenery( return Err(OpossumError::OpticScenery(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment