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

Add display trait for OpticPorts

parent d5895a03
No related branches found
No related tags found
No related merge requests found
use crate::error::OpossumError; use crate::error::OpossumError;
use std::collections::HashSet; use std::{collections::HashSet, fmt::Display};
/// Structure defining the optical ports (input / output terminals) of an [`OpticNode`](crate::optic_node::OpticNode). /// Structure defining the optical ports (input / output terminals) of an [`OpticNode`](crate::optic_node::OpticNode).
#[derive(Default, Debug, Clone)] #[derive(Default, Debug, Clone)]
...@@ -57,6 +57,34 @@ impl OpticPorts { ...@@ -57,6 +57,34 @@ impl OpticPorts {
} }
} }
impl Display for OpticPorts {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
writeln!(f, "inputs:").unwrap();
if !&self.inputs.is_empty() {
let mut ports=self.inputs();
ports.sort();
for port in ports {
writeln!(f, " <{}>", port).unwrap();
}
} else {
writeln!(f, " None").unwrap();
}
writeln!(f, "output:").unwrap();
if !&self.outputs.is_empty() {
let mut ports=self.outputs();
ports.sort();
for port in ports {
writeln!(f, " <{}>", port).unwrap();
}
} else {
writeln!(f, " None").unwrap();
}
if self.inverted {
writeln!(f, "ports are inverted").unwrap();
}
Ok(())
}
}
#[cfg(test)] #[cfg(test)]
mod test { mod test {
use crate::optic_ports::OpticPorts; use crate::optic_ports::OpticPorts;
...@@ -151,4 +179,28 @@ mod test { ...@@ -151,4 +179,28 @@ mod test {
ports.set_inverted(true); ports.set_inverted(true);
assert_eq!(ports.inverted(), true); assert_eq!(ports.inverted(), true);
} }
#[test]
fn display_empty() {
let ports = OpticPorts::new();
assert_eq!(ports.to_string(), "inputs:\n None\noutput:\n None\n".to_owned());
}
#[test]
fn display_entries() {
let mut ports = OpticPorts::new();
ports.add_input("test1").unwrap();
ports.add_input("test2").unwrap();
ports.add_output("test3").unwrap();
ports.add_output("test4").unwrap();
assert_eq!(ports.to_string(), "inputs:\n <test1>\n <test2>\noutput:\n <test3>\n <test4>\n".to_owned());
}
#[test]
fn display_entries_inverted() {
let mut ports = OpticPorts::new();
ports.add_input("test1").unwrap();
ports.add_input("test2").unwrap();
ports.add_output("test3").unwrap();
ports.add_output("test4").unwrap();
ports.set_inverted(true);
assert_eq!(ports.to_string(), "inputs:\n <test3>\n <test4>\noutput:\n <test1>\n <test2>\nports are inverted\n".to_owned());
}
} }
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